Skip to main content

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.

Permissions

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​

MethodPathWhat it does
GETwitness/plugins/{pluginInstalledId}/device-groupsGets a list of all the DeviceGroups from the server
POSTwitness/plugins/{pluginInstalledId}/device-groupsDevice group create
PUTwitness/plugins/{pluginInstalledId}/device-groupsDevice group save
DELETEwitness/plugins/{pluginInstalledId}/device-groups/{deviceGroupID}Device group delete
GETwitness/plugins/{pluginInstalledId}/device-groups/{deviceGroupID}Device group get
GETwitness/plugins/{pluginInstalledId}/device-groups/{deviceGroupID}/settingsDevice group settings get all
POSTwitness/plugins/{pluginInstalledId}/device-groups/associationsDevice group add associations
POSTwitness/plugins/{pluginInstalledId}/device-groups/associations/deleteDevice group remove associations
PUTwitness/plugins/{pluginInstalledId}/device-groups/settingsDevice group setting save list
POSTwitness/plugins/{pluginInstalledId}/device-groups/settings/deleteDevice group setting delete list

POST witness/plugins/{pluginInstalledId}/device-groups​

Device group create.

ParameterInRequiredType
deviceGroupNamequerynostring
deviceGroupDescriptionquerynostring
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​

MethodPathWhat it does
GETwitness/plugins/{pluginInstalledId}/devicesDevices get all
PUTwitness/plugins/{pluginInstalledId}/devicesDevice save
GETwitness/plugins/{pluginInstalledId}/devices/{deviceId}Device get
DELETEwitness/plugins/{pluginInstalledId}/devices/{deviceID}Device remove
DELETEwitness/plugins/{pluginInstalledId}/devices/{deviceId}/deny-users/{userId}Device deny remove user
PUTwitness/plugins/{pluginInstalledId}/devices/{deviceId}/deny-users/{userId}Device deny add user
PUTwitness/plugins/{pluginInstalledId}/devices/attributesDevice attributes save
PUTwitness/plugins/{pluginInstalledId}/devices/batchDevice 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.

ParameterInRequiredType
deviceIdpathyesuuid
userIdpathyesuuid
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​

MethodPathWhat it does
GETwitness/plugins/{pluginInstalledId}/export-serversExport server get all
PUTwitness/plugins/{pluginInstalledId}/export-serversExport server save
DELETEwitness/plugins/{pluginInstalledId}/export-servers/{exportServerID}Export server remove
GETwitness/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​

MethodPathWhat it does
GETwitness/plugins/{pluginInstalledId}/instances/{pluginInstanceID}/devicesDevices get all by instance id

Logical group filter add​

MethodPathWhat it does
POSTwitness/plugins/{pluginInstalledId}/logical-group-filter-addLogical 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​

MethodPathWhat it does
GETwitness/plugins/{pluginInstalledId}/logical-group-filter-get-allLogical group filter get all

Logical group filter get all by logical group ids​

MethodPathWhat it does
GETwitness/plugins/{pluginInstalledId}/logical-group-filter-get-all-by-logical-group-idsLogical group filter get all by logical group ids

Logical group filter remove​

MethodPathWhat it does
POSTwitness/plugins/{pluginInstalledId}/logical-group-filter-removeLogical 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​

MethodPathWhat it does
DELETEwitness/plugins/{pluginInstalledId}/logical-group-filter-remove-by-logical-group-idLogical group filter remove by logical group id

Logical group filter remove by reference id​

MethodPathWhat it does
DELETEwitness/plugins/{pluginInstalledId}/logical-group-filter-remove-by-reference-idLogical group filter remove by reference id

Users​

MethodPathWhat it does
GETwitness/plugins/{pluginInstalledId}/users/{userId}/denied-devicesDevice deny get by user id