Update a component
const url = 'https://example.com/api/v1/components/example';const options = { method: 'PATCH', headers: {'Content-Type': 'application/json'}, body: '{"label":"example","product":"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/components/example \ --header 'Content-Type: application/json' \ --data '{ "label": "example", "product": "example" }'Patches a component’s label or product. The name is not patchable: renaming is the :rename custom method. Placement is not patchable either: relocating or re-parenting is the :move custom method, gated separately, because a placement change is an authorization act. Product is required, so it is unchanged when omitted and reclassified when named, but an explicit empty string is refused (422), not a clear. Gated by component:update; read and update scopes drive the 404 versus 403 split.
Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”The component’s name, or a dotted address (e.g. boi.17c.415a.$comp.display-1)
The component’s name, or a dotted address (e.g. boi.17c.415a.$comp.display-1)
Request Body required
Section titled “Request Body required ”object
A URL to the JSON Schema for this object.
A new operator-facing label
Re-classifies the component to this product (catalog SKU), by name or uuid. Required once set: an empty string is refused (422), not a clear. Explicitly-set property values persist; the new product’s contract defaults follow.
Responses
Section titled “ Responses ”OK
object
A URL to the JSON Schema for this object.
The scope-aware actions the caller may perform on this row (create a child, update, delete); a UI hint, the server still enforces.
The resolved effective tags (key -> winning value) that cascade onto this component; for the Tags column. Provenance is in the effective-tags detail view.
object
Whether the platform rendered this label from a label rule rather than an operator typing it. Read-only: write label to claim it, write an empty label to hand it back.
The location’s name, for display
The location’s id, the canonical handle
Whether the platform picked this name (a server-side generator) rather than an operator typing it.
The parent component’s name, for display; absent for a root component
The parent component’s id, the canonical handle
The dotted address (e.g. boi.17c.415a.$comp.display-1): derived from the component’s own placement, never from a system it belongs to. Set on a GET or LIST response; empty on a create/update/move/rename/resetName response (refetch the row to see it).
Path split on ’.’, accessors included, so the round trip through the resolver stays lossless.
The product’s name, for display; the form a body round-trips.
The product (catalog SKU) this component is an instance of, if any; the stable handle that survives a rename.
Two display-only compact forms of path, dash and bare. Neither is accepted back by the resolver: stripping/compacting is lossy.
object
The dash render’s segments concatenated with no separator, with the final stem-ordinal segment compacted to
The path’s non-accessor segments joined with ’-’ (e.g. boi-17c-216b-display-1). Display only; not accepted by the resolver.
Name of the component’s primary system, its default when no system is named. A component may belong to several; read /components/{name}/memberships for all of them.
How many systems this component belongs to; more than one means it is shared.
The primary system’s id, the canonical handle
Example
{ "$schema": "/api/v1/schemas/ComponentBody.json"}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"}