User and team management endpoints for the Wallboard digital signage platform.
Users are individuals who can log in to the Wallboard admin interface. Teams (user groups) provide granular access control by grouping resources and users.
| Concept | Description |
|---|---|
| User | Individual account with role-based permissions |
| Team | Group for managing resource access (also called "user group") |
| Role | Permission level determining what actions a user can perform |
| Editor Level | Content editor capability tier |
| UI Profile | Customized interface configuration |
| Role | Description |
|---|---|
ADMIN |
Full system access across all tenants |
OWNER |
Full customer access, can manage users and teams |
TECHNICIAN |
Can configure devices, data sources, integrations |
APPROVER |
Can approve content before publishing |
EDITOR |
Can create and edit content |
VIEWER |
Read-only access to assigned resources |
DEVICE_USER |
Device-only account for display authentication |
| Level | Description |
|---|---|
BASIC |
Simple editing with limited widget access |
ADVANCED |
Standard editing with most widgets |
PROFESSIONAL |
Full editor access with all features |
Teams enable fine-grained access:
readOnly for a team (view but not modify)Use WBQL in the search parameter. Key fields:
For Users:
| Filter Type | Field | Example |
|---|---|---|
| Role | role |
search=role=EDITOR |
email |
search=email:john |
|
| Name | name |
search=name:John |
| Active | active |
search=active=true |
For Teams:
| Filter Type | Field | Example |
|---|---|---|
| Name | name |
search=name:marketing |
See Getting Started for full WBQL syntax.
Retrieve a paginated list of users with support for field selection.
Minimum role: DEVICE_USER
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| page | integer >= 0 Default: 0 Page index (0-based) |
| size | integer [ 1 .. 1000 ] Default: 20 Number of elements per page (max 1000) |
| sort | string Example: sort=name,asc Sort expression. Format:
|
| search | string WBQL filter expression. Operators: |
| select | string Field projection. |
{- "first": true,
- "last": true,
- "number": 0,
- "numberOfElements": 0,
- "totalElements": 0,
- "totalPages": 0,
- "size": 0,
- "content": [
- {
- "name": "string",
- "language": "string",
- "address": "string",
- "comment": "string",
- "iconUrl": "string",
- "lastLogin": "2019-08-24T14:15:22Z",
- "createdDate": "2019-08-24T14:15:22Z",
- "termsOfServiceAcceptDate": "2019-08-24T14:15:22Z",
- "logins": 0,
- "presenceTime": 0,
- "lastActivity": "2019-08-24T14:15:22Z",
- "editorLevel": "BASIC",
- "role": "DEVICE_USER",
- "readOnly": true,
- "forceToSet2FA": true,
- "authProvider": "LOCAL",
- "use2FA": true,
- "restricted": true,
- "hiddenUIElementRules": { },
- "userMetaData": { },
- "ssoLoginEnabled": true,
- "usernamePasswordLoginEnabled": true,
- "magicCodeLoginEnabled": true,
- "hasProfilePicture": true,
- "profilePictureApiPath": "string",
- "microsoftSsoEnabled": true,
- "pinCodePresent": true,
- "regionalFormatSettings": { },
- "ownerCanAccessNetworkMember": true,
- "userInterfaceProfileId": 0,
- "customerId": 0,
- "location": {
- "latitude": "string",
- "longitude": "string"
}, - "trustedAdmin": true,
- "oauthPasswordFlowEnabled": true,
- "active": true,
- "customer": {
- "id": 0,
- "name": "string",
- "subreseller": true
}, - "userInterfaceProfile": {
- "id": 0,
- "name": "string",
- "comment": "string",
- "hiddenUIElementRules": { },
- "customerId": 0
}
}
]
}Get the authenticated user's profile. Returns role, customerId, and customer details.
Minimum role: DEVICE_USER
{- "name": "string",
- "language": "string",
- "address": "string",
- "comment": "string",
- "iconUrl": "string",
- "lastLogin": "2019-08-24T14:15:22Z",
- "createdDate": "2019-08-24T14:15:22Z",
- "termsOfServiceAcceptDate": "2019-08-24T14:15:22Z",
- "logins": 0,
- "presenceTime": 0,
- "lastActivity": "2019-08-24T14:15:22Z",
- "editorLevel": "BASIC",
- "role": "DEVICE_USER",
- "readOnly": true,
- "forceToSet2FA": true,
- "authProvider": "LOCAL",
- "use2FA": true,
- "restricted": true,
- "hiddenUIElementRules": { },
- "userMetaData": { },
- "ssoLoginEnabled": true,
- "usernamePasswordLoginEnabled": true,
- "magicCodeLoginEnabled": true,
- "hasProfilePicture": true,
- "profilePictureApiPath": "string",
- "microsoftSsoEnabled": true,
- "pinCodePresent": true,
- "regionalFormatSettings": { },
- "ownerCanAccessNetworkMember": true,
- "userInterfaceProfileId": 0,
- "customerId": 0,
- "location": {
- "latitude": "string",
- "longitude": "string"
}, - "trustedAdmin": true,
- "oauthPasswordFlowEnabled": true,
- "active": true,
- "customer": {
- "id": 0,
- "name": "string",
- "subreseller": true
}, - "userInterfaceProfile": {
- "id": 0,
- "name": "string",
- "comment": "string",
- "hiddenUIElementRules": { },
- "customerId": 0
}
}Create a new user account.
Minimum role: OWNER
⚠️ Protected: Requires g-recaptcha-response header (if CAPTCHA enabled) and/or x-totp header (if caller has 2FA).
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| teamIds | string Example: teamIds=000c08d294df48efb1b0f5aa754d7ef9:true,00a22e86602c4a88914614aa9516a481:false Team assignment filter. Format: |
| email required | string <email> |
| name required | string |
| password | string <password> Initial password (required unless SSO-only) |
| language | string Default: "en" |
| address | string |
| comment | string |
| iconUrl | string |
| role required | string (UserRole) Enum: "DEVICE_USER" "VIEWER" "EDITOR" "APPROVER" "TECHNICIAN" "OWNER" "ADMIN" User permission level (hierarchy from lowest to highest) |
| editorLevel | string (EditorLevel) Enum: "BASIC" "ADVANCED" "PROFESSIONAL" Content editor capability tier |
| readOnly | boolean Default: false |
| forceToSet2FA | boolean Default: false |
| restricted | boolean Default: false |
| hiddenUIElementRules | object |
| userMetadata | object |
| ssoLoginEnabled | boolean Default: true |
| usernamePasswordLoginEnabled | boolean Default: true |
| magicCodeLoginEnabled | boolean Default: true |
| regionalFormatSettings | object |
| ownerCanAccessNetworkMember | boolean |
| userInterfaceProfileId | integer <int64> |
| trustedAdmin | boolean Default: true |
| oauthPasswordFlowEnabled | boolean Default: false |
{- "name": "string",
- "password": "pa$$word",
- "language": "en",
- "address": "string",
- "comment": "string",
- "iconUrl": "string",
- "role": "DEVICE_USER",
- "editorLevel": "BASIC",
- "readOnly": false,
- "forceToSet2FA": false,
- "restricted": false,
- "hiddenUIElementRules": { },
- "userMetadata": { },
- "ssoLoginEnabled": true,
- "usernamePasswordLoginEnabled": true,
- "magicCodeLoginEnabled": true,
- "regionalFormatSettings": { },
- "ownerCanAccessNetworkMember": true,
- "userInterfaceProfileId": 0,
- "trustedAdmin": true,
- "oauthPasswordFlowEnabled": false
}{- "name": "string",
- "language": "string",
- "address": "string",
- "comment": "string",
- "iconUrl": "string",
- "lastLogin": "2019-08-24T14:15:22Z",
- "createdDate": "2019-08-24T14:15:22Z",
- "termsOfServiceAcceptDate": "2019-08-24T14:15:22Z",
- "logins": 0,
- "presenceTime": 0,
- "lastActivity": "2019-08-24T14:15:22Z",
- "editorLevel": "BASIC",
- "role": "DEVICE_USER",
- "readOnly": true,
- "forceToSet2FA": true,
- "authProvider": "LOCAL",
- "use2FA": true,
- "restricted": true,
- "hiddenUIElementRules": { },
- "userMetaData": { },
- "ssoLoginEnabled": true,
- "usernamePasswordLoginEnabled": true,
- "magicCodeLoginEnabled": true,
- "hasProfilePicture": true,
- "profilePictureApiPath": "string",
- "microsoftSsoEnabled": true,
- "pinCodePresent": true,
- "regionalFormatSettings": { },
- "ownerCanAccessNetworkMember": true,
- "userInterfaceProfileId": 0,
- "customerId": 0,
- "location": {
- "latitude": "string",
- "longitude": "string"
}, - "trustedAdmin": true,
- "oauthPasswordFlowEnabled": true,
- "active": true,
- "customer": {
- "id": 0,
- "name": "string",
- "subreseller": true
}, - "userInterfaceProfile": {
- "id": 0,
- "name": "string",
- "comment": "string",
- "hiddenUIElementRules": { },
- "customerId": 0
}
}Update an existing user.
Minimum role: DEVICE_USER (can update own profile, OWNER required for others)
⚠️ Protected: Requires g-recaptcha-response header (if CAPTCHA enabled) and/or x-totp header (if caller has 2FA).
| email required | string <email> Email of the user to update |
string <email> New email address (to change email) | |
| name | string |
| password | string <password> New password |
| language | string |
| address | string |
| comment | string |
| iconUrl | string |
| role | string (UserRole) Enum: "DEVICE_USER" "VIEWER" "EDITOR" "APPROVER" "TECHNICIAN" "OWNER" "ADMIN" User permission level (hierarchy from lowest to highest) |
| editorLevel | string (EditorLevel) Enum: "BASIC" "ADVANCED" "PROFESSIONAL" Content editor capability tier |
| readOnly | boolean |
| forceToSet2FA | boolean |
| use2FA | boolean |
| restricted | boolean |
| hiddenUIElementRules | object |
| userMetadata | object |
| ssoLoginEnabled | boolean |
| usernamePasswordLoginEnabled | boolean |
| magicCodeLoginEnabled | boolean |
| regionalFormatSettings | object |
| ownerCanAccessNetworkMember | boolean |
| userInterfaceProfileId | integer <int64> |
| resetUserInterfaceProfile | boolean Remove UI profile assignment |
| trustedAdmin | boolean |
| oauthPasswordFlowEnabled | boolean |
{- "name": "string",
- "password": "pa$$word",
- "language": "string",
- "address": "string",
- "comment": "string",
- "iconUrl": "string",
- "role": "DEVICE_USER",
- "editorLevel": "BASIC",
- "readOnly": true,
- "forceToSet2FA": true,
- "use2FA": true,
- "restricted": true,
- "hiddenUIElementRules": { },
- "userMetadata": { },
- "ssoLoginEnabled": true,
- "usernamePasswordLoginEnabled": true,
- "magicCodeLoginEnabled": true,
- "regionalFormatSettings": { },
- "ownerCanAccessNetworkMember": true,
- "userInterfaceProfileId": 0,
- "resetUserInterfaceProfile": true,
- "trustedAdmin": true,
- "oauthPasswordFlowEnabled": true
}Change the current user's password.
Minimum role: DEVICE_USER
⚠️ Protected: Requires g-recaptcha-response header (if CAPTCHA enabled) and/or x-totp header (if caller has 2FA).
| oldPassword required | string <password> |
| newPassword required | string <password> |
| totp | string TOTP code if 2FA is enabled |
Enable or disable two-factor authentication for current user.
Minimum role: DEVICE_USER
⚠️ Protected: Requires g-recaptcha-response header (if CAPTCHA enabled).
| totp required | string Current TOTP code to verify |
| enable required | boolean Whether to enable or disable 2FA |
Get information about the user's terms of service acceptance status.
Minimum role: DEVICE_USER
{- "userAcceptedTermsOfServiceDate": "2019-08-24T14:15:22Z",
- "termsOfServiceLastUpdatedDate": "2019-08-24T14:15:22Z",
- "userAcceptedLatestTermsOfService": true
}Update which teams a user belongs to.
Minimum role: OWNER
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| email required | string <email> Email of the user to update |
Array of objects (DefaultTeamAssignmentParams) Teams to assign the resource to | |
| removeFromTeamIds | Array of strings Team IDs to remove the resource from |
{- "assignToTeams": [
- {
- "teamId": "string",
- "readOnly": false
}
], - "removeFromTeamIds": [
- "string"
]
}Export user list as CSV file.
Minimum role: OWNER
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| search | string WBQL filter expression. Operators: |
Submit feedback about the platform.
Minimum role: DEVICE_USER
| message required | string |
| messageType | string Type of feedback (e.g., "bug", "feature", "question") |
Array of objects (ImageAttachment) |
{- "message": "string",
- "messageType": "string",
- "images": [
- {
- "imageUrl": "string",
- "fileName": "string"
}
]
}Request custom content creation assistance.
Minimum role: DEVICE_USER
| message required | string |
| messageType | string |
Array of objects (ImageAttachment) | |
| contentName | string Name for the requested content |
| startDate | string Desired start date |
| endDate | string Desired end date |
| targetScreenGroup | string Target screen group for the content |
{- "message": "string",
- "messageType": "string",
- "images": [
- {
- "imageUrl": "string",
- "fileName": "string"
}
], - "contentName": "string",
- "startDate": "string",
- "endDate": "string",
- "targetScreenGroup": "string"
}Check if current user has access to a customer and optionally verify role.
Minimum role: DEVICE_USER
| customerId required | integer |
| role | string (UserRole) Enum: "DEVICE_USER" "VIEWER" "EDITOR" "APPROVER" "TECHNICIAN" "OWNER" "ADMIN" Minimum role to check for |
Retrieve a paginated list of teams.
Minimum role: VIEWER
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| page | integer >= 0 Default: 0 Page index (0-based) |
| size | integer [ 1 .. 1000 ] Default: 20 Number of elements per page (max 1000) |
| sort | string Example: sort=name,asc Sort expression. Format:
|
| search | string WBQL filter expression. Operators: |
| includeTeamUserNumber | boolean Default: false Include count of users in each team |
| includeTeamResourceNumber | boolean Default: false Include count of resources in each team |
{- "first": true,
- "last": true,
- "number": 0,
- "numberOfElements": 0,
- "totalElements": 0,
- "totalPages": 0,
- "size": 0,
- "content": [
- {
- "id": "string",
- "name": "string",
- "comment": "string",
- "hiddenUIElementRules": "string",
- "teamUserNumber": 0,
- "teamDeviceNumber": 0,
- "teamDeviceGroupNumber": 0,
- "teamDeviceContentNumber": 0,
- "teamDatasourceNumber": 0,
- "teamContentGroupNumber": 0,
- "teamFileNumber": 0,
- "teamFileFolderNumber": 0,
- "teamMessageNumber": 0,
- "teamMessageGroupNumber": 0,
- "teamCampaignNumber": 0,
- "teamTopLevelCampaignNumber": 0,
- "teamMicrosoftTenantNumber": 0,
- "teamGoogleCredentialNumber": 0,
- "teamAdvertiserNumber": 0,
- "teamNotificationChannelNumber": 0,
- "teamAlertRuleNumber": 0,
- "teamWebhookEventActionNumber": 0,
- "teamCustomCredentialNumber": 0
}
]
}Create a new team (user group).
Minimum role: OWNER
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| name required | string |
| comment | string |
| hiddenUIElementRules | string JSON rules for hiding UI elements |
{- "name": "string",
- "comment": "string",
- "hiddenUIElementRules": "string"
}{- "id": "string",
- "name": "string",
- "comment": "string",
- "hiddenUIElementRules": "string",
- "teamUserNumber": 0,
- "teamDeviceNumber": 0,
- "teamDeviceGroupNumber": 0,
- "teamDeviceContentNumber": 0,
- "teamDatasourceNumber": 0,
- "teamContentGroupNumber": 0,
- "teamFileNumber": 0,
- "teamFileFolderNumber": 0,
- "teamMessageNumber": 0,
- "teamMessageGroupNumber": 0,
- "teamCampaignNumber": 0,
- "teamTopLevelCampaignNumber": 0,
- "teamMicrosoftTenantNumber": 0,
- "teamGoogleCredentialNumber": 0,
- "teamAdvertiserNumber": 0,
- "teamNotificationChannelNumber": 0,
- "teamAlertRuleNumber": 0,
- "teamWebhookEventActionNumber": 0,
- "teamCustomCredentialNumber": 0
}Update an existing team.
Minimum role: OWNER
| teamId required | string |
| name required | string |
| comment | string |
| hiddenUIElementRules | string JSON rules for hiding UI elements |
{- "name": "string",
- "comment": "string",
- "hiddenUIElementRules": "string"
}{- "id": "string",
- "name": "string",
- "comment": "string",
- "hiddenUIElementRules": "string",
- "teamUserNumber": 0,
- "teamDeviceNumber": 0,
- "teamDeviceGroupNumber": 0,
- "teamDeviceContentNumber": 0,
- "teamDatasourceNumber": 0,
- "teamContentGroupNumber": 0,
- "teamFileNumber": 0,
- "teamFileFolderNumber": 0,
- "teamMessageNumber": 0,
- "teamMessageGroupNumber": 0,
- "teamCampaignNumber": 0,
- "teamTopLevelCampaignNumber": 0,
- "teamMicrosoftTenantNumber": 0,
- "teamGoogleCredentialNumber": 0,
- "teamAdvertiserNumber": 0,
- "teamNotificationChannelNumber": 0,
- "teamAlertRuleNumber": 0,
- "teamWebhookEventActionNumber": 0,
- "teamCustomCredentialNumber": 0
}Retrieve all teams without pagination.
Minimum role: VIEWER
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| search | string WBQL filter expression. Operators: |
| includeTeamUserNumber | boolean Default: false |
| includeTeamResourceNumber | boolean Default: false |
[- {
- "id": "string",
- "name": "string",
- "comment": "string",
- "hiddenUIElementRules": "string",
- "teamUserNumber": 0,
- "teamDeviceNumber": 0,
- "teamDeviceGroupNumber": 0,
- "teamDeviceContentNumber": 0,
- "teamDatasourceNumber": 0,
- "teamContentGroupNumber": 0,
- "teamFileNumber": 0,
- "teamFileFolderNumber": 0,
- "teamMessageNumber": 0,
- "teamMessageGroupNumber": 0,
- "teamCampaignNumber": 0,
- "teamTopLevelCampaignNumber": 0,
- "teamMicrosoftTenantNumber": 0,
- "teamGoogleCredentialNumber": 0,
- "teamAdvertiserNumber": 0,
- "teamNotificationChannelNumber": 0,
- "teamAlertRuleNumber": 0,
- "teamWebhookEventActionNumber": 0,
- "teamCustomCredentialNumber": 0
}
]Get which teams a user belongs to, including readOnly status for each.
Returns shallow DTOs with teamId, resourceId, and readOnly flag.
Minimum role: OWNER
| userEmail required | string <email> |
[- {
- "resourceId": "string",
- "teamId": "string",
- "readOnly": true
}
]Bulk update user assignments for a team.
Minimum role: OWNER
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| teamId required | string |
Array of objects (SimpleStringIdResourceAssignmentParams) Resources to add to the team | |
| resourceIdsToRemove | Array of strings Resource IDs to remove from the team |
{- "resourcesToAdd": [
- {
- "id": "string",
- "readOnly": false
}
], - "resourceIdsToRemove": [
- "string"
]
}Retrieve UI customization profiles.
Minimum role: OWNER
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| page | integer >= 0 Default: 0 Page index (0-based) |
| size | integer [ 1 .. 1000 ] Default: 20 Number of elements per page (max 1000) |
| sort | string Example: sort=name,asc Sort expression. Format:
|
| search | string WBQL filter expression. Operators: |
| select | string Field projection. |
{- "first": true,
- "last": true,
- "number": 0,
- "numberOfElements": 0,
- "totalElements": 0,
- "totalPages": 0,
- "size": 0,
- "content": [
- {
- "id": 0,
- "name": "string",
- "comment": "string",
- "hiddenUIElementRules": { },
- "customerId": 0
}
]
}Create a new UI customization profile.
Minimum role: OWNER
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| name required | string |
| comment | string |
| hiddenUIElementRules | object |
{- "name": "string",
- "comment": "string",
- "hiddenUIElementRules": { }
}{- "id": 0,
- "name": "string",
- "comment": "string",
- "hiddenUIElementRules": { },
- "customerId": 0
}Minimum role: OWNER
| userInterfaceProfileId required | integer <int64> |
| name required | string |
| comment | string |
| hiddenUIElementRules | object |
{- "name": "string",
- "comment": "string",
- "hiddenUIElementRules": { }
}{- "id": 0,
- "name": "string",
- "comment": "string",
- "hiddenUIElementRules": { },
- "customerId": 0
}Bulk assign or remove a UI profile from users.
Minimum role: OWNER
| userInterfaceProfileId required | integer <int64> |
| assignUserIds | Array of strings <email> [ items <email > ] User emails to assign the profile to |
| removeUserIds | Array of strings <email> [ items <email > ] User emails to remove the profile from |
{
}