Cameras
Devices, device groups and recorded video.
Every path on this page is plugin-scoped: {pluginInstalledId} is the id of the module instance you are talking to, from Plugins. A deployment can run more than one instance of the same module, and the id is what tells them apart.
30 endpoints. Every one needs Authorization: Bearer <access token>; see
Getting Started.
The server authorises every call against the signed-in user's permission keys — the same keys the client is held to. For this module they are the Device*, DeviceGroup* and ExportServer* key families. See the Permission Keys reference.
Device groups
| Method | Path | What it does |
|---|---|---|
GET | witness/plugins/{pluginInstalledId}/device-groups | Gets a list of all the DeviceGroups from the server |
POST | witness/plugins/{pluginInstalledId}/device-groups | Device group create |
PUT | witness/plugins/{pluginInstalledId}/device-groups | Device group save |
DELETE | witness/plugins/{pluginInstalledId}/device-groups/{deviceGroupID} | Device group delete |
GET | witness/plugins/{pluginInstalledId}/device-groups/{deviceGroupID} | Device group get |
GET | witness/plugins/{pluginInstalledId}/device-groups/{deviceGroupID}/settings | Device group settings get all |
POST | witness/plugins/{pluginInstalledId}/device-groups/associations | Device group add associations |
POST | witness/plugins/{pluginInstalledId}/device-groups/associations/delete | Device group remove associations |
PUT | witness/plugins/{pluginInstalledId}/device-groups/settings | Device group setting save list |
POST | witness/plugins/{pluginInstalledId}/device-groups/settings/delete | Device group setting delete list |
POST witness/plugins/{pluginInstalledId}/device-groups
Device group create.
| Parameter | In | Required | Type |
|---|---|---|---|
deviceGroupName | query | no | string |
deviceGroupDescription | query | no | string |
Payload
Response
{
"associatedDeviceIDs": [
"3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
],
"deviceGroupSettings": [
{
"deviceGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"settingValueBool": true,
"settingValueFloat": 125.5,
"settingValueString": "string"
}
],
"deviceGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"deviceGroupDescription": "Example description",
"deviceGroupName": "Example",
"parentDeviceGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginInstanceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
PUT witness/plugins/{pluginInstalledId}/device-groups
Device group save.
Payload
Request body
{
"associatedDeviceIDs": [
"3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
],
"deviceGroupSettings": [
{
"deviceGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"settingValueBool": true,
"settingValueFloat": 125.5,
"settingValueString": "string"
}
],
"deviceGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"deviceGroupDescription": "Example description",
"deviceGroupName": "Example",
"parentDeviceGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginInstanceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
Response
{
"associatedDeviceIDs": [
"3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
],
"deviceGroupSettings": [
{
"deviceGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"settingValueBool": true,
"settingValueFloat": 125.5,
"settingValueString": "string"
}
],
"deviceGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"deviceGroupDescription": "Example description",
"deviceGroupName": "Example",
"parentDeviceGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginInstanceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
POST witness/plugins/{pluginInstalledId}/device-groups/associations
Device group add associations.
Payload
Request body
[
{
"deviceGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"deviceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
]
POST witness/plugins/{pluginInstalledId}/device-groups/associations/delete
Device group remove associations.
Payload
Request body
[
{
"deviceGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"deviceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
]
PUT witness/plugins/{pluginInstalledId}/device-groups/settings
Device group setting save list.
Payload
Request body
[
{
"deviceGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"settingValueBool": true,
"settingValueFloat": 125.5,
"settingValueString": "string"
}
]
Response
[
{
"deviceGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"settingValueBool": true,
"settingValueFloat": 125.5,
"settingValueString": "string"
}
]
POST witness/plugins/{pluginInstalledId}/device-groups/settings/delete
Device group setting delete list.
Payload
Request body
[
{
"deviceGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"settingValueBool": true,
"settingValueFloat": 125.5,
"settingValueString": "string"
}
]
Devices
| Method | Path | What it does |
|---|---|---|
GET | witness/plugins/{pluginInstalledId}/devices | Devices get all |
PUT | witness/plugins/{pluginInstalledId}/devices | Device save |
GET | witness/plugins/{pluginInstalledId}/devices/{deviceId} | Device get |
DELETE | witness/plugins/{pluginInstalledId}/devices/{deviceID} | Device remove |
DELETE | witness/plugins/{pluginInstalledId}/devices/{deviceId}/deny-users/{userId} | Device deny remove user |
PUT | witness/plugins/{pluginInstalledId}/devices/{deviceId}/deny-users/{userId} | Device deny add user |
PUT | witness/plugins/{pluginInstalledId}/devices/attributes | Device attributes save |
PUT | witness/plugins/{pluginInstalledId}/devices/batch | Device batch save |
PUT witness/plugins/{pluginInstalledId}/devices
Device save.
Payload
Request body
{
"deviceAttributes": [
{
"deviceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"boolValue": true,
"doubleValue": 125.5,
"stringValue": "string"
}
],
"isNew": true,
"capabilities": [
42
],
"pluginAssociations": [
{
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
}
],
"pluginEntityItem": {
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
},
"deviceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"dateTimeCreated": "2026-10-02T21:14:05Z",
"dateTimeUpdated": "2026-10-02T21:14:05Z",
"deviceType": "string",
"isDeleted": true,
"isDisabled": true,
"name": "Example",
"pluginInstanceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"timeZone": "string"
}
Response
{
"deviceAttributes": [
{
"deviceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"boolValue": true,
"doubleValue": 125.5,
"stringValue": "string"
}
],
"isNew": true,
"capabilities": [
42
],
"pluginAssociations": [
{
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
}
],
"pluginEntityItem": {
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
},
"deviceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"dateTimeCreated": "2026-10-02T21:14:05Z",
"dateTimeUpdated": "2026-10-02T21:14:05Z",
"deviceType": "string",
"isDeleted": true,
"isDisabled": true,
"name": "Example",
"pluginInstanceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"timeZone": "string"
}
PUT witness/plugins/{pluginInstalledId}/devices/{deviceId}/deny-users/{userId}
Device deny add user.
| Parameter | In | Required | Type |
|---|---|---|---|
deviceId | path | yes | uuid |
userId | path | yes | uuid |
Payload
PUT witness/plugins/{pluginInstalledId}/devices/attributes
Device attributes save.
Payload
Request body
[
{
"deviceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"boolValue": true,
"doubleValue": 125.5,
"stringValue": "string"
}
]
PUT witness/plugins/{pluginInstalledId}/devices/batch
Device batch save.
Payload
Request body
[
{
"deviceAttributes": [
{
"deviceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"boolValue": true,
"doubleValue": 125.5,
"stringValue": "string"
}
],
"isNew": true,
"capabilities": [
42
],
"pluginAssociations": [
{
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
}
],
"pluginEntityItem": {
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
},
"deviceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"dateTimeCreated": "2026-10-02T21:14:05Z",
"dateTimeUpdated": "2026-10-02T21:14:05Z",
"deviceType": "string",
"isDeleted": true,
"isDisabled": true,
"name": "Example",
"pluginInstanceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"timeZone": "string"
}
]
Response
[
{
"deviceAttributes": [
{
"deviceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"boolValue": true,
"doubleValue": 125.5,
"stringValue": "string"
}
],
"isNew": true,
"capabilities": [
42
],
"pluginAssociations": [
{
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
}
],
"pluginEntityItem": {
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
},
"deviceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"dateTimeCreated": "2026-10-02T21:14:05Z",
"dateTimeUpdated": "2026-10-02T21:14:05Z",
"deviceType": "string",
"isDeleted": true,
"isDisabled": true,
"name": "Example",
"pluginInstanceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"timeZone": "string"
}
]
Export servers
| Method | Path | What it does |
|---|---|---|
GET | witness/plugins/{pluginInstalledId}/export-servers | Export server get all |
PUT | witness/plugins/{pluginInstalledId}/export-servers | Export server save |
DELETE | witness/plugins/{pluginInstalledId}/export-servers/{exportServerID} | Export server remove |
GET | witness/plugins/{pluginInstalledId}/export-servers/{exportServerID} | Export server get |
PUT witness/plugins/{pluginInstalledId}/export-servers
Export server save.
Payload
Request body
{
"exportServerID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"ipAddress": "string",
"ipPort": 42,
"name": "Example",
"pluginInstanceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"sslIpPort": 42,
"useSsl": true
}
Response
{
"exportServerID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"ipAddress": "string",
"ipPort": 42,
"name": "Example",
"pluginInstanceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"sslIpPort": 42,
"useSsl": true
}
Instances
| Method | Path | What it does |
|---|---|---|
GET | witness/plugins/{pluginInstalledId}/instances/{pluginInstanceID}/devices | Devices get all by instance id |
Logical group filter add
| Method | Path | What it does |
|---|---|---|
POST | witness/plugins/{pluginInstalledId}/logical-group-filter-add | Logical group filter add |
POST witness/plugins/{pluginInstalledId}/logical-group-filter-add
Logical group filter add.
Payload
Request body
[
{
"filterId": 42,
"logicalGroupId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"referenceId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
]
Logical group filter get all
| Method | Path | What it does |
|---|---|---|
GET | witness/plugins/{pluginInstalledId}/logical-group-filter-get-all | Logical group filter get all |
Logical group filter get all by logical group ids
| Method | Path | What it does |
|---|---|---|
GET | witness/plugins/{pluginInstalledId}/logical-group-filter-get-all-by-logical-group-ids | Logical group filter get all by logical group ids |
Logical group filter remove
| Method | Path | What it does |
|---|---|---|
POST | witness/plugins/{pluginInstalledId}/logical-group-filter-remove | Logical group filter remove |
POST witness/plugins/{pluginInstalledId}/logical-group-filter-remove
Logical group filter remove.
Payload
Request body
[
{
"filterId": 42,
"logicalGroupId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"referenceId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
]
Logical group filter remove by logical group id
| Method | Path | What it does |
|---|---|---|
DELETE | witness/plugins/{pluginInstalledId}/logical-group-filter-remove-by-logical-group-id | Logical group filter remove by logical group id |
Logical group filter remove by reference id
| Method | Path | What it does |
|---|---|---|
DELETE | witness/plugins/{pluginInstalledId}/logical-group-filter-remove-by-reference-id | Logical group filter remove by reference id |
Users
| Method | Path | What it does |
|---|---|---|
GET | witness/plugins/{pluginInstalledId}/users/{userId}/denied-devices | Device deny get by user id |