Skip to content

Reference

Plugins

REST API reference for Plugins: list plugins, manage their state and properties, read their logs and call their endpoints. 23 operations.

Reference10 min read

For the base URL, authentication and errors, see the REST API overview.

GET /users/{user}/plugins/{plugin}{path} ​

  • Request: GET /users/{user}/plugins/
  • Operation: CallPluginEndpoint
  • Operation ID: Plugin_CallPluginEndpointGet
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes
pathpathstringyes

Example request

bash
curl 'https://YOUR_SERVER/users/YOUR_USER/plugins/YOUR_PLUGINYOUR_PATH' \
  -H 'Authorization: Bearer YOUR_TOKEN'

Responses

StatusDescription
200ok
401unauthorized
403forbidden

POST /users/{user}/plugins/{plugin}{path} ​

  • Request: POST /users/{user}/plugins/
  • Operation: CallPluginEndpoint
  • Operation ID: Plugin_CallPluginEndpointPost
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes
pathpathstringyes

Request body (application/json, required)

A JSON object.

Example request (skeleton generated from the schema: required fields only, neutral values)

bash
curl -X POST 'https://YOUR_SERVER/users/YOUR_USER/plugins/YOUR_PLUGINYOUR_PATH' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

StatusDescription
200ok
401unauthorized
403forbidden

PUT /users/{user}/plugins/{plugin}{path} ​

  • Request: PUT /users/{user}/plugins/
  • Operation: CallPluginEndpoint
  • Operation ID: Plugin_CallPluginEndpointPut
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes
pathpathstringyes

Request body (application/json, required)

A JSON object.

Example request (skeleton generated from the schema: required fields only, neutral values)

bash
curl -X PUT 'https://YOUR_SERVER/users/YOUR_USER/plugins/YOUR_PLUGINYOUR_PATH' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

StatusDescription
200ok
401unauthorized
403forbidden

PATCH /users/{user}/plugins/{plugin}{path} ​

  • Request: PATCH /users/{user}/plugins/
  • Operation: CallPluginEndpoint
  • Operation ID: Plugin_CallPluginEndpointPatch
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes
pathpathstringyes

Request body (application/json, required)

A JSON object.

Example request (skeleton generated from the schema: required fields only, neutral values)

bash
curl -X PATCH 'https://YOUR_SERVER/users/YOUR_USER/plugins/YOUR_PLUGINYOUR_PATH' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

StatusDescription
200ok
401unauthorized
403forbidden

DELETE /users/{user}/plugins/{plugin}{path} ​

  • Request: DELETE /users/{user}/plugins/
  • Operation: CallPluginEndpoint
  • Operation ID: Plugin_CallPluginEndpointDelete
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes
pathpathstringyes

Example request

bash
curl -X DELETE 'https://YOUR_SERVER/users/YOUR_USER/plugins/YOUR_PLUGINYOUR_PATH' \
  -H 'Authorization: Bearer YOUR_TOKEN'

Responses

StatusDescription
200ok
401unauthorized
403forbidden

HEAD /users/{user}/plugins/{plugin}{path} ​

  • Request: HEAD /users/{user}/plugins/
  • Operation: CallPluginEndpoint
  • Operation ID: Plugin_CallPluginEndpointHead
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes
pathpathstringyes

Example request

bash
curl --head 'https://YOUR_SERVER/users/YOUR_USER/plugins/YOUR_PLUGINYOUR_PATH' \
  -H 'Authorization: Bearer YOUR_TOKEN'

Responses

StatusDescription
200ok
401unauthorized
403forbidden

OPTIONS /users/{user}/plugins/{plugin}{path} ​

  • Request: OPTIONS /users/{user}/plugins/
  • Operation: CallPluginEndpoint
  • Operation ID: Plugin_CallPluginEndpointOptions
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes
pathpathstringyes

Example request

bash
curl -X OPTIONS 'https://YOUR_SERVER/users/YOUR_USER/plugins/YOUR_PLUGINYOUR_PATH' \
  -H 'Authorization: Bearer YOUR_TOKEN'

Responses

StatusDescription
200ok
401unauthorized
403forbidden

TRACE /users/{user}/plugins/{plugin}{path} ​

  • Request: TRACE /users/{user}/plugins/
  • Operation: CallPluginEndpoint
  • Operation ID: Plugin_CallPluginEndpointTrace
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes
pathpathstringyes

Example request

bash
curl -X TRACE 'https://YOUR_SERVER/users/YOUR_USER/plugins/YOUR_PLUGINYOUR_PATH' \
  -H 'Authorization: Bearer YOUR_TOKEN'

Responses

StatusDescription
200ok
401unauthorized
403forbidden

GET /v1/users/{user}/plugins ​

  • Request: GET /v1/users/{user}/plugins
  • Operation: ListPlugins
  • Operation ID: Plugin_List
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes

Example request

bash
curl 'https://YOUR_SERVER/v1/users/YOUR_USER/plugins' \
  -H 'Authorization: Bearer YOUR_TOKEN'

Responses

StatusDescription
200ok
401unauthorized
403forbidden

GET /v1/users/{user}/plugins/{plugin} ​

  • Request: GET /v1/users/{user}/plugins/
  • Operation: ReadPluginInfo
  • Operation ID: Plugin_ReadInfo
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes

Example request

bash
curl 'https://YOUR_SERVER/v1/users/YOUR_USER/plugins/YOUR_PLUGIN' \
  -H 'Authorization: Bearer YOUR_TOKEN'

Responses

StatusDescription
200ok
401unauthorized
403forbidden

POST /v1/users/{user}/plugins/{plugin} ​

  • Request: POST /v1/users/{user}/plugins/
  • Operation: ManagePluginState
  • Operation ID: Plugin_ManageState
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes

Request body (application/json, required)

A JSON object.

Example request (skeleton generated from the schema: required fields only, neutral values)

bash
curl -X POST 'https://YOUR_SERVER/v1/users/YOUR_USER/plugins/YOUR_PLUGIN' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

StatusDescription
200ok
401unauthorized
403forbidden

GET /v1/users/{user}/plugins/{plugin}/files/{file} ​

  • Request: GET /v1/users/{user}/plugins/{plugin}/files/
  • Operation: ReadPluginFiles
  • Operation ID: Plugin_ReadFiles
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes
filepathstringyes

Example request

bash
curl 'https://YOUR_SERVER/v1/users/YOUR_USER/plugins/YOUR_PLUGIN/files/YOUR_FILE' \
  -H 'Authorization: Bearer YOUR_TOKEN'

Responses

StatusDescription
200ok
401unauthorized
403forbidden

GET /v1/users/{user}/plugins/{plugin}/properties ​

  • Request: GET /v1/users/{user}/plugins/{plugin}/properties
  • Operation: ListPluginProperties
  • Operation ID: Plugin_ListProperties
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes

Example request

bash
curl 'https://YOUR_SERVER/v1/users/YOUR_USER/plugins/YOUR_PLUGIN/properties' \
  -H 'Authorization: Bearer YOUR_TOKEN'

Responses

StatusDescription
200ok
401unauthorized
403forbidden

Response example (200)

json
[
  {
    "created": 1792263090796,
    "description": "Sampling and alert thresholds",
    "modified": 1792263090796,
    "name": "Settings",
    "property": "settings",
    "type": "configuration",
    "value": {
      "alerts": true,
      "interval": 60,
      "max_temperature": 28.5
    }
  },
  {
    "created": 1792263090796,
    "modified": 1792263090796,
    "name": "Location",
    "property": "location",
    "value": {
      "lat": 40.4168,
      "lon": -3.7038
    }
  },
  {
    "created": 1792263090796,
    "modified": 1792263090796,
    "name": "Calibration",
    "perm": {
      "readOnly": [
        "member"
      ]
    },
    "property": "calibration",
    "value": {
      "gain": 1.02,
      "offset": -0.4
    }
  },
  {
    "created": 1792263090796,
    "modified": 1792263090796,
    "name": "Dashboard",
    "property": "dashboard",
    "value": {
      "source": "url",
      "url": "/v1/users/YOUR_USER/storages/fleet_app/files/"
    }
  }
]

POST /v1/users/{user}/plugins/{plugin}/properties ​

  • Request: POST /v1/users/{user}/plugins/{plugin}/properties
  • Operation: CreatePluginProperty
  • Operation ID: Plugin_CreateProperty
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes

Request body (application/json, required)

The body matches one of these 2 variants.

Variant 1

FieldTypeRequiredConstraintsDescription
(body)array of objectno
(body)[].descriptionstringnoMaximum length: 255A brief description of the resource, providing context or additional information, limited to 255 characters.
(body)[].formobjectno
(body)[].form.fieldsanyyes
(body)[].namestringnoMaximum length: 255The name of the resource, limited to 255 characters. It can include any character.
(body)[].permobjectno
(body)[].perm.hiddenarray of stringnoUnique items
(body)[].perm.readOnlyarray of stringnoUnique items
(body)[].propertystringyesPattern: ^[a-zA-Z0-9_-]{1,32}$A unique identifier for resources, consisting of alphanumeric characters, underscores, or hyphens, and limited to 32 characters.
(body)[].typestringnoOne of: ``, configuration
(body)[].valueanyyes

Variant 2: Property Create. Schema for creating a property

Schema for creating a property

FieldTypeRequiredConstraintsDescription
descriptionstringnoMaximum length: 255A brief description of the resource, providing context or additional information, limited to 255 characters.
formobjectno
form.fieldsanyyes
namestringnoMaximum length: 255The name of the resource, limited to 255 characters. It can include any character.
permobjectno
perm.hiddenarray of stringnoUnique items
perm.readOnlyarray of stringnoUnique items
propertystringyesPattern: ^[a-zA-Z0-9_-]{1,32}$A unique identifier for resources, consisting of alphanumeric characters, underscores, or hyphens, and limited to 32 characters.
typestringnoOne of: ``, configuration
valueanyyes

Example request: Configuration value

bash
curl -X POST 'https://YOUR_SERVER/v1/users/YOUR_USER/plugins/YOUR_PLUGIN/properties' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
  "description": "Sampling and alert thresholds",
  "name": "Settings",
  "property": "settings",
  "type": "configuration",
  "value": {
    "alerts": true,
    "interval": 60,
    "max_temperature": 28.5
  }
}'

Example body: Location

json
{
  "name": "Location",
  "property": "location",
  "value": {
    "lat": 40.4168,
    "lon": -3.7038
  }
}

Example body: Read-only for project members

json
{
  "name": "Calibration",
  "perm": {
    "readOnly": [
      "member"
    ]
  },
  "property": "calibration",
  "value": {
    "gain": 1.02,
    "offset": -0.4
  }
}

Example body: Url dashboard of the resource

json
{
  "name": "Dashboard",
  "property": "dashboard",
  "value": {
    "source": "url",
    "url": "/v1/users/YOUR_USER/storages/fleet_app/files/"
  }
}

Responses

StatusDescription
200ok
401unauthorized
403forbidden

GET /v1/users/{user}/plugins/{plugin}/properties/{property} ​

  • Request: GET /v1/users/{user}/plugins/{plugin}/properties/
  • Operation: ReadPluginProperty
  • Operation ID: Plugin_ReadProperty
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes
propertypathstringyes

Example request

bash
curl 'https://YOUR_SERVER/v1/users/YOUR_USER/plugins/YOUR_PLUGIN/properties/YOUR_PROPERTY' \
  -H 'Authorization: Bearer YOUR_TOKEN'

Responses

StatusDescription
200ok
401unauthorized
403forbidden

PUT /v1/users/{user}/plugins/{plugin}/properties/{property} ​

  • Request: PUT /v1/users/{user}/plugins/{plugin}/properties/
  • Operation: UpdatePluginProperty
  • Operation ID: Plugin_UpdateProperty
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes
propertypathstringyes

Request body (application/json, required)

Schema for updating a property

FieldTypeRequiredConstraintsDescription
descriptionstringnoMaximum length: 255A brief description of the resource, providing context or additional information, limited to 255 characters.
formobjectno
form.fieldsanyyes
namestringnoMaximum length: 255The name of the resource, limited to 255 characters. It can include any character.
permobjectno
perm.hiddenarray of stringnoUnique items
perm.readOnlyarray of stringnoUnique items
propertystringnoPattern: ^[a-zA-Z0-9_-]{1,32}$A unique identifier for resources, consisting of alphanumeric characters, underscores, or hyphens, and limited to 32 characters.
typestringnoOne of: ``, configuration
valueanyyes

Example request: Hide from project members

bash
curl -X PUT 'https://YOUR_SERVER/v1/users/YOUR_USER/plugins/YOUR_PLUGIN/properties/YOUR_PROPERTY' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
  "perm": {
    "hidden": [
      "member"
    ]
  },
  "value": "internal note"
}'

Example body: Replace the value

json
{
  "value": {
    "alerts": true,
    "interval": 30,
    "max_temperature": 27
  }
}

Example body: Value, name and description

json
{
  "description": "Faster sampling during commissioning",
  "name": "Settings",
  "value": {
    "alerts": false,
    "interval": 10,
    "max_temperature": 28.5
  }
}

Responses

StatusDescription
200ok
401unauthorized
403forbidden

PATCH /v1/users/{user}/plugins/{plugin}/properties/{property} ​

  • Request: PATCH /v1/users/{user}/plugins/{plugin}/properties/
  • Operation: UpdatePluginProperty
  • Operation ID: Plugin_PatchProperty
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes
propertypathstringyes

Request body (application/json, required)

The body matches one of these 2 variants.

Variant 1

FieldTypeRequiredConstraintsDescription
valueanyyes

Variant 2

FieldTypeRequiredConstraintsDescription
*anyno

Example request: Change some fields of the value

bash
curl -X PATCH 'https://YOUR_SERVER/v1/users/YOUR_USER/plugins/YOUR_PLUGIN/properties/YOUR_PROPERTY' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
  "value": {
    "interval": 30
  }
}'

Example body: Flattened fields

json
{
  "value.alerts": false,
  "value.max_temperature": 27
}

Responses

StatusDescription
200ok
401unauthorized
403forbidden

DELETE /v1/users/{user}/plugins/{plugin}/properties/{property} ​

  • Request: DELETE /v1/users/{user}/plugins/{plugin}/properties/
  • Operation: DeletePluginProperty
  • Operation ID: Plugin_DeleteProperty
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes
propertypathstringyes

Example request

bash
curl -X DELETE 'https://YOUR_SERVER/v1/users/YOUR_USER/plugins/YOUR_PLUGIN/properties/YOUR_PROPERTY' \
  -H 'Authorization: Bearer YOUR_TOKEN'

Responses

StatusDescription
200ok
401unauthorized
403forbidden

GET /v1/users/{user}/plugins/{plugin}/properties/{property}/clone ​

  • Request: GET /v1/users/{user}/plugins/{plugin}/properties/{property}/clone
  • Operation: ClonePluginPropertyConfig
  • Operation ID: Plugin_ClonePropertyConfig
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes
propertypathstringyes

Example request

bash
curl 'https://YOUR_SERVER/v1/users/YOUR_USER/plugins/YOUR_PLUGIN/properties/YOUR_PROPERTY/clone' \
  -H 'Authorization: Bearer YOUR_TOKEN'

Responses

StatusDescription
200ok
401unauthorized
403forbidden

POST /v1/users/{user}/plugins/{plugin}/properties/{property}/clone ​

  • Request: POST /v1/users/{user}/plugins/{plugin}/properties/{property}/clone
  • Operation: ClonePluginProperty
  • Operation ID: Plugin_CloneProperty
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes
propertypathstringyes

Request body (application/json, required)

FieldTypeRequiredConstraintsDescription
descriptionstringnoMaximum length: 255A brief description of the resource, providing context or additional information, limited to 255 characters.
enabledbooleanno
namestringnoMaximum length: 255The name of the resource, limited to 255 characters. It can include any character.
propertystringyesPattern: ^[a-zA-Z0-9_-]{1,32}$A unique identifier for resources, consisting of alphanumeric characters, underscores, or hyphens, and limited to 32 characters.

Example request: Copy with a new id

bash
curl -X POST 'https://YOUR_SERVER/v1/users/YOUR_USER/plugins/YOUR_PLUGIN/properties/YOUR_PROPERTY/clone' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
  "property": "copy_of_property"
}'

Example body: Copy with name and description

json
{
  "description": "Same configuration as the original, for production line 2",
  "name": "Line 2 copy",
  "property": "line_2_property"
}

Responses

StatusDescription
200ok
401unauthorized
403forbidden

GET /v1/users/{user}/plugins/{plugin}/terminal ​

  • Request: GET /v1/users/{user}/plugins/{plugin}/terminal
  • Operation: RunPluginCommand
  • Operation ID: Plugin_RunCommandTerminal
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes

Example request

bash
curl 'https://YOUR_SERVER/v1/users/YOUR_USER/plugins/YOUR_PLUGIN/terminal' \
  -H 'Authorization: Bearer YOUR_TOKEN'

Responses

StatusDescription
200ok
401unauthorized
403forbidden

GET /v1/users/{user}/plugins/{plugin}/terminal/logs ​

  • Request: GET /v1/users/{user}/plugins/{plugin}/terminal/logs
  • Operation: ReadPluginLogs
  • Operation ID: Plugin_ReadLogs
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes

Example request

bash
curl 'https://YOUR_SERVER/v1/users/YOUR_USER/plugins/YOUR_PLUGIN/terminal/logs' \
  -H 'Authorization: Bearer YOUR_TOKEN'

Responses

StatusDescription
200ok
401unauthorized
403forbidden

GET /v1/users/{user}/plugins/{plugin}/terminal/shell ​

  • Request: GET /v1/users/{user}/plugins/{plugin}/terminal/shell
  • Operation: RunPluginShell
  • Operation ID: Plugin_RunShell
  • Authentication: access token, Authorization: Bearer YOUR_TOKEN

Parameters

NameInTypeRequiredDescription
userpathstringyes
pluginpathstringyes

Example request

bash
curl 'https://YOUR_SERVER/v1/users/YOUR_USER/plugins/YOUR_PLUGIN/terminal/shell' \
  -H 'Authorization: Bearer YOUR_TOKEN'

Responses

StatusDescription
200ok
401unauthorized
403forbidden