Core
Users, permissions, logical groups, settings, saved queries and storage — the platform every plugin sits on.
20 of these paths are plugin-scoped — the ones carrying {pluginInstalledId}. The rest are global. {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.
117 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 User*, Permission*, LogicalGroup*, SystemSettings*, Core*, Plugin* and Reseller* key families. See the Permission Keys reference.
Available plugins
| Method | Path | What it does |
|---|---|---|
GET | portal/available-plugins | Plugins available get all |
GET | portal/available-plugins/{pluginID} | Plugin available get |
Emails
| Method | Path | What it does |
|---|---|---|
POST | portal/emails/send | Email service send |
POST portal/emails/send
Email service send.
Payload
Request body
{
"fromAddress": "string",
"emailAddresses": [
"string"
],
"subjectLine": "string",
"messageBody": "string",
"filesAttached": [
{
"fileName": "Example",
"fileBytes": "BASE64DATA",
"contentType": "string"
}
],
"isHtml": true,
"isSms": true
}
Get all supported cultures
| Method | Path | What it does |
|---|---|---|
GET | portal/get-all-supported-cultures | Get all supported cultures |
Get all time zones
| Method | Path | What it does |
|---|---|---|
GET | portal/get-all-time-zones | Get all time zones |
Get current version
| Method | Path | What it does |
|---|---|---|
GET | portal/get-current-version | Get current version |
Installed plugins
| Method | Path | What it does |
|---|---|---|
GET | portal/installed-plugins | Plugins installed get all |
GET | portal/installed-plugins/{pluginInstalledId} | Plugins installed get by plugin installed id |
DELETE | portal/installed-plugins/{pluginInstalledID} | Plugins installed remove |
PUT | portal/installed-plugins/{pluginInstalledID} | Plugin installed save |
GET | portal/installed-plugins/{pluginInstalledID}/associations | Plugin association get list by plugin installed id |
GET | portal/installed-plugins/{pluginInstalledId}/associations/by-remotes | Plugin associations get list by parent remote ids |
GET | portal/installed-plugins/{pluginInstalledID}/details | Plugin details get |
GET | portal/installed-plugins/{pluginInstalledID}/remotes/{remoteID}/associations | Plugin association get list by remote id |
PUT | portal/installed-plugins/attributes | Plugin installed attributes save |
POST | portal/installed-plugins/attributes/delete | Plugin installed attributes delete |
PUT portal/installed-plugins/{pluginInstalledID}
Plugin installed save.
| Parameter | In | Required | Type |
|---|---|---|---|
pluginInstalledID | path | yes | uuid |
pluginID | query | no | string |
userGroupID | query | no | uuid |
name | query | no | string |
Payload
Response
{
"pluginServiceLocations": [
{
"resolvedURI": "string",
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"serviceURIKey": "string",
"serviceURILocation": "string",
"serviceURIPath": "string"
}
],
"pluginInstalledAttributes": [
{
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"boolValue": true,
"doubleValue": 125.5,
"stringValue": "string"
}
],
"associatedPluginAvailable": {
"pluginTypeItem": {
"pluginTypeID": "string",
"pluginTypeName": "Example"
},
"pluginID": "string",
"friendlyName": "Example",
"pluginTypeID": "string"
},
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"name": "Example",
"pluginID": "string",
"userGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
PUT portal/installed-plugins/attributes
Plugin installed attributes save.
Payload
Request body
[
{
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"boolValue": true,
"doubleValue": 125.5,
"stringValue": "string"
}
]
POST portal/installed-plugins/attributes/delete
Plugin installed attributes delete.
Payload
Request body
[
{
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"boolValue": true,
"doubleValue": 125.5,
"stringValue": "string"
}
]
Job action delete
| Method | Path | What it does |
|---|---|---|
DELETE | portal/plugins/{pluginInstalledId}/job-action-delete | Job action delete |
Job action execute
| Method | Path | What it does |
|---|---|---|
POST | portal/plugins/{pluginInstalledId}/job-action-execute | Job action execute |
POST portal/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 | portal/plugins/{pluginInstalledId}/job-action-get-all | Job action get all |
Job action get by id
| Method | Path | What it does |
|---|---|---|
GET | portal/plugins/{pluginInstalledId}/job-action-get-by-id | Job action get by id |
Job action save
| Method | Path | What it does |
|---|---|---|
POST | portal/plugins/{pluginInstalledId}/job-action-save | Job action save |
POST portal/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"
}
Jobs
| Method | Path | What it does |
|---|---|---|
GET | portal/jobs | User jobs get all |
POST | portal/jobs | User job save |
DELETE | portal/jobs/{userJobId} | User job remove |
GET | portal/jobs/{userJobId} | User job get by job id |
GET | portal/jobs/by-job-action | User jobs get all by job action id |
POST portal/jobs
User job save.
Payload
Request body
{
"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"
}
Response
{
"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"
}
Logical group filter add
| Method | Path | What it does |
|---|---|---|
POST | portal/plugins/{pluginInstalledId}/logical-group-filter-add | Logical group filter add |
POST portal/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 | portal/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 | portal/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 | portal/plugins/{pluginInstalledId}/logical-group-filter-remove | Logical group filter remove |
POST portal/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 | portal/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 | portal/plugins/{pluginInstalledId}/logical-group-filter-remove-by-reference-id | Logical group filter remove by reference id |
Logical groups
| Method | Path | What it does |
|---|---|---|
GET | portal/logical-groups | Gets the logical groups visible to the caller's current user group. |
POST | portal/logical-groups | Logical group save |
DELETE | portal/logical-groups/{logicalGroupId} | Logical group remove |
DELETE | portal/logical-groups/{logicalGroupId}/acls/{pluginInstalledId} | Logical group acl remove |
PUT | portal/logical-groups/{logicalGroupId}/acls/{pluginInstalledId} | Logical group acl save |
DELETE | portal/logical-groups/{logicalGroupId}/users/{userId} | Logical group user remove |
PUT | portal/logical-groups/{logicalGroupId}/users/{userId} | Logical group user add |
POST portal/logical-groups
Logical group save.
Payload
Request body
{
"logicalGroupUsers": [
{
"name": "Example",
"userType": 42,
"logicalGroupId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"userId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
],
"logicalGroupAcls": [
{
"name": "Example",
"logicalGroupId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginInstalledId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
],
"logicalGroupId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"name": "Example",
"userGroupId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
Response
{
"logicalGroupUsers": [
{
"name": "Example",
"userType": 42,
"logicalGroupId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"userId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
],
"logicalGroupAcls": [
{
"name": "Example",
"logicalGroupId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginInstalledId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
],
"logicalGroupId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"name": "Example",
"userGroupId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
PUT portal/logical-groups/{logicalGroupId}/acls/{pluginInstalledId}
Logical group acl save.
| Parameter | In | Required | Type |
|---|---|---|---|
logicalGroupId | path | yes | uuid |
Payload
PUT portal/logical-groups/{logicalGroupId}/users/{userId}
Logical group user add.
| Parameter | In | Required | Type |
|---|---|---|---|
logicalGroupId | path | yes | uuid |
userId | path | yes | uuid |
Payload
Permission groups
| Method | Path | What it does |
|---|---|---|
POST | portal/permission-groups | Creates a new permission group |
PUT | portal/permission-groups | Permission group update |
DELETE | portal/permission-groups/{permissionGroupID} | Permission group delete |
DELETE | portal/permission-groups/{permissionGroupID}/permission-keys | Permission keys remove from permission group |
GET | portal/permission-groups/{permissionGroupID}/permission-keys | Permission keys get by permission group id |
PUT | portal/permission-groups/{permissionGroupID}/permission-keys | Permission keys add to permission group |
GET | portal/permission-groups/{permissionGroupId}/users | Permission group get users associated by permission group id |
POST | portal/permission-groups/defaults | Permissions create default |
POST portal/permission-groups
Creates a new permission group.
| Parameter | In | Required | Type |
|---|---|---|---|
userGroupID | query | no | uuid |
permissionGroupName | query | no | string |
inheritFromPermissionGroupID | query | no | uuid |
Payload
Response
{
"configuredPermissionKeys": [
{
"categoryName": "Example",
"permissionKeyID": 42,
"permissionKey": "string",
"permissionType": "string",
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
],
"permissionGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"inheritFromPermissionGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"ldapGuid": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"permissionGroupName": "Example",
"userGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
PUT portal/permission-groups
Permission group update.
Payload
Request body
{
"permissionGroupItem": {
"configuredPermissionKeys": [
{
"categoryName": "Example",
"permissionKeyID": 42,
"permissionKey": "string",
"permissionType": "string",
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
],
"permissionGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"inheritFromPermissionGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"ldapGuid": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"permissionGroupName": "Example",
"userGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
},
"permissionKeys": [
42
]
}
Response
{
"configuredPermissionKeys": [
{
"categoryName": "Example",
"permissionKeyID": 42,
"permissionKey": "string",
"permissionType": "string",
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
],
"permissionGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"inheritFromPermissionGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"ldapGuid": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"permissionGroupName": "Example",
"userGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
PUT portal/permission-groups/{permissionGroupID}/permission-keys
Permission keys add to permission group.
| Parameter | In | Required | Type |
|---|---|---|---|
permissionGroupID | path | yes | uuid |
permissionKeyIDs | query | no | array |
Payload
POST portal/permission-groups/defaults
Permissions create default.
| Parameter | In | Required | Type |
|---|---|---|---|
userGroupID | query | no | uuid |
Payload
Response
[
{
"configuredPermissionKeys": [
{
"categoryName": "Example",
"permissionKeyID": 42,
"permissionKey": "string",
"permissionType": "string",
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
],
"permissionGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"inheritFromPermissionGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"ldapGuid": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"permissionGroupName": "Example",
"userGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
]
Permission keys
| Method | Path | What it does |
|---|---|---|
GET | portal/permission-keys | Permission keys get |
Permissions
| Method | Path | What it does |
|---|---|---|
GET | portal/permissions/check | Permission check |
POST | portal/permissions/check-batch | Permissoin check list |
POST portal/permissions/check-batch
Permissoin check list.
Payload
Request body
[
{
"permissionType": "string",
"permissionKey": "string",
"response": true
}
]
Response
[
{
"permissionType": "string",
"permissionKey": "string",
"response": true
}
]
Plugin associations
| Method | Path | What it does |
|---|---|---|
GET | portal/plugin-associations | Plugin association get by parent ids |
POST | portal/plugin-associations | Plugin association add |
POST | portal/plugin-associations/delete | Plugin association delete |
PUT | portal/plugin-associations/order | Plugin association set order |
POST portal/plugin-associations
Plugin association add.
| Parameter | In | Required | Type |
|---|---|---|---|
includeReverseAssociation | query | no | boolean |
Payload
Request body
{
"parentEntity": {
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
},
"childEntity": {
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
}
}
Response
{
"pluginAssociatedID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"parentEntity": {
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
},
"childEntity": {
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
}
}
POST portal/plugin-associations/delete
Plugin association delete.
| Parameter | In | Required | Type |
|---|---|---|---|
includeReverseAssociation | query | no | boolean |
Payload
Request body
{
"parentEntity": {
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
},
"childEntity": {
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
}
}
PUT portal/plugin-associations/order
Plugin association set order.
Payload
Request body
{
"parentEntity": {
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
},
"order": [
{
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
]
}
Plugin event states
| Method | Path | What it does |
|---|---|---|
GET | portal/plugin-event-states | Plugin event state query |
POST | portal/plugin-event-states | Plugin event status add2 |
PUT | portal/plugin-event-states/{eventStatusId} | Plugin event status update |
GET | portal/plugin-event-states/counts | Plugin event state count query |
GET | portal/plugin-event-states/users | Plugin event state users |
POST portal/plugin-event-states
Plugin event status add2.
Payload
Request body
{
"apiVersion": 42,
"comment": "string",
"currentStatus": 42,
"dataTimeStamp": "2026-10-02T21:14:05Z",
"entityUniqueId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"eventMessage": "string",
"pluginEventRowId": 42,
"pluginInstalledId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"reviewDuration": 42,
"reviewedAt": "2026-10-02T21:14:05Z",
"viewId": 42
}
PUT portal/plugin-event-states/{eventStatusId}
Plugin event status update.
| Parameter | In | Required | Type |
|---|---|---|---|
comment | query | no | string |
eventStatusId | path | yes | int32 |
Payload
Plugin event status add
| Method | Path | What it does |
|---|---|---|
POST | portal/plugin-event-status-add | Plugin event status add |
POST portal/plugin-event-status-add
Plugin event status add.
Payload
Request body
{
"pluginInstalledId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"viewId": 42,
"dataTimeStamp": "2026-10-02T21:14:05Z",
"comment": "string",
"currentStatus": 42,
"reviewDuration": 42,
"eventMessage": "string",
"reviewedAt": "2026-10-02T21:14:05Z",
"entityUniqueId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
Plugin types
| Method | Path | What it does |
|---|---|---|
GET | portal/plugin-types | Plugin types get all |
Query count query
| Method | Path | What it does |
|---|---|---|
GET | portal/plugins/{pluginInstalledId}/query-count-query | Query count query |
Query get all
| Method | Path | What it does |
|---|---|---|
GET | portal/plugins/{pluginInstalledId}/query-get-all | Query get all |
Query get by id
| Method | Path | What it does |
|---|---|---|
GET | portal/plugins/{pluginInstalledId}/query-get-by-id | Query get by id |
Query remove
| Method | Path | What it does |
|---|---|---|
DELETE | portal/plugins/{pluginInstalledId}/query-remove | Query remove |
Query save
| Method | Path | What it does |
|---|---|---|
POST | portal/plugins/{pluginInstalledId}/query-save | Query save |
POST portal/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
}
Resellers
| Method | Path | What it does |
|---|---|---|
GET | portal/resellers | Reseller get all |
GET | portal/resellers/{resellerId} | Reseller get by reseller id |
DELETE | portal/resellers/{resellerID} | Reseller remove |
PUT | portal/resellers/{resellerID} | Reseller save |
GET | portal/resellers/{resellerID}/user-groups | User group get by reseller id |
PUT portal/resellers/{resellerID}
Reseller save.
| Parameter | In | Required | Type |
|---|---|---|---|
resellerID | path | yes | uuid |
resellerName | query | no | string |
resellerLogo | query | no | string |
resellerTheme | query | no | string |
isDisabled | query | no | boolean |
Payload
Response
{
"resellerID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"isDisabled": true,
"resellerLogo": "string",
"resellerName": "Example",
"resellerTheme": "string"
}
Resource strings
| Method | Path | What it does |
|---|---|---|
GET | portal/resource-strings/{key} | Resource string get |
Storage key value update
| Method | Path | What it does |
|---|---|---|
POST | portal/storage-key-value-update | Storage key value update |
POST portal/storage-key-value-update
Storage key value update.
Payload
Request body
{
"keyId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"keyValue": "string",
"isPrivate": true,
"othersCanEdit": true
}
Storage key values
| Method | Path | What it does |
|---|---|---|
GET | portal/storage-key-values | Storage key values get by type |
PUT | portal/storage-key-values | Storage key value save |
DELETE | portal/storage-key-values/{keyId} | Storage key value remove |
GET | portal/storage-key-values/{keyId} | Storage key value get by key id |
GET | portal/storage-key-values/by-name | Storage key value get by key name |
PUT portal/storage-key-values
Storage key value save.
| Parameter | In | Required | Type |
|---|---|---|---|
removeMissingChildren | query | no | boolean |
Payload
Request body
{
"childKeyValueItems": [],
"createdBy": "string",
"updatedBy": "string",
"keyId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"createdByUserId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"dateCreated": "2026-10-02T21:14:05Z",
"dateUpdated": "2026-10-02T21:14:05Z",
"isPrivate": true,
"keyName": "Example",
"keyType": "string",
"keyValue": "string",
"othersCanEdit": true,
"parentKeyId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"updatedByUserId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"userGroupId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
Response
{
"childKeyValueItems": [],
"createdBy": "string",
"updatedBy": "string",
"keyId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"createdByUserId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"dateCreated": "2026-10-02T21:14:05Z",
"dateUpdated": "2026-10-02T21:14:05Z",
"isPrivate": true,
"keyName": "Example",
"keyType": "string",
"keyValue": "string",
"othersCanEdit": true,
"parentKeyId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"updatedByUserId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"userGroupId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
System settings
| Method | Path | What it does |
|---|---|---|
GET | portal/system-settings | System settings get all |
PUT | portal/system-settings | System settings set all |
GET | portal/system-settings/culture | System settings get culture |
PUT portal/system-settings
System settings set all.
Payload
Request body
[
{
"name": "Example",
"valueDouble": 125.5,
"settingType": "string",
"systemSettingKey": "string",
"valueBool": true,
"valueFloat": 125.5,
"valueString": "string"
}
]
User group save
| Method | Path | What it does |
|---|---|---|
POST | portal/user-group-save | User group save |
POST portal/user-group-save
User group save.
Payload
Request body
{
"userGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"resellerID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"userGroupName": "Example",
"isDisabled": true,
"disabledMessage": "string"
}
Response
{
"userGroupAttributes": [
{
"name": "Example",
"valueString": "string",
"valueDouble": 125.5,
"userGroupId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"doubleValue": 125.5,
"settingType": "string",
"stringValue": "string"
}
],
"userGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"dataOwnerID": 42,
"isDisabled": true,
"ldapEnabled": true,
"ldapGroupNamesPermitted": "string",
"ldapServerAddress": "string",
"resellerID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"userGroupDisableMessage": "string",
"userGroupName": "Example"
}
User groups
| Method | Path | What it does |
|---|---|---|
POST | portal/user-groups | User group save2 |
DELETE | portal/user-groups/{userGroupID} | User group remove |
GET | portal/user-groups/{userGroupID} | User group get by id |
GET | portal/user-groups/{userGroupId}/attributes | User group attribute get all |
PUT | portal/user-groups/{userGroupId}/attributes | User group attribute save |
PUT | portal/user-groups/{userGroupId}/attributes/batch | User group attribute save all |
GET | portal/user-groups/{userGroupId}/attributes/by-key | User group attribute get by key |
POST | portal/user-groups/{userGroupId}/attributes/delete | User group attribute remove |
GET | portal/user-groups/{userGroupID}/permission-groups | Permission group get all |
GET | portal/user-groups/{userGroupID}/users | User get list by user group id |
POST portal/user-groups
User group save2.
Payload
Request body
{
"userGroupAttributes": [
{
"name": "Example",
"valueString": "string",
"valueDouble": 125.5,
"userGroupId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"doubleValue": 125.5,
"settingType": "string",
"stringValue": "string"
}
],
"userGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"dataOwnerID": 42,
"isDisabled": true,
"ldapEnabled": true,
"ldapGroupNamesPermitted": "string",
"ldapServerAddress": "string",
"resellerID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"userGroupDisableMessage": "string",
"userGroupName": "Example"
}
Response
{
"userGroupAttributes": [
{
"name": "Example",
"valueString": "string",
"valueDouble": 125.5,
"userGroupId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"doubleValue": 125.5,
"settingType": "string",
"stringValue": "string"
}
],
"userGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"dataOwnerID": 42,
"isDisabled": true,
"ldapEnabled": true,
"ldapGroupNamesPermitted": "string",
"ldapServerAddress": "string",
"resellerID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"userGroupDisableMessage": "string",
"userGroupName": "Example"
}
PUT portal/user-groups/{userGroupId}/attributes
User group attribute save.
| Parameter | In | Required | Type |
|---|---|---|---|
userGroupId | path | yes | uuid |
Payload
Request body
{
"name": "Example",
"valueString": "string",
"valueDouble": 125.5,
"userGroupId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"doubleValue": 125.5,
"settingType": "string",
"stringValue": "string"
}
Response
{
"name": "Example",
"valueString": "string",
"valueDouble": 125.5,
"userGroupId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"doubleValue": 125.5,
"settingType": "string",
"stringValue": "string"
}
PUT portal/user-groups/{userGroupId}/attributes/batch
User group attribute save all.
| Parameter | In | Required | Type |
|---|---|---|---|
userGroupId | path | yes | uuid |
Payload
Request body
[
{
"name": "Example",
"valueString": "string",
"valueDouble": 125.5,
"userGroupId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"doubleValue": 125.5,
"settingType": "string",
"stringValue": "string"
}
]
POST portal/user-groups/{userGroupId}/attributes/delete
User group attribute remove.
| Parameter | In | Required | Type |
|---|---|---|---|
userGroupId | path | yes | uuid |
Payload
Request body
{
"name": "Example",
"valueString": "string",
"valueDouble": 125.5,
"userGroupId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"doubleValue": 125.5,
"settingType": "string",
"stringValue": "string"
}
User session history
| Method | Path | What it does |
|---|---|---|
GET | portal/user-session-history | User session history view query2 |
GET | portal/user-session-history/counts | User session history count query |
GET | portal/user-session-history/details | User session history detail view query2 |
POST | portal/user-session-history/details | User session history detail add |
POST | portal/user-session-history/details/batch | User session history detail add batch |
GET | portal/user-session-history/summary | User session history summary query |
POST portal/user-session-history/details
User session history detail add.
Payload
Request body
{
"description": "Example description",
"eventDateTime": "2026-10-02T21:14:05Z",
"historyTypeId": 42,
"referenceId": "string",
"pluginInstalledId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
POST portal/user-session-history/details/batch
User session history detail add batch.
Payload
Request body
[
{
"description": "Example description",
"eventDateTime": "2026-10-02T21:14:05Z",
"historyTypeId": 42,
"referenceId": "string",
"pluginInstalledId": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
]
User session history detail view query
| Method | Path | What it does |
|---|---|---|
GET | portal/user-session-history-detail-view-query | User session history detail view query |
User session history view query
| Method | Path | What it does |
|---|---|---|
GET | portal/user-session-history-view-query | User session history view query |
Users
| Method | Path | What it does |
|---|---|---|
GET | portal/users | User get list by user ids |
GET | portal/users/{userId} | v2 REST contract for the Portal user/profile pilot slice (#484, spec §4.1). Clean signatures: identity is ambient ( |
DELETE | portal/users/{userID} | User delete |
PUT | portal/users/{userID} | Creates or updates a user. Identity in the path, secrets in the body — replaces the inferred |
DELETE | portal/users/{userID}/attributes | User attribute delete by key type |
GET | portal/users/{userID}/attributes | User attribute get all |
GET | portal/users/{userID}/attributes/by-key | User attribute get |
GET | portal/users/{userID}/attributes/by-type | User attribute get all by type |
PUT | portal/users/{userID}/disabled | User enable disable |
GET | portal/users/{userId}/logical-groups | Logical group get all by user id |
GET | portal/users/{userID}/permission-groups | Permission group get user associated |
DELETE | portal/users/{userID}/permission-groups/{permissionGroupID} | Permission group remove from user |
PUT | portal/users/{userID}/permission-groups/{permissionGroupID} | Permission group add to user |
PUT | portal/users/attributes | User attribute save |
PUT | portal/users/attributes/batch | User attribute batch save |
GET | portal/users/by-permission-groups | User get list by permission group ids |
GET | portal/users/simple | User simple get by ids |
PUT portal/users/{userID}
Creates or updates a user. Identity in the path, secrets in the body — replaces the inferred
| Parameter | In | Required | Type |
|---|---|---|---|
userID | path | yes | uuid |
Payload
Request body
{
"userName": "Example",
"password": "string",
"userGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"defaultTimeZone": "string",
"culture": "string",
"isDisabled": true,
"isServiceUser": true,
"userAttributes": [
{
"userID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"doubleValue": 125.5,
"settingType": "string",
"stringValue": "string"
}
]
}
Response
{
"timeZoneInfoString": "string",
"userAttributes": [
{
"userID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"doubleValue": 125.5,
"settingType": "string",
"stringValue": "string"
}
],
"userPermissionGroups": [
{
"configuredPermissionKeys": [
{}
],
"permissionGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"inheritFromPermissionGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"ldapGuid": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"permissionGroupName": "Example",
"userGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50"
}
],
"userID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"createdDateTime": "2026-10-02T21:14:05Z",
"culture": "string",
"defaultTimeZone": "string",
"isDeleted": true,
"isDisabled": true,
"isSuperUser": true,
"lastLoginDateTime": "2026-10-02T21:14:05Z",
"lastUpdateDateTime": "2026-10-02T21:14:05Z",
"ldapGuid": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"serviceUser": true,
"staticAccessID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"userGroupID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"userName": "Example"
}
PUT portal/users/{userID}/disabled
User enable disable.
| Parameter | In | Required | Type |
|---|---|---|---|
userID | path | yes | uuid |
isDisabled | query | no | boolean |
Payload
PUT portal/users/{userID}/permission-groups/{permissionGroupID}
Permission group add to user.
| Parameter | In | Required | Type |
|---|---|---|---|
userID | path | yes | uuid |
permissionGroupID | path | yes | uuid |
Payload
PUT portal/users/attributes
User attribute save.
Payload
Request body
{
"userID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"doubleValue": 125.5,
"settingType": "string",
"stringValue": "string"
}
Response
{
"userID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"doubleValue": 125.5,
"settingType": "string",
"stringValue": "string"
}
PUT portal/users/attributes/batch
User attribute batch save.
Payload
Request body
[
{
"userID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"doubleValue": 125.5,
"settingType": "string",
"stringValue": "string"
}
]
Response
[
{
"userID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"doubleValue": 125.5,
"settingType": "string",
"stringValue": "string"
}
]