Update a Product
Token-authenticated. PATCH semantics — only keys present in the
payload are updated. On update variant_countries_attributes is
OPTIONAL (a PATCH may touch a variant’s scalars without resending
its full per-country price matrix). Same nested write contract and
accepts_nested_attributes_for key names as create.
Product gallery writes use product.images_attributes and render as
the ordered gallery response. DAM relationship writes use the
top-level plural dam_asset_codes array and are append-only. The DAM
array is not a gallery replacement and does not remove existing
relationships.
Triggers fresh Lighthouse + compliance scans automatically on every successful PATCH.
Authorizations
Bearer token authentication. Accepts company-admin tokens with
storefront.view for read operations and storefront.update
for writes and scan triggers (legacy per-resource grants like
categories.update / products.view / etc. are still accepted
during the migration), required on every company operation.
Storefront public operations under /api/v202604/{resource} and
/api/v202604/{resource}/{slug} are unauthenticated
(security: []).
Path Parameters
The unique identifier of the product.
Query Parameters
Response locale. ISO code (e.g. fr, de). When omitted,
responds in the company's default locale. On the public
surface, falls back to en for any translated field missing
in the requested locale.
"fr"
ISO-2 country code that selects COUNTRY-RELATIVE Product pricing.
Product-only — Categories and other storefront resources use
filter[country] as an access-list visibility filter instead.
For Products, country drives the pricing block and each
variant's variant_countries: it picks which per-country variant
price and currency are rendered. On the catalog it also drops
products with no active variant in the requested country. When
omitted, falls back to the company's default country.
"GB"
Body
Product scalar and nested-association changes. The nested
dam_asset_code and dam_asset_id create fields are not valid on
update; append DAM relationships with top-level
dam_asset_codes.
DAM asset codes to append as Product relationships. Existing
relationships remain unchanged, and repeated codes do not create
duplicate relationships. This is separate from
product.images_attributes, which writes the ordered gallery.
Response
The updated Product.
Shared success envelope for list / show / create / update
responses: the resource payload is returned alongside a top-level
integer status and meta. Composed onto each resource response
via allOf.
200
Response metadata included on every successful response body.
request_id and timestamp are always present; list endpoints
also add pagination.
Authenticated (company-surface) Product read shape: the public
ProductBase plus admin metadata never rendered on the public
surface: custom_slug and, on detail responses, the ordered
gallery needed to verify product image writes.