Create a component type
const url = 'https://example.com/api/v1/component-types';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"abbrev":"example","default_tags":["example"],"icon":"example","label":"example","label_rule":"example","name":"example","parent_id":"example","stem":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/api/v1/component-types \ --header 'Content-Type: application/json' \ --data '{ "abbrev": "example", "default_tags": [ "example" ], "icon": "example", "label": "example", "label_rule": "example", "name": "example", "parent_id": "example", "stem": "example" }'Creates a custom (non-official) component_type, optionally under a parent. Gated by component_type:create.
Request Body required
Section titled “Request Body required ”object
A URL to the JSON Schema for this object.
A compact form of label; omit to inherit the parent’s
Tags every instance of this type starts with
A glyph key; omit to inherit the parent’s
What an operator reads in pickers and lists
A Go text/template rendering the label of every instance of this type, over a closed map of that component’s facts (Name, Ordinal, TypeName, TypeAbbrev, Stem, ProductName, VendorName, LocationLabel, SystemTypeLabel) and the functions title, upper, lower, slug and words (words turns a kebab or snake name into the words in it, so {{title (words .Name)}} reads north-wing as North Wing). Omit to inherit the parent’s, then the global component rule. A template that does not parse is refused here, 422.
The globally unique name
The parent component_type, by name or uuid; omit for a root type
The auto-generated component name’s prefix; omit to inherit the parent’s. Lowercase letters, digits, and hyphens.
Responses
Section titled “ Responses ”Created
object
A URL to the JSON Schema for this object.
A compact form of label; empty inherits the nearest ancestor’s
Tags every instance of this type (or a descendant that does not override) starts with
True when this shipped row carries changes of yours overriding it. Restore discards them
A glyph key; empty inherits the nearest ancestor’s
The component_type’s uuid, the stable handle that survives a rename
The abbrev this type would take if it stated none: the nearest ancestor’s. Absent when no ancestor states one. Served on the registry listing, on the same terms as resolved_icon
The name of the ancestor component_type inherited_abbrev comes from, which may be further up the chain than the parent
The glyph this type would take if it stated none: the nearest ancestor’s. Absent when no ancestor states one. Served on the registry listing, on the same terms as resolved_icon
The name of the ancestor component_type inherited_icon comes from, which may be further up the chain than the parent
The stem this type would take if it stated none: the nearest ancestor’s. Absent when no ancestor states one. Served on the registry listing, on the same terms as resolved_icon
The name of the ancestor component_type inherited_stem comes from, which may be further up the chain than the parent
The label template instances of this type get; empty inherits the nearest ancestor’s, then the global rule for components
The name an operator reads and types; renameable
True for a row this release ships. A shipped row is never written by an operator: an edit forks it
The parent component_type’s name, for display; absent for a root type
The parent component_type’s id, the canonical handle; absent for a root type
The glyph this type shows: its own icon, else the nearest ancestor’s. Served on the registry listing, where the whole chain is already in hand; a single-row write response does not carry it
The auto-generated component name’s prefix; empty inherits the nearest ancestor’s
Example
{ "$schema": "/api/v1/schemas/ComponentTypeBody.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"}