Skip to main content

Point of Sale

Transaction events, entities and statistics — and the ingress for pushing POS data in.

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.

51 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 POSData*, POSBIQuery* and Pos Score * key families. See the Permission Keys reference.

Aggregate get fields​

MethodPathWhat it does
GETpos/plugins/{pluginInstalledId}/aggregate-get-fieldsAggregate get fields

Aggregate get numeric fields​

MethodPathWhat it does
GETpos/plugins/{pluginInstalledId}/aggregate-get-numeric-fieldsAggregate get numeric fields

Aggregate grouping get fields​

MethodPathWhat it does
GETpos/plugins/{pluginInstalledId}/aggregate-grouping-get-fieldsAggregate grouping get fields

Aggregate grouping get fields2​

MethodPathWhat it does
GETpos/plugins/{pluginInstalledId}/aggregate-grouping-get-fields2Aggregate grouping get fields2

Aggregate grouping submit query​

MethodPathWhat it does
GETpos/plugins/{pluginInstalledId}/aggregate-grouping-submit-queryAggregate grouping submit query

Aggregate grouping summary query​

MethodPathWhat it does
GETpos/plugins/{pluginInstalledId}/aggregate-grouping-summary-queryAggregate grouping summary query

Aggregate numeric segments submit query​

MethodPathWhat it does
GETpos/plugins/{pluginInstalledId}/aggregate-numeric-segments-submit-queryGets all possible numeric aggregated values for the requested aggregate fields, broken up by number of seconds.

Aggregate numeric submit query​

MethodPathWhat it does
GETpos/plugins/{pluginInstalledId}/aggregate-numeric-submit-queryGets all possible numeric aggregated values for the requested aggregate fields

Aggregate report​

MethodPathWhat it does
POSTpos/plugins/{pluginInstalledId}/aggregate-reportAggregate report

POST pos/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​

MethodPathWhat it does
POSTpos/plugins/{pluginInstalledId}/aggregate-report2Aggregate report2

POST pos/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​

MethodPathWhat it does
GETpos/plugins/{pluginInstalledId}/aggregate-submit-queryAggregate submit query

Entities​

MethodPathWhat it does
GETpos/plugins/{pluginInstalledId}/entitiesGets a list of all the DataEntities in the system. You can optionally filter the data by supplying a non-zero value in the optionalEntityTypeID. 0 returns all types.
PUTpos/plugins/{pluginInstalledId}/entitiesInserts or Updates (if it exists) a DataEntity into the database
DELETEpos/plugins/{pluginInstalledId}/entities/{posDataEntityId}Data entity delete
GETpos/plugins/{pluginInstalledId}/entities/{uniqueID}Returns a single DataEntity
POSTpos/plugins/{pluginInstalledId}/entities/by-familiar-idWill get an entity by its familiar ID and create it if it does not exist.
POSTpos/plugins/{pluginInstalledId}/entities/by-friendly-nameData entity get by friendly name
GETpos/plugins/{pluginInstalledId}/entities/queryData entity query
GETpos/plugins/{pluginInstalledId}/entities/statisticsEntity statistic submit query

PUT pos/plugins/{pluginInstalledId}/entities​

Inserts or Updates (if it exists) a DataEntity into the database.

ParameterInRequiredType
entityTypeIDquerynoint32
familiarIDquerynoint64
friendlyNamequerynostring
Payload

Response

{
"timeZone": "string",
"timeZoneString": "string",
"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
},
"capabilities": [
42
],
"posDataEntityID": 42,
"dataOwnerID": 42,
"entityTypeID": 42,
"familiarID": 42,
"friendlyName": "Example",
"uniqueID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}

POST pos/plugins/{pluginInstalledId}/entities/by-familiar-id​

Will get an entity by its familiar ID and create it if it does not exist..

ParameterInRequiredType
familiarIDquerynoint64
friendlyNamequerynostring
entityTypeIDquerynoEntityTypeIDEnum
createIfNoExistsquerynoboolean
Payload

Response

{
"timeZone": "string",
"timeZoneString": "string",
"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
},
"capabilities": [
42
],
"posDataEntityID": 42,
"dataOwnerID": 42,
"entityTypeID": 42,
"familiarID": 42,
"friendlyName": "Example",
"uniqueID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}

POST pos/plugins/{pluginInstalledId}/entities/by-friendly-name​

Data entity get by friendly name.

ParameterInRequiredType
familiarIDquerynoint64
friendlyNamequerynostring
entityTypeIDquerynoEntityTypeIDEnum
createIfNoExistsquerynoboolean
Payload

Response

{
"timeZone": "string",
"timeZoneString": "string",
"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
},
"capabilities": [
42
],
"posDataEntityID": 42,
"dataOwnerID": 42,
"entityTypeID": 42,
"familiarID": 42,
"friendlyName": "Example",
"uniqueID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}

Events​

MethodPathWhat it does
GETpos/plugins/{pluginInstalledId}/eventsPos data event submit query
POSTpos/plugins/{pluginInstalledId}/eventsPos data event add
POSTpos/plugins/{pluginInstalledId}/events/batchPos data event add batch
POSTpos/plugins/{pluginInstalledId}/events/cleanupPos data event cleanup
GETpos/plugins/{pluginInstalledId}/events/scoresPos data event score submit query

POST pos/plugins/{pluginInstalledId}/events​

Pos data event add.

Payload

Request body

{
"authorizationNumber": 42,
"authorizingPOSEmployeeNumber": 42,
"basicData": "string",
"checkNumber": 42,
"dataTimeStamp": "2026-10-02T21:14:05Z",
"dollarAmount": 125.5,
"employeeNumber": 42,
"eventTypeID": 42,
"groupNumber": 42,
"objectNumber": 42,
"quantity": 3,
"revenueCenterNumber": 42,
"tableNumber": 42,
"terminalNumber": 42
}

POST pos/plugins/{pluginInstalledId}/events/batch​

Pos data event add batch.

Payload

Request body

[
{
"authorizationNumber": 42,
"authorizingPOSEmployeeNumber": 42,
"basicData": "string",
"checkNumber": 42,
"dataTimeStamp": "2026-10-02T21:14:05Z",
"dollarAmount": 125.5,
"employeeNumber": 42,
"eventTypeID": 42,
"groupNumber": 42,
"objectNumber": 42,
"quantity": 3,
"revenueCenterNumber": 42,
"tableNumber": 42,
"terminalNumber": 42
}
]

POST pos/plugins/{pluginInstalledId}/events/cleanup​

Pos data event cleanup.

Payload

Job action delete​

MethodPathWhat it does
DELETEpos/plugins/{pluginInstalledId}/job-action-deleteJob action delete

Job action execute​

MethodPathWhat it does
POSTpos/plugins/{pluginInstalledId}/job-action-executeJob action execute

POST pos/plugins/{pluginInstalledId}/job-action-execute​

Job action execute.

Payload

Request body

{
"jobActionId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}

Job action get all​

MethodPathWhat it does
GETpos/plugins/{pluginInstalledId}/job-action-get-allJob action get all

Job action get by id​

MethodPathWhat it does
GETpos/plugins/{pluginInstalledId}/job-action-get-by-idJob action get by id

Job action save​

MethodPathWhat it does
POSTpos/plugins/{pluginInstalledId}/job-action-saveJob action save

POST pos/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"
}

Logical group filter add​

MethodPathWhat it does
POSTpos/plugins/{pluginInstalledId}/logical-group-filter-addLogical group filter add

POST pos/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
GETpos/plugins/{pluginInstalledId}/logical-group-filter-get-allLogical group filter get all

Logical group filter get all by logical group ids​

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

POST pos/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
DELETEpos/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
DELETEpos/plugins/{pluginInstalledId}/logical-group-filter-remove-by-reference-idLogical group filter remove by reference id

Query count query​

MethodPathWhat it does
GETpos/plugins/{pluginInstalledId}/query-count-queryQuery count query

Query get all​

MethodPathWhat it does
GETpos/plugins/{pluginInstalledId}/query-get-allQuery get all

Query get by id​

MethodPathWhat it does
GETpos/plugins/{pluginInstalledId}/query-get-by-idQuery get by id

Query remove​

MethodPathWhat it does
DELETEpos/plugins/{pluginInstalledId}/query-removeQuery remove

Query save​

MethodPathWhat it does
POSTpos/plugins/{pluginInstalledId}/query-saveQuery save

POST pos/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​

MethodPathWhat it does
GETpos/plugins/{pluginInstalledId}/query-subscription-addAllow user to add subscription to different BI events

Query subscription add batch​

MethodPathWhat it does
POSTpos/plugins/{pluginInstalledId}/query-subscription-add-batchQuery subscription add batch

POST pos/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​

MethodPathWhat it does
GETpos/plugins/{pluginInstalledId}/query-subscription-get-allAllow user to remove subscription

Query subscription remove​

MethodPathWhat it does
DELETEpos/plugins/{pluginInstalledId}/query-subscription-removeQuery subscription remove

Query subscription remove batch​

MethodPathWhat it does
POSTpos/plugins/{pluginInstalledId}/query-subscription-remove-batchQuery subscription remove batch

POST pos/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"
}
]

Score rules​

MethodPathWhat it does
GETpos/plugins/{pluginInstalledId}/score-rulesScore rules get all
PUTpos/plugins/{pluginInstalledId}/score-rulesScore rule save
DELETEpos/plugins/{pluginInstalledId}/score-rules/{scoreRuleId}Score rule remove
GETpos/plugins/{pluginInstalledId}/score-rules/{scoreRuleId}Score rule get by id
POSTpos/plugins/{pluginInstalledId}/score-rules/reprocessScore rule reprocess ids

PUT pos/plugins/{pluginInstalledId}/score-rules​

Score rule save.

Payload

Request body

{
"scoreRuleId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"dataOwnerId": 42,
"disabled": true,
"eventTypeId": 42,
"name": "Example",
"queryId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"scoreValue": 125.5,
"simpleCondition": "string"
}

Response

{
"scoreRuleId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"dataOwnerId": 42,
"disabled": true,
"eventTypeId": 42,
"name": "Example",
"queryId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"scoreValue": 125.5,
"simpleCondition": "string"
}

POST pos/plugins/{pluginInstalledId}/score-rules/reprocess​

Score rule reprocess ids.

ParameterInRequiredType
eventTypesIdsquerynoarray
Payload

Subject data view query​

MethodPathWhat it does
POSTpos/plugins/{pluginInstalledId}/subject-data-view-querySubject data view query

POST pos/plugins/{pluginInstalledId}/subject-data-view-query​

Subject data view query.

Payload

Request body

[
{
"entity": {
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
},
"detectorId": 42,
"subjectDataStartDateTime": "2026-10-02T21:14:05Z",
"moduleQueryData": [
{
"module": "string",
"lastDataReceived": "2026-10-02T21:14:05Z"
}
]
}
]

Response

{
"queryItems": [
{
"queryItem": {
"entity": {},
"detectorId": 42,
"subjectDataStartDateTime": "2026-10-02T21:14:05Z",
"moduleQueryData": []
},
"deleteData": true,
"dataResults": [
{}
]
}
]
}