Create a command type
const url = 'https://example.com/api/v1/command-types';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"description":"example","label":"example","name":"example","params_schema":"example","settle_window_seconds":1,"target_metric_type":"example","target_property_type":"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/command-types \ --header 'Content-Type: application/json' \ --data '{ "description": "example", "label": "example", "name": "example", "params_schema": "example", "settle_window_seconds": 1, "target_metric_type": "example", "target_property_type": "example" }'Registers a custom command type (official=false). The name must be a single kebab token; a target, when set, must be a registered property or metric type. Gated by command_type:create.
Request Body required
Section titled “Request Body required ”object
A URL to the JSON Schema for this object.
What the command does
A human label
The command type name (lowercase kebab)
A JSON Schema fragment for the params
The actuation window in seconds: how long the device is given to actuate before a mismatch is a failed command. 0 means settle immediately (a fire-and-forget command, or a settleable one judged at the moment of issue). A duration has no negative, so the schema floors it at 0 rather than accepting a value that behaves as 0 with no refusal to say so.
The metric this command sets, for settlement (at most one target arm)
The property this command sets, for settlement (at most one target arm)
Responses
Section titled “ Responses ”Created
object
A URL to the JSON Schema for this object.
The command type’s uuid, the stable form of name
A JSON Schema fragment for the invocation params
How long the device is given to actuate before a mismatch is a failed command
The metric this command sets (the other arm of the arc; never set together with target_property_type)
The property this command sets (one arm of the exclusive target arc; empty for fire-and-forget or a metric target)
Example
{ "$schema": "/api/v1/schemas/CommandTypeBody.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"}