Object Analytics
Faces, licence plates, subjects, tags, zones and detections.
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.
140 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 ObjectAnalytics*, FaceRec* and Oa* key families. See the Permission Keys reference.
Aggregate get fields
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/aggregate-get-fields | Aggregate get fields |
Aggregate get numeric fields
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/aggregate-get-numeric-fields | Aggregate get numeric fields |
Aggregate grouping get fields
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/aggregate-grouping-get-fields | Aggregate grouping get fields |
Aggregate grouping get fields2
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/aggregate-grouping-get-fields2 | Aggregate grouping get fields2 |
Aggregate grouping submit query
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/aggregate-grouping-submit-query | Aggregate grouping submit query |
Aggregate grouping summary query
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/aggregate-grouping-summary-query | Aggregate grouping summary query |
Aggregate numeric segments submit query
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/aggregate-numeric-segments-submit-query | Gets all possible numeric aggregated values for the requested aggregate fields, broken up by number of seconds. |
Aggregate numeric submit query
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/aggregate-numeric-submit-query | Gets all possible numeric aggregated values for the requested aggregate fields |
Aggregate report
| Method | Path | What it does |
|---|---|---|
POST | oa/plugins/{pluginInstalledId}/aggregate-report | Aggregate report |
POST oa/plugins/{pluginInstalledId}/aggregate-report
Aggregate report.
Payload
Request body
{
"queryType": "string",
"entities": [
"3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
],
"columnQueries": [
{
"columnName": "Example",
"columnQuery": "string",
"columnQueryTypeId": 42,
"columnQueryId": 42,
"referenceDenominator": true
}
],
"uptoTime": "2026-10-02T21:14:05Z",
"blockMinuteResolution": 42,
"iterations": 42
}
Response
{
"whereParameters": [
"string"
],
"options": [
"string"
],
"uptoTime": "2026-10-02T21:14:05Z",
"blockResolution": 42,
"iterations": 42,
"aggregateReportGroupItems": [
{
"startingTime": "2026-10-02T21:14:05Z",
"endingTime": "2026-10-02T21:14:05Z",
"iteration": 42,
"entities": [
{}
]
}
],
"processingTime": 42,
"columnQueries": [
{
"columnName": "Example",
"columnQuery": "string",
"columnQueryTypeId": 42,
"columnQueryId": 42,
"referenceDenominator": true
}
]
}
Aggregate report2
| Method | Path | What it does |
|---|---|---|
POST | oa/plugins/{pluginInstalledId}/aggregate-report2 | Aggregate report2 |
POST oa/plugins/{pluginInstalledId}/aggregate-report2
Aggregate report2.
Payload
Request body
{
"queryType": "string",
"entities": [
"3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
],
"columnQueries": [
{
"columnName": "Example",
"columnQuery": "string",
"columnQueryTypeId": 42,
"columnQueryId": 42,
"referenceDenominator": true
}
],
"uptoTime": "2026-10-02T21:14:05Z",
"blockMinuteResolution": 42,
"iterations": 42,
"whereParams": [
"string"
],
"options": [
"string"
]
}
Response
{
"whereParameters": [
"string"
],
"options": [
"string"
],
"uptoTime": "2026-10-02T21:14:05Z",
"blockResolution": 42,
"iterations": 42,
"aggregateReportGroupItems": [
{
"startingTime": "2026-10-02T21:14:05Z",
"endingTime": "2026-10-02T21:14:05Z",
"iteration": 42,
"entities": [
{}
]
}
],
"processingTime": 42,
"columnQueries": [
{
"columnName": "Example",
"columnQuery": "string",
"columnQueryTypeId": 42,
"columnQueryId": 42,
"referenceDenominator": true
}
]
}
Aggregate submit query
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/aggregate-submit-query | Aggregate submit query |
Entity attachments
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/entity-attachments | Entity attachment get all |
DELETE | oa/plugins/{pluginInstalledId}/entity-attachments/{publicId} | Entity attachment remove |
PUT | oa/plugins/{pluginInstalledId}/entity-attachments/{publicId} | Entity attachment update |
GET | oa/plugins/{pluginInstalledId}/entity-attachments/limits | Entity attachment limits get |
PUT oa/plugins/{pluginInstalledId}/entity-attachments/{publicId}
Entity attachment update.
| Parameter | In | Required | Type |
|---|---|---|---|
publicId | path | yes | uuid |
Payload
Request body
{
"fileName": "Example",
"description": "Example description"
}
Response
{
"publicId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"ownerType": 1,
"ownerId": 42,
"fileName": "Example",
"description": "Example description",
"mimeType": "string",
"byteSize": 42,
"contentSha256": "string",
"createdByUserId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"updatedByUserId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"createdUtc": "2026-10-02T21:14:05Z",
"updatedUtc": "2026-10-02T21:14:05Z",
"hasPreview": true
}
Expired records
| Method | Path | What it does |
|---|---|---|
DELETE | oa/plugins/{pluginInstalledId}/expired-records | Remove expired records |
Face rec
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/face-rec/server-settings | Face rec server settings get |
Fusion data
| Method | Path | What it does |
|---|---|---|
POST | oa/plugins/{pluginInstalledId}/fusion-data/query | Fusion data view query |
POST oa/plugins/{pluginInstalledId}/fusion-data/query
Fusion data view query.
| Parameter | In | Required | Type |
|---|---|---|---|
oldestTime | query | no | date-time |
newestTime | query | no | date-time |
queryId | query | no | uuid |
maxRecords | query | no | int32 |
page | query | no | int32 |
recordsPerPage | query | no | int32 |
orderBy | query | no | string |
Payload
Request body
[
"string"
]
Response
{
"resultsList": [
{
"dataOwnerId": 42,
"dataTimeStamp": "2026-10-02T21:14:05Z",
"fusionId": 42,
"keyId": 42,
"name": "Example",
"pluginInstalledId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"regionId": 42,
"rowId": 42,
"seconds": 42,
"uniqueId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"valueDec": 125.5,
"utcOffset": 42
}
],
"totalRecordCount": 125.5,
"currentPage": 42,
"recordsPerPage": 42,
"whereParameters": [
"string"
],
"orderBy": "string",
"queryTime": 42,
"queryId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"timeNewest": "2026-10-02T21:14:05Z",
"timeOldest": "2026-10-02T21:14:05Z"
}
Fusion references
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/fusion-references | Fusion reference get all |
Job action delete
| Method | Path | What it does |
|---|---|---|
DELETE | oa/plugins/{pluginInstalledId}/job-action-delete | Job action delete |
Job action execute
| Method | Path | What it does |
|---|---|---|
POST | oa/plugins/{pluginInstalledId}/job-action-execute | Job action execute |
POST oa/plugins/{pluginInstalledId}/job-action-execute
Job action execute.
Payload
Request body
{
"jobActionId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
Job action get all
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/job-action-get-all | Job action get all |
Job action get by id
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/job-action-get-by-id | Job action get by id |
Job action save
| Method | Path | What it does |
|---|---|---|
POST | oa/plugins/{pluginInstalledId}/job-action-save | Job action save |
POST oa/plugins/{pluginInstalledId}/job-action-save
Job action save.
Payload
Request body
{
"utcOffset": 42,
"userJobs": [
{
"jobId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"cronExpression": "string",
"jobActionId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"jobName": "Example",
"jobType": 42,
"pluginInstalledId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"schedulerJobId": "string",
"timeZone": "string",
"userGroupId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"userId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
],
"createdByUserName": "Example",
"jobActionId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"createdBy": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"createdOn": "2026-10-02T21:14:05Z",
"jobActionConfig": "string",
"jobActionType": "string",
"lastUpdatedOn": "2026-10-02T21:14:05Z",
"parentId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"parentType": "string"
}
Response
{
"utcOffset": 42,
"userJobs": [
{
"jobId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"cronExpression": "string",
"jobActionId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"jobName": "Example",
"jobType": 42,
"pluginInstalledId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"schedulerJobId": "string",
"timeZone": "string",
"userGroupId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"userId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
],
"createdByUserName": "Example",
"jobActionId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"createdBy": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"createdOn": "2026-10-02T21:14:05Z",
"jobActionConfig": "string",
"jobActionType": "string",
"lastUpdatedOn": "2026-10-02T21:14:05Z",
"parentId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"parentType": "string"
}
License plate detections
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/license-plate-detections | License plates detected view query |
POST | oa/plugins/{pluginInstalledId}/license-plate-detections | License plates detected insert batch |
POST oa/plugins/{pluginInstalledId}/license-plate-detections
License plates detected insert batch.
Payload
Request body
[
{
"dataTimeStamp": "2026-10-02T21:14:05Z",
"detector": "string",
"images": [
{
"cropSizeId": 42,
"imageData": "BASE64DATA",
"imageTypeId": 42
}
],
"plate": "string",
"timeZone": "string",
"direction": 42,
"make": "string",
"model": "string",
"color": "string",
"state": "string"
}
]
License plate detectors
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/license-plate-detectors | License plate detector get all |
PUT | oa/plugins/{pluginInstalledId}/license-plate-detectors | License plate detector save |
DELETE | oa/plugins/{pluginInstalledId}/license-plate-detectors/{lpDetectorId} | License plate detector remove |
GET | oa/plugins/{pluginInstalledId}/license-plate-detectors/{lpDetectorId} | License plate detector get |
POST | oa/plugins/{pluginInstalledId}/license-plate-detectors/{targetDetectorId}/merge | License plate detectors merge |
PUT oa/plugins/{pluginInstalledId}/license-plate-detectors
License plate detector save.
Payload
Request body
{
"timeZoneString": "string",
"pluginEntityItem": {
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
},
"capabilities": [
42
],
"pluginAssociations": [
{
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
}
],
"lpDetectorId": 42,
"created": "2026-10-02T21:14:05Z",
"dataOwnerId": 42,
"detectorType": "string",
"familiarId": "string",
"familiarName": "Example",
"isDisabled": true,
"timeZone": "string",
"uniqueId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"updated": "2026-10-02T21:14:05Z"
}
Response
{
"timeZoneString": "string",
"pluginEntityItem": {
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
},
"capabilities": [
42
],
"pluginAssociations": [
{
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
}
],
"lpDetectorId": 42,
"created": "2026-10-02T21:14:05Z",
"dataOwnerId": 42,
"detectorType": "string",
"familiarId": "string",
"familiarName": "Example",
"isDisabled": true,
"timeZone": "string",
"uniqueId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"updated": "2026-10-02T21:14:05Z"
}
POST oa/plugins/{pluginInstalledId}/license-plate-detectors/{targetDetectorId}/merge
License plate detectors merge.
| Parameter | In | Required | Type |
|---|---|---|---|
targetDetectorId | path | yes | int32 |
sourceDetectorIds | query | no | array |
Payload
License plate notify tags
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/license-plate-notify-tags | License plate notify tags view query |
GET | oa/plugins/{pluginInstalledId}/license-plate-notify-tags/similar | License plate notify tags similar view query |
License plate tag associations
| Method | Path | What it does |
|---|---|---|
PUT | oa/plugins/{pluginInstalledId}/license-plate-tag-associations | License plate tag association update |
PUT oa/plugins/{pluginInstalledId}/license-plate-tag-associations
License plate tag association update.
Payload
Request body
{
"timeZone": "string",
"lpId": 42,
"subjectTagId": 42,
"created": "2026-10-02T21:14:05Z",
"expires": "2026-10-02T21:14:05Z"
}
Response
{
"timeZone": "string",
"lpId": 42,
"subjectTagId": 42,
"created": "2026-10-02T21:14:05Z",
"expires": "2026-10-02T21:14:05Z"
}
License plates
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/license-plates | License plate get all |
PUT | oa/plugins/{pluginInstalledId}/license-plates | License plate save |
GET | oa/plugins/{pluginInstalledId}/license-plates/{licensePlateId}/tags/{subjectTagId} | License plate tag association get |
DELETE | oa/plugins/{pluginInstalledId}/license-plates/{lpId} | License plate remove |
GET | oa/plugins/{pluginInstalledId}/license-plates/{lpId} | License plate get |
PUT | oa/plugins/{pluginInstalledId}/license-plates/{lpId}/tags/{subjectTagId} | License plate tag associate |
GET | oa/plugins/{pluginInstalledId}/license-plates/query | License plate query |
GET | oa/plugins/{pluginInstalledId}/license-plates/similar | License plate generate similar1 |
GET | oa/plugins/{pluginInstalledId}/license-plates/stats | License plate stats view query |
GET | oa/plugins/{pluginInstalledId}/license-plates/tag-stats | License plate tag stats view query |
PUT oa/plugins/{pluginInstalledId}/license-plates
License plate save.
Payload
Request body
{
"apiVersion": 42,
"subjectTags": [
{
"subjectNotifyOptions": [
{}
],
"apiVersion": 42,
"customTagRemovalRule": {
"removeExpiredTags": true,
"removeExpiredTagsAfterXDays": true,
"removeExpiredTagsAfterDays": 125.5,
"removeDueToInactivityAfterXDays": true,
"removeDueToInactivityDays": 125.5
},
"subjectTagId": 42,
"customRemovalRuleJson": "string",
"dataOwnerId": 42,
"defaultExpireInDays": 125.5,
"isDisabled": true,
"tagInstructions": "string",
"tagName": "Example",
"tagRemoveAction": 42,
"uniqueId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
],
"licensePlateTagsAssoc": [
{
"timeZone": "string",
"lpId": 42,
"subjectTagId": 42,
"created": "2026-10-02T21:14:05Z",
"expires": "2026-10-02T21:14:05Z"
}
],
"lpId": 42,
"created": "2026-10-02T21:14:05Z",
"dataOwnerId": 42,
"notes": "string",
"plate": "string",
"similar1": "string",
"updated": "2026-10-02T21:14:05Z",
"vehicleColor": "string",
"vehicleMake": "string",
"vehicleModel": "string",
"vehicleState": "string"
}
Response
{
"apiVersion": 42,
"subjectTags": [
{
"subjectNotifyOptions": [
{}
],
"apiVersion": 42,
"customTagRemovalRule": {
"removeExpiredTags": true,
"removeExpiredTagsAfterXDays": true,
"removeExpiredTagsAfterDays": 125.5,
"removeDueToInactivityAfterXDays": true,
"removeDueToInactivityDays": 125.5
},
"subjectTagId": 42,
"customRemovalRuleJson": "string",
"dataOwnerId": 42,
"defaultExpireInDays": 125.5,
"isDisabled": true,
"tagInstructions": "string",
"tagName": "Example",
"tagRemoveAction": 42,
"uniqueId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
],
"licensePlateTagsAssoc": [
{
"timeZone": "string",
"lpId": 42,
"subjectTagId": 42,
"created": "2026-10-02T21:14:05Z",
"expires": "2026-10-02T21:14:05Z"
}
],
"lpId": 42,
"created": "2026-10-02T21:14:05Z",
"dataOwnerId": 42,
"notes": "string",
"plate": "string",
"similar1": "string",
"updated": "2026-10-02T21:14:05Z",
"vehicleColor": "string",
"vehicleMake": "string",
"vehicleModel": "string",
"vehicleState": "string"
}
PUT oa/plugins/{pluginInstalledId}/license-plates/{lpId}/tags/{subjectTagId}
License plate tag associate.
| Parameter | In | Required | Type |
|---|---|---|---|
lpId | path | yes | int32 |
subjectTagId | path | yes | int32 |
add | query | no | boolean |
Payload
Logical group filter add
| Method | Path | What it does |
|---|---|---|
POST | oa/plugins/{pluginInstalledId}/logical-group-filter-add | Logical group filter add |
POST oa/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 | oa/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 | oa/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 | oa/plugins/{pluginInstalledId}/logical-group-filter-remove | Logical group filter remove |
POST oa/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 | oa/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 | oa/plugins/{pluginInstalledId}/logical-group-filter-remove-by-reference-id | Logical group filter remove by reference id |
Notify options
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/notify-options | Subject notify options get all |
PUT | oa/plugins/{pluginInstalledId}/notify-options | Subject notify option save |
DELETE | oa/plugins/{pluginInstalledId}/notify-options/{subjectNotifyId} | Subject notify option remove |
PUT oa/plugins/{pluginInstalledId}/notify-options
Subject notify option save.
Payload
Request body
{
"apiVersion": 42,
"associatedDetectorIds": [
42
],
"associatedLprDetectorIds": [
42
],
"subjectNotifyId": 42,
"advancedConfig": "string",
"alertPriority": 42,
"appEmail": "string",
"appPopup": true,
"appSms": "string",
"dataOwnerId": 42,
"debounceSeconds": 42,
"description": "Example description",
"instructions": "string",
"isDisabled": true,
"notifyName": "Example"
}
Response
{
"apiVersion": 42,
"associatedDetectorIds": [
42
],
"associatedLprDetectorIds": [
42
],
"subjectNotifyId": 42,
"advancedConfig": "string",
"alertPriority": 42,
"appEmail": "string",
"appPopup": true,
"appSms": "string",
"dataOwnerId": 42,
"debounceSeconds": 42,
"description": "Example description",
"instructions": "string",
"isDisabled": true,
"notifyName": "Example"
}
Object data
| Method | Path | What it does |
|---|---|---|
POST | oa/plugins/{pluginInstalledId}/object-data | Object data insert batch |
POST | oa/plugins/{pluginInstalledId}/object-data/query | Object data view query |
POST oa/plugins/{pluginInstalledId}/object-data
Object data insert batch.
Payload
Request body
[
{
"regionId": 42,
"objectCount": 3,
"objectIn": 42,
"objectOut": 42,
"dataTimeStamp": "2026-10-02T21:14:05Z"
}
]
POST oa/plugins/{pluginInstalledId}/object-data/query
Object data view query.
| Parameter | In | Required | Type |
|---|---|---|---|
oldestTime | query | no | date-time |
newestTime | query | no | date-time |
queryId | query | no | uuid |
maxRecords | query | no | int32 |
page | query | no | int32 |
recordsPerPage | query | no | int32 |
orderBy | query | no | string |
Payload
Request body
[
"string"
]
Response
{
"resultsList": [
{
"analyticType": "string",
"dataOwnerId": 42,
"dataTimeStamp": "2026-10-02T21:14:05Z",
"name": "Example",
"objectCount": 3,
"objectIn": 42,
"objectOut": 42,
"regionId": 42,
"rowId": 42,
"uniqueId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"utcOffset": 42
}
],
"totalRecordCount": 125.5,
"currentPage": 42,
"recordsPerPage": 42,
"whereParameters": [
"string"
],
"orderBy": "string",
"queryTime": 42,
"queryId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"timeNewest": "2026-10-02T21:14:05Z",
"timeOldest": "2026-10-02T21:14:05Z"
}
Query count query
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/query-count-query | Query count query |
Query get all
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/query-get-all | Query get all |
Query get by id
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/query-get-by-id | Query get by id |
Query remove
| Method | Path | What it does |
|---|---|---|
DELETE | oa/plugins/{pluginInstalledId}/query-remove | Query remove |
Query save
| Method | Path | What it does |
|---|---|---|
POST | oa/plugins/{pluginInstalledId}/query-save | Query save |
POST oa/plugins/{pluginInstalledId}/query-save
Query save.
Payload
Request body
{
"createdByName": "Example",
"queryId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"alertsEnabled": true,
"createdByUserId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"dataOwnerID": 42,
"isDisabled": true,
"isPrivate": true,
"queryData": "string",
"queryDescription": "Example description",
"queryEditorData": "string",
"queryName": "Example",
"queryTypeId": 42,
"viewId": 42
}
Response
{
"createdByName": "Example",
"queryId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"alertsEnabled": true,
"createdByUserId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"dataOwnerID": 42,
"isDisabled": true,
"isPrivate": true,
"queryData": "string",
"queryDescription": "Example description",
"queryEditorData": "string",
"queryName": "Example",
"queryTypeId": 42,
"viewId": 42
}
Query subscription add
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/query-subscription-add | Allow user to add subscription to different BI events |
Query subscription add batch
| Method | Path | What it does |
|---|---|---|
POST | oa/plugins/{pluginInstalledId}/query-subscription-add-batch | Query subscription add batch |
POST oa/plugins/{pluginInstalledId}/query-subscription-add-batch
Query subscription add batch.
Payload
Request body
[
{
"queryId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"entityUniqueId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"userId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
]
Query subscription get all
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/query-subscription-get-all | Allow user to remove subscription |
Query subscription remove
| Method | Path | What it does |
|---|---|---|
DELETE | oa/plugins/{pluginInstalledId}/query-subscription-remove | Query subscription remove |
Query subscription remove batch
| Method | Path | What it does |
|---|---|---|
POST | oa/plugins/{pluginInstalledId}/query-subscription-remove-batch | Query subscription remove batch |
POST oa/plugins/{pluginInstalledId}/query-subscription-remove-batch
Query subscription remove batch.
Payload
Request body
[
{
"queryId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"entityUniqueId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"userId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
]
Region setting lookups
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/region-setting-lookups | Region setting lookup get all |
PUT | oa/plugins/{pluginInstalledId}/region-setting-lookups | Region setting lookup save all |
PUT oa/plugins/{pluginInstalledId}/region-setting-lookups
Region setting lookup save all.
Payload
Request body
[
{
"dataOwnerId": 42,
"systemTypeName": "Example",
"analyticType": "string",
"settingKey": "string",
"settingDescription": "Example description"
}
]
Regions
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/regions | Region get all |
PUT | oa/plugins/{pluginInstalledId}/regions | Region save |
DELETE | oa/plugins/{pluginInstalledId}/regions/{regionId} | Region remove |
GET | oa/plugins/{pluginInstalledId}/regions/{regionId} | Region get by region id |
GET | oa/plugins/{pluginInstalledId}/regions/by-fusion-id/{fusionId} | Region get by fusion id |
PUT oa/plugins/{pluginInstalledId}/regions
Region save.
Payload
Request body
{
"settings": [
{
"regionId": 42,
"keyName": "Example",
"keyValue": "string"
}
],
"pluginEntityItem": {
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
},
"capabilities": [
42
],
"pluginAssociations": [
{
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
}
],
"timeZoneString": "string",
"regionId": 42,
"analyticType": "string",
"dataOwnerId": 42,
"isDisabled": true,
"name": "Example",
"systemTypeName": "Example",
"timeZone": "string",
"uniqueId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
Response
{
"settings": [
{
"regionId": 42,
"keyName": "Example",
"keyValue": "string"
}
],
"pluginEntityItem": {
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
},
"capabilities": [
42
],
"pluginAssociations": [
{
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
}
],
"timeZoneString": "string",
"regionId": 42,
"analyticType": "string",
"dataOwnerId": 42,
"isDisabled": true,
"name": "Example",
"systemTypeName": "Example",
"timeZone": "string",
"uniqueId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
Semantic search
| Method | Path | What it does |
|---|---|---|
POST | oa/plugins/{pluginInstalledId}/semantic-search | Streams similarity-ranked semantic search results (text or image query) from the AI engine. This is a streaming operation: the generated HTTP action returns the enumerable directly and SignalR streams each row. Results are fully open (session-validated, no per-camera filtering) and the call is audit-logged. Pre-stream failures (feature disabled, invalid session, engine unavailable) throw before the first row; mid-stream failures terminate the stream. |
GET | oa/plugins/{pluginInstalledId}/semantic-search/availability | Reports whether semantic search is available for this plugin instance: enable-gate, message-bus configuration, and the active AI model's identity and text-matching capability. |
GET | oa/plugins/{pluginInstalledId}/semantic-search/classifications | Semantic search get classifications |
GET | oa/plugins/{pluginInstalledId}/semantic-search/detectors | Semantic search get detectors |
POST | oa/plugins/{pluginInstalledId}/semantic-search/embed | Semantic search embed |
POST | oa/plugins/{pluginInstalledId}/semantic-search/images/fetch | Fetches a single semantic search result crop by (ImageSource, SourceImageId), using the on-disk resize cache first and the distributed AI image RPC on a miss. |
POST oa/plugins/{pluginInstalledId}/semantic-search
Streams similarity-ranked semantic search results (text or image query) from the AI engine. This is a streaming operation: the generated HTTP action returns the enumerable directly and SignalR streams each row. Results are fully open (session-validated, no per-camera filtering) and the call is audit-logged. Pre-stream failures (feature disabled, invalid session, engine unavailable) throw before the first row; mid-stream failures terminate the stream..
Payload
Request body
{
"queryText": "string",
"queryImage": "BASE64DATA",
"fromUnixMs": 42,
"toUnixMs": 42,
"includeDetectorNames": [
"string"
],
"excludeDetectorNames": [
"string"
],
"minScore": 125.5,
"maxResults": 42,
"includeClassifiers": [
"string"
],
"excludeClassifiers": [
"string"
],
"includeClassifications": [
"string"
],
"imageSources": [
"string"
],
"queryEmbedding": [
125.5
],
"modelContentHash": "string",
"prompts": [
{
"text": "string",
"weight": 125.5,
"isNegative": true
}
]
}
Response
[
{
"imageSource": "string",
"sourceImageId": "string",
"detectorName": "Example",
"capturedAtUnixMs": 42,
"score": 125.5,
"hasLocalImage": true,
"modelName": "Example",
"classification": "string",
"dataKind": "string",
"parentImageId": "string"
}
]
POST oa/plugins/{pluginInstalledId}/semantic-search/embed
Semantic search embed.
Payload
Request body
{
"texts": [
"string"
],
"images": [
"BASE64DATA"
]
}
Response
{
"textEmbeddings": [
{
"index": 42,
"text": "string",
"embedding": [
125.5
]
}
],
"imageEmbeddings": [
{
"index": 42,
"text": "string",
"embedding": [
125.5
]
}
],
"modelName": "Example",
"modelContentHash": "string",
"embeddingDim": 42
}
POST oa/plugins/{pluginInstalledId}/semantic-search/images/fetch
Fetches a single semantic search result crop by (ImageSource, SourceImageId), using the on-disk resize cache first and the distributed AI image RPC on a miss..
Payload
Request body
{
"imageSource": "string",
"sourceImageId": "string",
"maxX": 42,
"maxY": 42,
"compression": 42
}
Response
{
"image": "BASE64DATA",
"imageType": "string",
"notFound": true
}
Subject associated data notify
| Method | Path | What it does |
|---|---|---|
POST | oa/plugins/{pluginInstalledId}/subject-associated-data-notify | Subject associated data notify |
POST oa/plugins/{pluginInstalledId}/subject-associated-data-notify
Subject associated data notify.
Payload
Request body
{
"detectorIds": [
"3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
]
}
Subject detections
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/subject-detections | Subject data view query |
POST | oa/plugins/{pluginInstalledId}/subject-detections | Subjects detected insert batch |
DELETE | oa/plugins/{pluginInstalledId}/subject-detections/{detectId} | Subject detection delete |
POST | oa/plugins/{pluginInstalledId}/subject-detections/close | Subject detections close batch |
GET | oa/plugins/{pluginInstalledId}/subject-detections/demographics | Subject detection demographic view query |
GET | oa/plugins/{pluginInstalledId}/subject-detections/tags | Subject data tag view query |
POST oa/plugins/{pluginInstalledId}/subject-detections
Subjects detected insert batch.
Payload
Request body
[
{
"subject": "string",
"subjectRef": "string",
"device": "string",
"dataTimeStamp": "2026-10-02T21:14:05Z",
"timeZone": "string",
"age": 42,
"gender": "string",
"detectorType": "string",
"confidence": 125.5
}
]
POST oa/plugins/{pluginInstalledId}/subject-detections/close
Subject detections close batch.
Payload
Request body
[
{
"subjectRef": "string",
"lastDetectionUtc": "2026-10-02T21:14:05Z"
}
]
Subject detectors
| Method | Path | What it does |
|---|---|---|
GET | oa/plugins/{pluginInstalledId}/subject-detectors | Subject detectors query |
PUT | oa/plugins/{pluginInstalledId}/subject-detectors | Subject detector save |
DELETE | oa/plugins/{pluginInstalledId}/subject-detectors/{subjectDetectorId} | Subject detector remove |
POST | oa/plugins/{pluginInstalledId}/subject-detectors/{targetDetectorId}/merge | Subject detectors merge |
PUT oa/plugins/{pluginInstalledId}/subject-detectors
Subject detector save.
Payload
Request body
{
"pluginEntityItem": {
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
},
"capabilities": [
42
],
"pluginAssociations": [
{
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
}
],
"timeZoneString": "string",
"detectorId": 42,
"dataOwnerId": 42,
"detectorType": "string",
"familiarId": "string",
"familiarName": "Example",
"isDisabled": true,
"timeZone": "string",
"uniqueId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
Response
{
"pluginEntityItem": {
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
},
"capabilities": [
42
],
"pluginAssociations": [
{
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
}
],
"timeZoneString": "string",
"detectorId": 42,
"dataOwnerId": 42,
"detectorType": "string",
"familiarId": "string",
"familiarName": "Example",
"isDisabled": true,
"timeZone": "string",
"uniqueId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
POST oa/plugins/{pluginInstalledId}/subject-detectors/{targetDetectorId}/merge
Subject detectors merge.
| Parameter | In | Required | Type |
|---|---|---|---|
targetDetectorId | path | yes | int32 |
sourceDetectorIds | query | no | array |
Payload
Subject face enroll additional
| Method | Path | What it does |
|---|---|---|
POST | oa/plugins/{pluginInstalledId}/subject-face-enroll-additional | Subject face enroll additional |
POST oa/plugins/{pluginInstalledId}/subject-face-enroll-additional
Subject face enroll additional.
Payload
Request body
{
"faceId": "string",
"imageBytes": "BASE64DATA",
"minimumSimilarity": 125.5
}
Subject face incorrect match
| Method | Path | What it does |
|---|---|---|
POST | oa/plugins/{pluginInstalledId}/subject-face-incorrect-match | Subject face incorrect match |
POST oa/plugins/{pluginInstalledId}/subject-face-incorrect-match
Subject face incorrect match.
Payload
Request body
{
"faceId": "string",
"detectId": "string"
}
Response
{
"allowNamePartsChanges": true,
"apiVersion": 42,
"subjectAddresses": [
{
"address": {
"addressId": 42,
"addressLine1": "string",
"addressLine2": "string",
"addressLine3": "string",
"country": "string",
"locality": "string",
"postalCode": "ABC123",
"region": "string"
},
"subjectId": 42,
"addressId": 42,
"associatedDate": "2026-10-02T21:14:05Z",
"primary": true
}
],
"subjectTags": [
{
"subjectNotifyOptions": [
{}
],
"apiVersion": 42,
"customTagRemovalRule": {
"removeExpiredTags": true,
"removeExpiredTagsAfterXDays": true,
"removeExpiredTagsAfterDays": 125.5,
"removeDueToInactivityAfterXDays": true,
"removeDueToInactivityDays": 125.5
},
"subjectTagId": 42,
"customRemovalRuleJson": "string",
"dataOwnerId": 42,
"defaultExpireInDays": 125.5,
"isDisabled": true,
"tagInstructions": "string",
"tagName": "Example",
"tagRemoveAction": 42,
"uniqueId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
],
"subjectTagsAssoc": [
{
"timeZone": "string",
"subjectId": 42,
"subjectTagId": 42,
"created": "2026-10-02T21:14:05Z",
"expires": "2026-10-02T21:14:05Z"
}
],
"subjectId": 42,
"age": 42,
"alertEnabled": true,
"alertMessage": "string",
"created": "2026-10-02T21:14:05Z",
"dataOwnerId": 42,
"dateOfBirth": "2026-10-02",
"defaultImageRef": "string",
"department": "string",
"driversLicense": "string",
"eMail": "string",
"employeeID": "E-4471",
"employer": "string",
"firstName": "Example",
"gender": "string",
"incidentNumbers": "string",
"jobTitle": "string",
"knownSubject": true,
"lastName": "Example",
"lastUpdated": "2026-10-02T21:14:05Z",
"membershipNumber": "string",
"membershipTier": "string",
"middleName": "Example",
"mobileNumber": "string",
"notes": "string",
"notesShared": "string",
"subject": "string",
"subjectName": "Example",
"title": "string",
"unEnrolled": true
}
Subject face query matches
| Method | Path | What it does |
|---|---|---|
POST | oa/plugins/{pluginInstalledId}/subject-face-query-matches | Subject face query matches |
POST oa/plugins/{pluginInstalledId}/subject-face-query-matches
Subject face query matches.
Payload
Request body
{
"imageBytes": "BASE64DATA",
"maxResults": 42,
"minimumConfidence": 125.5
}
Response
[
{
"confidence": 125.5,
"faceId": "string"
}
]
Subject faces
| Method | Path | What it does |
|---|---|---|
DELETE | oa/plugins/{pluginInstalledId}/subject-faces/{faceId} | Subject face unenroll |
POST | oa/plugins/{pluginInstalledId}/subject-faces/{faceId}/detections/{detectId}/incorrect-match | Subject face incorrect match2 |
POST | oa/plugins/{pluginInstalledId}/subject-faces/{faceId}/detections/{detectId}/reprocess | Subject reprocess2 |
POST | oa/plugins/{pluginInstalledId}/subject-faces/{faceId}/detections/{detectId}/split | Subject split detection2 |
GET | oa/plugins/{pluginInstalledId}/subject-faces/{faceId}/enrollments | Subject face get enrollment images |
DELETE | oa/plugins/{pluginInstalledId}/subject-faces/{faceId}/enrollments/{detectId} | Subject face un enroll additional |
POST | oa/plugins/{pluginInstalledId}/subject-faces/images/fetch | Subject face get image |
POST oa/plugins/{pluginInstalledId}/subject-faces/{faceId}/detections/{detectId}/incorrect-match
Subject face incorrect match2.
| Parameter | In | Required | Type |
|---|---|---|---|
faceId | path | yes | string |
detectId | path | yes | string |
tagName | query | no | string |
Payload
Response
{
"allowNamePartsChanges": true,
"apiVersion": 42,
"subjectAddresses": [
{
"address": {
"addressId": 42,
"addressLine1": "string",
"addressLine2": "string",
"addressLine3": "string",
"country": "string",
"locality": "string",
"postalCode": "ABC123",
"region": "string"
},
"subjectId": 42,
"addressId": 42,
"associatedDate": "2026-10-02T21:14:05Z",
"primary": true
}
],
"subjectTags": [
{
"subjectNotifyOptions": [
{}
],
"apiVersion": 42,
"customTagRemovalRule": {
"removeExpiredTags": true,
"removeExpiredTagsAfterXDays": true,
"removeExpiredTagsAfterDays": 125.5,
"removeDueToInactivityAfterXDays": true,
"removeDueToInactivityDays": 125.5
},
"subjectTagId": 42,
"customRemovalRuleJson": "string",
"dataOwnerId": 42,
"defaultExpireInDays": 125.5,
"isDisabled": true,
"tagInstructions": "string",
"tagName": "Example",
"tagRemoveAction": 42,
"uniqueId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
],
"subjectTagsAssoc": [
{
"timeZone": "string",
"subjectId": 42,
"subjectTagId": 42,
"created": "2026-10-02T21:14:05Z",
"expires": "2026-10-02T21:14:05Z"
}
],
"subjectId": 42,
"age": 42,
"alertEnabled": true,
"alertMessage": "string",
"created": "2026-10-02T21:14:05Z",
"dataOwnerId": 42,
"dateOfBirth": "2026-10-02",
"defaultImageRef": "string",
"department": "string",
"driversLicense": "string",
"eMail": "string",
"employeeID": "E-4471",
"employer": "string",
"firstName": "Example",
"gender": "string",
"incidentNumbers": "string",
"jobTitle": "string",
"knownSubject": true,
"lastName": "Example",
"lastUpdated": "2026-10-02T21:14:05Z",
"membershipNumber": "string",
"membershipTier": "string",
"middleName": "Example",
"mobileNumber": "string",
"notes": "string",
"notesShared": "string",
"subject": "string",
"subjectName": "Example",
"title": "string",
"unEnrolled": true
}
POST oa/plugins/{pluginInstalledId}/subject-faces/{faceId}/detections/{detectId}/reprocess
Subject reprocess2.
| Parameter | In | Required | Type |
|---|---|---|---|
faceId | path | yes | string |
detectId | path | yes | string |
tagName | query | no | string |
Payload
POST oa/plugins/{pluginInstalledId}/subject-faces/{faceId}/detections/{detectId}/split
Subject split detection2.
| Parameter | In | Required | Type |
|---|---|---|---|
faceId | path | yes | string |
detectId | path | yes | string |
newFaceId | query | no | string |
confidence | query | no | double |
splitAction | query | no | FrSplitActionEnum |
Payload
POST oa/plugins/{pluginInstalledId}/subject-faces/images/fetch
Subject face get image.
Payload
Request body
{
"detectId": "string",
"excludePhoto": true,
"faceId": "string"
}
Response
{
"faceId": "string",
"detectId": "string",
"image": "BASE64DATA",
"matchedConfidence": 125.5,
"quality": 125.5,
"enrolledImage": true,
"manualEnrollment": true,
"favoriteImage": true,
"faceStorageNotFound": true
}
Subject faces compare
| Method | Path | What it does |
|---|---|---|
POST | oa/plugins/{pluginInstalledId}/subject-faces-compare | Subject faces compare |
POST oa/plugins/{pluginInstalledId}/subject-faces-compare
Subject faces compare.
Payload
Request body
{
"image1": "BASE64DATA",
"image2": "BASE64DATA",
"detectMatches": true
}
Response
{
"matchConfidence": 125.5,
"face1": {
"acceptable": true,
"x": 42,
"y": 42,
"width": 42,
"height": 42,
"faceId": "string",
"confidence": 125.5,
"subject": {
"allowNamePartsChanges": true,
"apiVersion": 42,
"subjectAddresses": [
{}
],
"subjectTags": [
{}
],
"subjectTagsAssoc": [
{}
],
"subjectId": 42,
"age": 42,
"alertEnabled": true,
"alertMessage": "string",
"created": "2026-10-02T21:14:05Z",
"dataOwnerId": 42,
"dateOfBirth": "2026-10-02",
"defaultImageRef": "string",
"department": "string",
"driversLicense": "string",
"eMail": "string",
"employeeID": "E-4471",
"employer": "string",
"firstName": "Example",
"gender": "string",
"incidentNumbers": "string",
"jobTitle": "string",
"knownSubject": true,
"lastName": "Example",
"lastUpdated": "2026-10-02T21:14:05Z",
"membershipNumber": "string",
"membershipTier": "string",
"middleName": "Example",
"mobileNumber": "string",
"notes": "string",
"notesShared": "string",
"subject": "string",
"subjectName": "Example",
"title": "string",
"unEnrolled": true
},
"quality": 125.5,
"faceImage": "BASE64DATA"
},
"face2": {
"acceptable": true,
"x": 42,
"y": 42,
"width": 42,
"height": 42,
"faceId": "string",
"confidence": 125.5,
"subject": {
"allowNamePartsChanges": true,
"apiVersion": 42,
"subjectAddresses": [
{}
],
"subjectTags": [
{}
],
"subjectTagsAssoc": [
{}
],
"subjectId": 42,
"age": 42,
"alertEnabled": true,
"alertMessage": "string",
"created": "2026-10-02T21:14:05Z",
"dataOwnerId": 42,
"dateOfBirth": "2026-10-02",
"defaultImageRef": "string",
"department": "string",
"driversLicense": "string",
"eMail": "string",
"employeeID": "E-4471",
"employer": "string",
"firstName": "Example",
"gender": "string",
"incidentNumbers": "string",
"jobTitle": "string",
"knownSubject": true,
"lastName": "Example",
"lastUpdated": "2026-10-02T21:14:05Z",
"membershipNumber": "string",
"membershipTier": "string",
"middleName": "Example",
"mobileNumber": "string",
"notes": "string",
"notesShared": "string",
"subject": "string",
"subjectName": "Example",
"title": "string",
"unEnrolled": true
},
"quality": 125.5,
"faceImage": "BASE64DATA"
}
}
Subject faces detect
| Method | Path | What it does |
|---|---|---|
POST | oa/plugins/{pluginInstalledId}/subject-faces-detect | Subject faces detect |
POST oa/plugins/{pluginInstalledId}/subject-faces-detect
Subject faces detect.
Payload
Request body
{
"imageBytes": "BASE64DATA",
"detectMatches": true
}
Response
[
{
"acceptable": true,
"x": 42,
"y": 42,
"width": 42,
"height": 42,
"faceId": "string",
"confidence": 125.5,
"subject": {
"allowNamePartsChanges": true,
"apiVersion": 42,
"subjectAddresses": [
{}
],
"subjectTags": [
{}
],
"subjectTagsAssoc": [
{}
],
"subjectId": 42,
"age": 42,
"alertEnabled": true,
"alertMessage": "string",
"created": "2026-10-02T21:14:05Z",
"dataOwnerId": 42,
"dateOfBirth": "2026-10-02",
"defaultImageRef": "string",
"department": "string",
"driversLicense": "string",
"eMail": "string",
"employeeID": "E-4471",
"employer": "string",
"firstName": "Example",
"gender": "string",
"incidentNumbers": "string",
"jobTitle": "string",
"knownSubject": true,
"lastName": "Example",
"lastUpdated": "2026-10-02T21:14:05Z",
"membershipNumber": "string",
"membershipTier": "string",
"middleName": "Example",
"mobileNumber": "string",
"notes": "string",
"notesShared": "string",
"subject": "string",
"subjectName": "Example",
"title": "string",
"unEnrolled": true
},
"quality": 125.5,
"faceImage": "BASE64DATA"
}
]
Subject faces detect2
| Method | Path | What it does |
|---|---|---|
POST | oa/plugins/{pluginInstalledId}/subject-faces-detect2 | Subject faces detect2 |
POST oa/plugins/{pluginInstalledId}/subject-faces-detect2
Subject faces detect2.
Payload
Request body
{
"imageBytes": "BASE64DATA",
"detectionOptions": {
"includeMatches": true,
"minFaceAcceptability": 125.5,
"minFaceQuality": 125.5
}
}
Response
[
{
"acceptable": true,
"x": 42,
"y": 42,
"width": 42,
"height": 42,
"faceId": "string",
"confidence": 125.5,
"subject": {
"allowNamePartsChanges": true,
"apiVersion": 42,
"subjectAddresses": [
{}
],
"subjectTags": [
{}
],
"subjectTagsAssoc": [
{}
],
"subjectId": 42,
"age": 42,
"alertEnabled": true,
"alertMessage": "string",
"created": "2026-10-02T21:14:05Z",
"dataOwnerId": 42,
"dateOfBirth": "2026-10-02",
"defaultImageRef": "string",
"department": "string",
"driversLicense": "string",
"eMail": "string",
"employeeID": "E-4471",
"employer": "string",
"firstName": "Example",
"gender": "string",
"incidentNumbers": "string",
"jobTitle": "string",
"knownSubject": true,
"lastName": "Example",
"lastUpdated": "2026-10-02T21:14:05Z",
"membershipNumber": "string",
"membershipTier": "string",
"middleName": "Example",
"mobileNumber": "string",
"notes": "string",
"notesShared": "string",
"subject": "string",
"subjectName": "Example",
"title": "string",
"unEnrolled": true
},
"quality": 125.5,
"faceImage": "BASE64DATA"
}
]
Subject faces enroll
| Method | Path | What it does |
|---|---|---|
POST | oa/plugins/{pluginInstalledId}/subject-faces-enroll | Subject faces enroll |