Update a product
const url = 'https://example.com/api/v1/products/example';const options = { method: 'PATCH', headers: {'Content-Type': 'application/json'}, body: '{"component_type":"example","driver_id":"example","icon":"example","kind":"device","label":"example","label_rule":"example","parent_product_id":"example","vendor_id":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://example.com/api/v1/products/example \ --header 'Content-Type: application/json' \ --data '{ "component_type": "example", "driver_id": "example", "icon": "example", "kind": "device", "label": "example", "label_rule": "example", "parent_product_id": "example", "vendor_id": "example" }'Patches a custom product’s label, vendor, driver, kind, component_type, icon, or parent. component_type is required, so an empty string on it is a 422 (a reclassify names a real type; it never clears). Official products are read-only (422). Gated by product:update.
Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Request Body required
Section titled “Request Body required ”object
A URL to the JSON Schema for this object.
Reclassifies the product to this component_type, by name or uuid; component_type is required, so this only reclassifies, it never clears
A new driver, by handle or uuid
A new icon override
A new product class
A new operator-facing label
A new label template; an empty string clears it, so components fall back to the component_type chain and then the global component rule. Refused with 422 if it does not parse.
A new parent product, by handle or uuid
A new vendor, by handle or uuid
Responses
Section titled “ Responses ”OK
object
A URL to the JSON Schema for this object.
The component_type this product is classified under (mic, camera, …); the taxonomy above product
The component_type’s uuid; the stable form of component_type
The driver’s handle
The driver’s uuid; the stable form of driver
A product-level icon override; unset inherits the component_type’s icon
The product’s uuid, the stable handle that survives a rename
The label template instances of this product get, the most specific tier; unset falls back to the component_type chain, then the global component rule
The name an operator reads and types; renameable
The parent product’s handle
The parent product’s uuid; the stable form of parent_product
The vendor’s handle
The vendor’s uuid; the stable form of vendor
Example
{ "$schema": "/api/v1/schemas/ProductBody.json", "kind": "device"}default
Section titled “default ”Error
object
A URL to the JSON Schema for this object.
A human-readable explanation specific to this occurrence of the problem.
Optional list of individual error details
object
Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’
Error message text
The value at the given location
A URI reference that identifies the specific occurrence of the problem.
HTTP status code
A short, human-readable summary of the problem type. This value should not change between occurrences of the error.
A URI reference to human-readable documentation for the error.
Example
{ "$schema": "/api/v1/schemas/ErrorModel.json", "detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "about:blank"}