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.
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
| Method | Path | What it does |
|---|---|---|
GET | pos/plugins/{pluginInstalledId}/aggregate-get-fields | Aggregate get fields |
Aggregate get numeric fields
| Method | Path | What it does |
|---|---|---|
GET | pos/plugins/{pluginInstalledId}/aggregate-get-numeric-fields | Aggregate get numeric fields |
Aggregate grouping get fields
| Method | Path | What it does |
|---|---|---|
GET | pos/plugins/{pluginInstalledId}/aggregate-grouping-get-fields | Aggregate grouping get fields |
Aggregate grouping get fields2
| Method | Path | What it does |
|---|---|---|
GET | pos/plugins/{pluginInstalledId}/aggregate-grouping-get-fields2 | Aggregate grouping get fields2 |
Aggregate grouping submit query
| Method | Path | What it does |
|---|---|---|
GET | pos/plugins/{pluginInstalledId}/aggregate-grouping-submit-query | Aggregate grouping submit query |
Aggregate grouping summary query
| Method | Path | What it does |
|---|---|---|
GET | pos/plugins/{pluginInstalledId}/aggregate-grouping-summary-query | Aggregate grouping summary query |
Aggregate numeric segments submit query
| Method | Path | What it does |
|---|---|---|
GET | pos/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 | pos/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 | pos/plugins/{pluginInstalledId}/aggregate-report | Aggregate 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
| Method | Path | What it does |
|---|---|---|
POST | pos/plugins/{pluginInstalledId}/aggregate-report2 | Aggregate 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
| Method | Path | What it does |
|---|---|---|
GET | pos/plugins/{pluginInstalledId}/aggregate-submit-query | Aggregate submit query |
Entities
| Method | Path | What it does |
|---|---|---|
GET | pos/plugins/{pluginInstalledId}/entities | Gets 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. |
PUT | pos/plugins/{pluginInstalledId}/entities | Inserts or Updates (if it exists) a DataEntity into the database |
DELETE | pos/plugins/{pluginInstalledId}/entities/{posDataEntityId} | Data entity delete |
GET | pos/plugins/{pluginInstalledId}/entities/{uniqueID} | Returns a single DataEntity |
POST | pos/plugins/{pluginInstalledId}/entities/by-familiar-id | Will get an entity by its familiar ID and create it if it does not exist. |
POST | pos/plugins/{pluginInstalledId}/entities/by-friendly-name | Data entity get by friendly name |
GET | pos/plugins/{pluginInstalledId}/entities/query | Data entity query |
GET | pos/plugins/{pluginInstalledId}/entities/statistics | Entity statistic submit query |
PUT pos/plugins/{pluginInstalledId}/entities
Inserts or Updates (if it exists) a DataEntity into the database.
| Parameter | In | Required | Type |
|---|---|---|---|
entityTypeID | query | no | int32 |
familiarID | query | no | int64 |
friendlyName | query | no | string |
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..
| Parameter | In | Required | Type |
|---|---|---|---|
familiarID | query | no | int64 |
friendlyName | query | no | string |
entityTypeID | query | no | EntityTypeIDEnum |
createIfNoExists | query | no | boolean |
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.
| Parameter | In | Required | Type |
|---|---|---|---|
familiarID | query | no | int64 |
friendlyName | query | no | string |
entityTypeID | query | no | EntityTypeIDEnum |
createIfNoExists | query | no | boolean |
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
| Method | Path | What it does |
|---|---|---|
GET | pos/plugins/{pluginInstalledId}/events | Pos data event submit query |
POST | pos/plugins/{pluginInstalledId}/events | Pos data event add |
POST | pos/plugins/{pluginInstalledId}/events/batch | Pos data event add batch |
POST | pos/plugins/{pluginInstalledId}/events/cleanup | Pos data event cleanup |
GET | pos/plugins/{pluginInstalledId}/events/scores | Pos 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
| Method | Path | What it does |
|---|---|---|
DELETE | pos/plugins/{pluginInstalledId}/job-action-delete | Job action delete |
Job action execute
| Method | Path | What it does |
|---|---|---|
POST | pos/plugins/{pluginInstalledId}/job-action-execute | Job 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
| Method | Path | What it does |
|---|---|---|
GET | pos/plugins/{pluginInstalledId}/job-action-get-all | Job action get all |
Job action get by id
| Method | Path | What it does |
|---|---|---|
GET | pos/plugins/{pluginInstalledId}/job-action-get-by-id | Job action get by id |
Job action save
| Method | Path | What it does |
|---|---|---|
POST | pos/plugins/{pluginInstalledId}/job-action-save | Job 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
| Method | Path | What it does |
|---|---|---|
POST | pos/plugins/{pluginInstalledId}/logical-group-filter-add | Logical 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
| Method | Path | What it does |
|---|---|---|
GET | pos/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 | pos/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 | pos/plugins/{pluginInstalledId}/logical-group-filter-remove | Logical 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
| Method | Path | What it does |
|---|---|---|
DELETE | pos/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 | pos/plugins/{pluginInstalledId}/logical-group-filter-remove-by-reference-id | Logical group filter remove by reference id |
Query count query
| Method | Path | What it does |
|---|---|---|
GET | pos/plugins/{pluginInstalledId}/query-count-query | Query count query |
Query get all
| Method | Path | What it does |
|---|---|---|
GET | pos/plugins/{pluginInstalledId}/query-get-all | Query get all |
Query get by id
| Method | Path | What it does |
|---|---|---|
GET | pos/plugins/{pluginInstalledId}/query-get-by-id | Query get by id |
Query remove
| Method | Path | What it does |
|---|---|---|
DELETE | pos/plugins/{pluginInstalledId}/query-remove | Query remove |
Query save
| Method | Path | What it does |
|---|---|---|
POST | pos/plugins/{pluginInstalledId}/query-save | Query 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
| Method | Path | What it does |
|---|---|---|
GET | pos/plugins/{pluginInstalledId}/query-subscription-add | Allow user to add subscription to different BI events |
Query subscription add batch
| Method | Path | What it does |
|---|---|---|
POST | pos/plugins/{pluginInstalledId}/query-subscription-add-batch | Query 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
| Method | Path | What it does |
|---|---|---|
GET | pos/plugins/{pluginInstalledId}/query-subscription-get-all | Allow user to remove subscription |
Query subscription remove
| Method | Path | What it does |
|---|---|---|
DELETE | pos/plugins/{pluginInstalledId}/query-subscription-remove | Query subscription remove |
Query subscription remove batch
| Method | Path | What it does |
|---|---|---|
POST | pos/plugins/{pluginInstalledId}/query-subscription-remove-batch | Query 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
| Method | Path | What it does |
|---|---|---|
GET | pos/plugins/{pluginInstalledId}/score-rules | Score rules get all |
PUT | pos/plugins/{pluginInstalledId}/score-rules | Score rule save |
DELETE | pos/plugins/{pluginInstalledId}/score-rules/{scoreRuleId} | Score rule remove |
GET | pos/plugins/{pluginInstalledId}/score-rules/{scoreRuleId} | Score rule get by id |
POST | pos/plugins/{pluginInstalledId}/score-rules/reprocess | Score 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.
| Parameter | In | Required | Type |
|---|---|---|---|
eventTypesIds | query | no | array |
Payload
Subject data view query
| Method | Path | What it does |
|---|---|---|
POST | pos/plugins/{pluginInstalledId}/subject-data-view-query | Subject 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": [
{}
]
}
]
}