## `entity/:id`

Returns the default for the given entity. The `id` specified must be a canonical ID (i.e. an ID of the form controllerID>entityID).

Example: `http://host-ip:8111/api/v1/entity/reactor_system>system`

    {
        "id": "system",
        "canonical_id": "reactor_system>system",
        "controller": "reactor_system",
        "type": "System",
        "name": "Reactor System",
        "lastupdate": 1636051724401,
        "capabilities": {
            "sys_system": {
                "attributes": {
                    "state": {
                        "type": "bool"
                    }
                },
                "actions": {
                    "restart": {}
                }
            },
            "reactor_system": {
                "attributes": {
                    "system_memory_size": {
                        "type": "ui8"
                    },
                    "system_memory_free": {
                        "type": "ui8"
                    },
                    "system_load": {
                        "type": "array",
                        "subtype": "real"
                    },
                    "system_uptime": {
                        "type": "real"
                    },
                    "reactor_uptime": {
                        "type": "real"
                    },
                    "reactor_memory_used": {
                        "type": "ui8"
                    }
                }
            }
        },
        "attributes": {
            "sys_system": {
                "state": true
            },
            "reactor_system": {
                "system_memory_size": 4024152064,
                "system_memory_free": 1937788928,
                "system_load": [0.12, 0.19, 0.17],
                "system_uptime": 2084753,
                "reactor_uptime": 69820,
                "reactor_memory_used": 100483072,
                "platform": "linux",
                "arch": "arm",
                "hostname": "rpi4-1",
                "volume_reactor_logs": [101048824, 114593388, 0.881, "/home/pi/Documents/MSR/logs"],
                "volume_critical_reactor_logs": false,
                "volume_reactor_data": [101048824, 114593388, 0.881, "/home/pi/Documents/MSR/storage"],
                "volume_critical_reactor_data": false,
                "volume_reactor_base": [101048824, 114593388, 0.881, "/home/pi/Documents/MSR"],
                "volume_critical_reactor_base": false
            }
        },
        "actions": ["sys_system.restart"],
        "primary_attribute": "sys_system.state",
        "primary_value": true
    }

## `entity/:id/attribute/:attr`

Return the value of the given attribute (in `attr`) for the entity identifier by `id`. The attribute name must be fully qualified with the capability name.

Example (GET): `curl -o - 'http://host-ip:8111/api/v1/entity/reactor_system>system/attribute/sys_system.state'`

    true

Note that the response above is a valid and complete JSON value (not all JSON starts and ends with `{}`); it is the representation of the value of a primitive data type (number). The response JSON may be an object or array, so more complex than the example shown above, although primitive types are the most common.

## `entity/:id/attribute/:attr/set`

Set the value of an attribute on the named entity.

As an HTTP GET query, the URL must include a `value` parameter and the value to be assigned. The value will be assumed to be a string unless a `type` parameter is also given in the query parameters; valid values for `type` are string, boolean, real, int, i1, i2, i4, ui1, ui2, ui4, and json. If `type` is json, then `value` must contain a valid JSON string. Remember that HTTP GET requests are limited to 1024 bytes for the total length of the URL, so GET is not the best choice for JSON data when the length of the encoded value could be large. The parameter values must, of course, be URL-encoded.

HTTP PUT method is preferred for this API. The request body is expected to be JSON (and therefore the `Content-type` header should be `application/json`). The body is the entire value to be assigned to the attribute. The data type of the body is the data type of the value assigned to the attribute.

Example: (GET): `curl -o - 'http://host-ip:8111/api/v1/entity/vera>device_123/attribute/temperature_sensor.value/set?value=22&type=real'`

Example: (PUT): `curl -o - -X PUT -H 'content-type: application/json' -d '22.0' 'http://host-ip:8111/api/v1/entity/vera>device_123/attribute/temperature_sensor.value/set'`

## `entity/:id/attributes/set`

Set multiple attribute values on an entity at once.

The required method, PUT, must include a JSON body describing an object, each key of which is an attribute name to be set (in `capability.attribute` form), and the values are the new attribute values.

Example: (PUT):

    curl -o - -X PUT -H 'content-type: application/json' \
        -d '{ "temperature_sensor.value": 22.0, "temperature_sensor.units": "C" }' \
        'http://host-ip:8111/api/v1/entity/vera>device_123/attributes/set'

## `entity/:id/perform/:action`

Perform the named `action` on the entity identified by `id`. The `action` must be fully-qualfied with the capability name, and the capability must be supported by the entity.

When the HTTP GET method is used, the URL must contain, as query parameters, all named values required by the action.

HTTP POST may also be used, and in this case, the POST body is expected to be of MIME type `application/json` and contain an object the key/value pairs of which are the parameters required by the action.

Example (GET): `curl -o - 'http://host-ip:8111/api/v1/entity/vera>device_123/perform/power_switch.set?state=1'`

Example (POST): `curl -o - -X POST -H 'content-type: application/json' -d '{ "state": true }' 'http://host-ip:8111/api/v1/entity/vera>device_123/perform/power_switch.set'`

Updated: 2026-Jun-22