Skip to main content

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.

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 User*, Permission*, LogicalGroup*, SystemSettings*, Core*, Plugin* and Reseller* key families. See the Permission Keys reference.

Available plugins​

MethodPathWhat it does
GETportal/available-pluginsPlugins available get all
GETportal/available-plugins/{pluginID}Plugin available get

Emails​

MethodPathWhat it does
POSTportal/emails/sendEmail 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​

MethodPathWhat it does
GETportal/get-all-supported-culturesGet all supported cultures

Get all time zones​

MethodPathWhat it does
GETportal/get-all-time-zonesGet all time zones

Get current version​

MethodPathWhat it does
GETportal/get-current-versionGet current version

Installed plugins​

MethodPathWhat it does
GETportal/installed-pluginsPlugins installed get all
GETportal/installed-plugins/{pluginInstalledId}Plugins installed get by plugin installed id
DELETEportal/installed-plugins/{pluginInstalledID}Plugins installed remove
PUTportal/installed-plugins/{pluginInstalledID}Plugin installed save
GETportal/installed-plugins/{pluginInstalledID}/associationsPlugin association get list by plugin installed id
GETportal/installed-plugins/{pluginInstalledId}/associations/by-remotesPlugin associations get list by parent remote ids
GETportal/installed-plugins/{pluginInstalledID}/detailsPlugin details get
GETportal/installed-plugins/{pluginInstalledID}/remotes/{remoteID}/associationsPlugin association get list by remote id
PUTportal/installed-plugins/attributesPlugin installed attributes save
POSTportal/installed-plugins/attributes/deletePlugin installed attributes delete

PUT portal/installed-plugins/{pluginInstalledID}​

Plugin installed save.

ParameterInRequiredType
pluginInstalledIDpathyesuuid
pluginIDquerynostring
userGroupIDquerynouuid
namequerynostring
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​

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

Job action execute​

MethodPathWhat it does
POSTportal/plugins/{pluginInstalledId}/job-action-executeJob 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​

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

Job action get by id​

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

Job action save​

MethodPathWhat it does
POSTportal/plugins/{pluginInstalledId}/job-action-saveJob 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​

MethodPathWhat it does
GETportal/jobsUser jobs get all
POSTportal/jobsUser job save
DELETEportal/jobs/{userJobId}User job remove
GETportal/jobs/{userJobId}User job get by job id
GETportal/jobs/by-job-actionUser 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​

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

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

Logical group filter get all by logical group ids​

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

MethodPathWhat it does
DELETEportal/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
DELETEportal/plugins/{pluginInstalledId}/logical-group-filter-remove-by-reference-idLogical group filter remove by reference id

Logical groups​

MethodPathWhat it does
GETportal/logical-groupsGets the logical groups visible to the caller's current user group.
POSTportal/logical-groupsLogical group save
DELETEportal/logical-groups/{logicalGroupId}Logical group remove
DELETEportal/logical-groups/{logicalGroupId}/acls/{pluginInstalledId}Logical group acl remove
PUTportal/logical-groups/{logicalGroupId}/acls/{pluginInstalledId}Logical group acl save
DELETEportal/logical-groups/{logicalGroupId}/users/{userId}Logical group user remove
PUTportal/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.

ParameterInRequiredType
logicalGroupIdpathyesuuid
Payload

PUT portal/logical-groups/{logicalGroupId}/users/{userId}​

Logical group user add.

ParameterInRequiredType
logicalGroupIdpathyesuuid
userIdpathyesuuid
Payload

Permission groups​

MethodPathWhat it does
POSTportal/permission-groupsCreates a new permission group
PUTportal/permission-groupsPermission group update
DELETEportal/permission-groups/{permissionGroupID}Permission group delete
DELETEportal/permission-groups/{permissionGroupID}/permission-keysPermission keys remove from permission group
GETportal/permission-groups/{permissionGroupID}/permission-keysPermission keys get by permission group id
PUTportal/permission-groups/{permissionGroupID}/permission-keysPermission keys add to permission group
GETportal/permission-groups/{permissionGroupId}/usersPermission group get users associated by permission group id
POSTportal/permission-groups/defaultsPermissions create default

POST portal/permission-groups​

Creates a new permission group.

ParameterInRequiredType
userGroupIDquerynouuid
permissionGroupNamequerynostring
inheritFromPermissionGroupIDquerynouuid
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.

ParameterInRequiredType
permissionGroupIDpathyesuuid
permissionKeyIDsquerynoarray
Payload

POST portal/permission-groups/defaults​

Permissions create default.

ParameterInRequiredType
userGroupIDquerynouuid
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​

MethodPathWhat it does
GETportal/permission-keysPermission keys get

Permissions​

MethodPathWhat it does
GETportal/permissions/checkPermission check
POSTportal/permissions/check-batchPermissoin 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​

MethodPathWhat it does
GETportal/plugin-associationsPlugin association get by parent ids
POSTportal/plugin-associationsPlugin association add
POSTportal/plugin-associations/deletePlugin association delete
PUTportal/plugin-associations/orderPlugin association set order

POST portal/plugin-associations​

Plugin association add.

ParameterInRequiredType
includeReverseAssociationquerynoboolean
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.

ParameterInRequiredType
includeReverseAssociationquerynoboolean
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​

MethodPathWhat it does
GETportal/plugin-event-statesPlugin event state query
POSTportal/plugin-event-statesPlugin event status add2
PUTportal/plugin-event-states/{eventStatusId}Plugin event status update
GETportal/plugin-event-states/countsPlugin event state count query
GETportal/plugin-event-states/usersPlugin 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.

ParameterInRequiredType
commentquerynostring
eventStatusIdpathyesint32
Payload

Plugin event status add​

MethodPathWhat it does
POSTportal/plugin-event-status-addPlugin 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​

MethodPathWhat it does
GETportal/plugin-typesPlugin types get all

Query count query​

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

Query get all​

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

Query get by id​

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

Query remove​

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

Query save​

MethodPathWhat it does
POSTportal/plugins/{pluginInstalledId}/query-saveQuery 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​

MethodPathWhat it does
GETportal/resellersReseller get all
GETportal/resellers/{resellerId}Reseller get by reseller id
DELETEportal/resellers/{resellerID}Reseller remove
PUTportal/resellers/{resellerID}Reseller save
GETportal/resellers/{resellerID}/user-groupsUser group get by reseller id

PUT portal/resellers/{resellerID}​

Reseller save.

ParameterInRequiredType
resellerIDpathyesuuid
resellerNamequerynostring
resellerLogoquerynostring
resellerThemequerynostring
isDisabledquerynoboolean
Payload

Response

{
"resellerID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"isDisabled": true,
"resellerLogo": "string",
"resellerName": "Example",
"resellerTheme": "string"
}

Resource strings​

MethodPathWhat it does
GETportal/resource-strings/{key}Resource string get

Storage key value update​

MethodPathWhat it does
POSTportal/storage-key-value-updateStorage 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​

MethodPathWhat it does
GETportal/storage-key-valuesStorage key values get by type
PUTportal/storage-key-valuesStorage key value save
DELETEportal/storage-key-values/{keyId}Storage key value remove
GETportal/storage-key-values/{keyId}Storage key value get by key id
GETportal/storage-key-values/by-nameStorage key value get by key name

PUT portal/storage-key-values​

Storage key value save.

ParameterInRequiredType
removeMissingChildrenquerynoboolean
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​

MethodPathWhat it does
GETportal/system-settingsSystem settings get all
PUTportal/system-settingsSystem settings set all
GETportal/system-settings/cultureSystem 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​

MethodPathWhat it does
POSTportal/user-group-saveUser 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​

MethodPathWhat it does
POSTportal/user-groupsUser group save2
DELETEportal/user-groups/{userGroupID}User group remove
GETportal/user-groups/{userGroupID}User group get by id
GETportal/user-groups/{userGroupId}/attributesUser group attribute get all
PUTportal/user-groups/{userGroupId}/attributesUser group attribute save
PUTportal/user-groups/{userGroupId}/attributes/batchUser group attribute save all
GETportal/user-groups/{userGroupId}/attributes/by-keyUser group attribute get by key
POSTportal/user-groups/{userGroupId}/attributes/deleteUser group attribute remove
GETportal/user-groups/{userGroupID}/permission-groupsPermission group get all
GETportal/user-groups/{userGroupID}/usersUser 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.

ParameterInRequiredType
userGroupIdpathyesuuid
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.

ParameterInRequiredType
userGroupIdpathyesuuid
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.

ParameterInRequiredType
userGroupIdpathyesuuid
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​

MethodPathWhat it does
GETportal/user-session-historyUser session history view query2
GETportal/user-session-history/countsUser session history count query
GETportal/user-session-history/detailsUser session history detail view query2
POSTportal/user-session-history/detailsUser session history detail add
POSTportal/user-session-history/details/batchUser session history detail add batch
GETportal/user-session-history/summaryUser 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​

MethodPathWhat it does
GETportal/user-session-history-detail-view-queryUser session history detail view query

User session history view query​

MethodPathWhat it does
GETportal/user-session-history-view-queryUser session history view query

Users​

MethodPathWhat it does
GETportal/usersUser get list by user ids
GETportal/users/{userId}v2 REST contract for the Portal user/profile pilot slice (#484, spec §4.1). Clean signatures: identity is ambient (EcCallerContextAccessor), payloads are returned directly (no ServiceResponse envelope) and failures throw EcException. The generated v1 shells keep the classic wire behavior on the old routes.
DELETEportal/users/{userID}User delete
PUTportal/users/{userID}Creates or updates a user. Identity in the path, secrets in the body — replaces the inferred POST user-add-update shim (suppressed by the same-name rule).
DELETEportal/users/{userID}/attributesUser attribute delete by key type
GETportal/users/{userID}/attributesUser attribute get all
GETportal/users/{userID}/attributes/by-keyUser attribute get
GETportal/users/{userID}/attributes/by-typeUser attribute get all by type
PUTportal/users/{userID}/disabledUser enable disable
GETportal/users/{userId}/logical-groupsLogical group get all by user id
GETportal/users/{userID}/permission-groupsPermission group get user associated
DELETEportal/users/{userID}/permission-groups/{permissionGroupID}Permission group remove from user
PUTportal/users/{userID}/permission-groups/{permissionGroupID}Permission group add to user
PUTportal/users/attributesUser attribute save
PUTportal/users/attributes/batchUser attribute batch save
GETportal/users/by-permission-groupsUser get list by permission group ids
GETportal/users/simpleUser simple get by ids

PUT portal/users/{userID}​

Creates or updates a user. Identity in the path, secrets in the body — replaces the inferred POST user-add-update shim (suppressed by the same-name rule)..

ParameterInRequiredType
userIDpathyesuuid
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.

ParameterInRequiredType
userIDpathyesuuid
isDisabledquerynoboolean
Payload

PUT portal/users/{userID}/permission-groups/{permissionGroupID}​

Permission group add to user.

ParameterInRequiredType
userIDpathyesuuid
permissionGroupIDpathyesuuid
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"
}
]