Skip to main content

Wallboard API - Administration (2.0)

API Support: [email protected]

Administrative endpoints for the Wallboard digital signage platform.

Overview

Administration endpoints provide customer/tenant management, UI customization, system statistics, activity logs, and tag management.

Key Concepts

Concept Description
Customer Tenant organization in multi-tenant system
Network Owner Subreseller managing multiple customers
UI Profile User interface customization (hide/show menu items, features)
License Device activation entitlement
Statistics System and network usage metrics
Tags Labels for organizing content, devices, and other resources

Customer Profiles

Profile Description
BASIC Basic feature set
ADVANCED Advanced features enabled
PROFESSIONAL Professional tier features
INHERIT Inherit from parent (network owner)

License Types

Type Description
BASIC Lite tier with basic features
PROFESSIONAL Professional tier
DBA Broadcaster (legacy, not used for new orders)
ENTERPRISE Premium tier with all features
VIDEO_WALL Video wall support

License Tiers

Tier Description
STARTER Entry-level tier
BUSINESS Business tier
ENTERPRISE Enterprise tier

customer

Customer/tenant management (customer-level)

List customers

Retrieve a paginated list of customers. Regular users see only their customer. Network owners see their network members. ADMINs see all customers.

Minimum role: DEVICE_USER with customer selector

Authorizations:
bearer
query Parameters
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: field,direction

  • Directions: asc, desc
  • Multiple sorts: sort=name,asc&sort=lastActivity,desc
  • Nested fields: sort=content.name,asc
search
string

WBQL filter expression. Operators: : (contains), = (equals), , , ^ (starts with), >, , <, , (in set). Logic: , (AND), | (OR). Special: NULL, !NULL. Example: name:lobby,deviceStatus=ONLINE

select
string

Field projection. * = all primitives, field,field = specific, relation(fields) = nested. Example: select=*,customer(id,name)

date
integer <int64>

Filter by date timestamp (for billing/reporting calculations)

Responses

Response samples

Content type
application/json
{
  • "first": true,
  • "last": true,
  • "number": 0,
  • "numberOfElements": 0,
  • "totalElements": 0,
  • "totalPages": 0,
  • "size": 0,
  • "content": [
    ]
}

Create customer

Create a new customer/tenant.

Minimum role: OWNER

Authorizations:
bearer
Request Body schema: application/json
required
name
required
string
comment
string
country
string
location
string
type
string
profile
string (CustomerProfile)
Enum: "BASIC" "ADVANCED" "PROFESSIONAL" "INHERIT"

Customer profile/feature tier

vertical
string (CustomerVertical)
Enum: "BANKING_AND_FINANCE" "EMPLOYEE_CORPORATE_COMMUNICATION" "CORPORATE_MEETING_ROOMS" "DIGITAL_SIGNAGE" "EDUCATION_COLLAGE_AND_UNIVERSITIES" "CONFERENCE_AND_CONVENTION_CENTERS" "GOVERNMENT" "HEALTHCARE" "HOSPITALITY" "QUICK_SERVICE_RESTAURANT" "RETAIL" "SPORTS" "PETROL_STATIONS" "TRANSPORTATION" "ENTERTAINMENT" "WAYFINDING_AND_DIRECTORIES" "OTHER" "FACTORY_PRODUCEMENT" "BUSINESS_PARTNER" "RESELLER_PARTNER" "TECHNOLOGY_PARTNER"

Industry vertical

licenseType
string (LicenseType)
Enum: "BASIC" "PROFESSIONAL" "DBA" "ENTERPRISE" "VIDEO_WALL"

Device license type. Note: DBA (Broadcaster) is legacy and not used for new license orders.

licenseTier
string (CustomerLicenseTier)
Enum: "STARTER" "BUSINESS" "ENTERPRISE"

Customer license tier

freeLicenses
integer <int64>
Default: 0
browserSessionLicenses
integer <int64>
Default: 0
deviceSessionLimit
integer <int64>
Default: 0
expirationDate
string <date-time>
restricted
boolean
Default: false
contentDesignerEmail
string
supportEmail
string
needsToBeInvoiced
boolean
Default: true
storageSize
integer <int64>
hiddenUIElementRules
object
customerMetadata
object
enableAutomaticDistributionToDms
boolean
Default: false
userFullAccessIfNotInTeam
boolean
Default: true
accessResourcesWithoutTeam
boolean
Default: true
force2FA
boolean
Default: false
brandingGuideline
object
slaveId
string
createAsSubreseller
boolean
Default: false
ownerSubresellerId
integer <int64>
uiVersion
string
Default: "V1"
Enum: "V1" "V2"

UI version

loopDisplayerVersion
string
Enum: "LEGACY_LOOP" "LEGACY_CONTENT" "V2"

Default displayer version for playlists

contentDisplayerVersion
string
Enum: "LEGACY_LOOP" "LEGACY_CONTENT" "V2"

Default displayer version for content

deviceUpdatePolicy
string
Default: "FAST"
Enum: "IMMEDIATE" "FAST" "SLOW" "CUSTOM"

Device update policy

deviceUpdateDelayStartDays
integer

Days to delay device updates (start)

deviceUpdateDelayEndDays
integer

Days to delay device updates (end)

vistarNetworkId
string

Vistar network ID for programmatic advertising

vistarApiKey
string

Vistar API key

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "comment": "string",
  • "country": "string",
  • "location": "string",
  • "type": "string",
  • "profile": "BASIC",
  • "vertical": "BANKING_AND_FINANCE",
  • "licenseType": "BASIC",
  • "licenseTier": "STARTER",
  • "freeLicenses": 0,
  • "browserSessionLicenses": 0,
  • "deviceSessionLimit": 0,
  • "expirationDate": "2019-08-24T14:15:22Z",
  • "restricted": false,
  • "contentDesignerEmail": "string",
  • "supportEmail": "string",
  • "needsToBeInvoiced": true,
  • "storageSize": 0,
  • "hiddenUIElementRules": { },
  • "customerMetadata": { },
  • "enableAutomaticDistributionToDms": false,
  • "userFullAccessIfNotInTeam": true,
  • "accessResourcesWithoutTeam": true,
  • "force2FA": false,
  • "brandingGuideline": { },
  • "slaveId": "string",
  • "createAsSubreseller": false,
  • "ownerSubresellerId": 0,
  • "uiVersion": "V1",
  • "loopDisplayerVersion": "LEGACY_LOOP",
  • "contentDisplayerVersion": "LEGACY_LOOP",
  • "deviceUpdatePolicy": "IMMEDIATE",
  • "deviceUpdateDelayStartDays": 0,
  • "deviceUpdateDelayEndDays": 0,
  • "vistarNetworkId": "string",
  • "vistarApiKey": "string"
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "comment": "string",
  • "country": "string",
  • "location": "string",
  • "type": "string",
  • "profile": "BASIC",
  • "vertical": "BANKING_AND_FINANCE",
  • "licenseType": "BASIC",
  • "licenseTier": "STARTER",
  • "freeLicenses": 0,
  • "browserSessionLicenses": 0,
  • "deviceSessionLimit": 0,
  • "expirationDate": "2019-08-24T14:15:22Z",
  • "createdDate": "2019-08-24T14:15:22Z",
  • "restricted": true,
  • "contentDesignerEmail": "string",
  • "supportEmail": "string",
  • "needsToBeInvoiced": true,
  • "storageSize": 0,
  • "hiddenUIElementRules": { },
  • "enableAutomaticDistributionToDms": true,
  • "userFullAccessIfNotInTeam": true,
  • "accessResourcesWithoutTeam": true,
  • "isDeviceAndGroupCreationEnabledInRootForTeamUsers": true,
  • "isContentAndGroupCreationEnabledInRootForTeamUsers": true,
  • "isFileAndFolderCreationEnabledInRootForTeamUsers": true,
  • "brandingGuideline": { },
  • "uiVersion": "string",
  • "slaveId": "string",
  • "ownerSubresellerId": 0,
  • "force2FA": true,
  • "onlineLicenses": 0,
  • "totalLicenses": 0,
  • "usedFree": 0,
  • "activeLicenses": 0,
  • "subreseller": {
    }
}

Update customer

Update customer settings.

Minimum role: OWNER with customer selector

Authorizations:
bearer
path Parameters
customerId
required
integer <int64>
Request Body schema: application/json
required
name
string
comment
string
country
string
location
string
type
string
profile
string (CustomerProfile)
Enum: "BASIC" "ADVANCED" "PROFESSIONAL" "INHERIT"

Customer profile/feature tier

vertical
string (CustomerVertical)
Enum: "BANKING_AND_FINANCE" "EMPLOYEE_CORPORATE_COMMUNICATION" "CORPORATE_MEETING_ROOMS" "DIGITAL_SIGNAGE" "EDUCATION_COLLAGE_AND_UNIVERSITIES" "CONFERENCE_AND_CONVENTION_CENTERS" "GOVERNMENT" "HEALTHCARE" "HOSPITALITY" "QUICK_SERVICE_RESTAURANT" "RETAIL" "SPORTS" "PETROL_STATIONS" "TRANSPORTATION" "ENTERTAINMENT" "WAYFINDING_AND_DIRECTORIES" "OTHER" "FACTORY_PRODUCEMENT" "BUSINESS_PARTNER" "RESELLER_PARTNER" "TECHNOLOGY_PARTNER"

Industry vertical

licenseType
string (LicenseType)
Enum: "BASIC" "PROFESSIONAL" "DBA" "ENTERPRISE" "VIDEO_WALL"

Device license type. Note: DBA (Broadcaster) is legacy and not used for new license orders.

licenseTier
string (CustomerLicenseTier)
Enum: "STARTER" "BUSINESS" "ENTERPRISE"

Customer license tier

freeLicenses
integer <int64>
browserSessionLicenses
integer <int64>
deviceSessionLimit
integer <int64>
expirationDate
string <date-time>
resetExpirationDate
boolean

Set to true to clear expiration date

createdDate
string <date-time>
restricted
boolean
contentDesignerEmail
string
supportEmail
string
needsToBeInvoiced
boolean
storageSize
integer <int64>
hiddenUIElementRules
object
customerMetadata
object
enableAutomaticDistributionToDms
boolean
force2FA
boolean
brandingGuideline
object
uiVersion
string
Enum: "V1" "V2"

UI version

loopDisplayerVersion
string
Enum: "LEGACY_LOOP" "LEGACY_CONTENT" "V2"

Default displayer version for playlists

resetLoopDisplayerVersion
boolean

Reset to default displayer version for playlists

contentDisplayerVersion
string
Enum: "LEGACY_LOOP" "LEGACY_CONTENT" "V2"

Default displayer version for content

resetContentDisplayerVersion
boolean

Reset to default displayer version for content

deviceUpdatePolicy
string
Enum: "IMMEDIATE" "FAST" "SLOW" "CUSTOM"

Device update policy

deviceUpdateDelayStartDays
integer

Days to delay device updates (start)

deviceUpdateDelayEndDays
integer

Days to delay device updates (end)

vistarNetworkId
string

Vistar network ID for programmatic advertising

resetVistarNetworkId
boolean

Reset Vistar network ID

vistarApiKey
string

Vistar API key

resetVistarApiKey
boolean

Reset Vistar API key

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "comment": "string",
  • "country": "string",
  • "location": "string",
  • "type": "string",
  • "profile": "BASIC",
  • "vertical": "BANKING_AND_FINANCE",
  • "licenseType": "BASIC",
  • "licenseTier": "STARTER",
  • "freeLicenses": 0,
  • "browserSessionLicenses": 0,
  • "deviceSessionLimit": 0,
  • "expirationDate": "2019-08-24T14:15:22Z",
  • "resetExpirationDate": true,
  • "createdDate": "2019-08-24T14:15:22Z",
  • "restricted": true,
  • "contentDesignerEmail": "string",
  • "supportEmail": "string",
  • "needsToBeInvoiced": true,
  • "storageSize": 0,
  • "hiddenUIElementRules": { },
  • "customerMetadata": { },
  • "enableAutomaticDistributionToDms": true,
  • "force2FA": true,
  • "brandingGuideline": { },
  • "uiVersion": "V1",
  • "loopDisplayerVersion": "LEGACY_LOOP",
  • "resetLoopDisplayerVersion": true,
  • "contentDisplayerVersion": "LEGACY_LOOP",
  • "resetContentDisplayerVersion": true,
  • "deviceUpdatePolicy": "IMMEDIATE",
  • "deviceUpdateDelayStartDays": 0,
  • "deviceUpdateDelayEndDays": 0,
  • "vistarNetworkId": "string",
  • "resetVistarNetworkId": true,
  • "vistarApiKey": "string",
  • "resetVistarApiKey": true
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "comment": "string",
  • "country": "string",
  • "location": "string",
  • "type": "string",
  • "profile": "BASIC",
  • "vertical": "BANKING_AND_FINANCE",
  • "licenseType": "BASIC",
  • "licenseTier": "STARTER",
  • "freeLicenses": 0,
  • "browserSessionLicenses": 0,
  • "deviceSessionLimit": 0,
  • "expirationDate": "2019-08-24T14:15:22Z",
  • "createdDate": "2019-08-24T14:15:22Z",
  • "restricted": true,
  • "contentDesignerEmail": "string",
  • "supportEmail": "string",
  • "needsToBeInvoiced": true,
  • "storageSize": 0,
  • "hiddenUIElementRules": { },
  • "enableAutomaticDistributionToDms": true,
  • "userFullAccessIfNotInTeam": true,
  • "accessResourcesWithoutTeam": true,
  • "isDeviceAndGroupCreationEnabledInRootForTeamUsers": true,
  • "isContentAndGroupCreationEnabledInRootForTeamUsers": true,
  • "isFileAndFolderCreationEnabledInRootForTeamUsers": true,
  • "brandingGuideline": { },
  • "uiVersion": "string",
  • "slaveId": "string",
  • "ownerSubresellerId": 0,
  • "force2FA": true,
  • "onlineLicenses": 0,
  • "totalLicenses": 0,
  • "usedFree": 0,
  • "activeLicenses": 0,
  • "subreseller": {
    }
}

Delete customer

Delete a customer and all associated data. This is a destructive operation.

Minimum role: OWNER with customer selector

Headers:

  • x-totp: TOTP code for verification (optional)
  • x-captcha: Captcha token (optional)
  • x-captcha-version: Captcha version V2 or V3 (default: V2)
Authorizations:
bearer
path Parameters
customerId
required
integer <int64>

Responses

Select customer context

Get the current customer context including user and subscription info. Used after login to establish session context.

Minimum role: DEVICE_USER with customer selector

Authorizations:
bearer
query Parameters
customerId
integer

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
  • Set to -1 to query all tenants (ADMIN only)

Responses

Response samples

Content type
application/json
{
  • "user": {
    },
  • "customer": {
    },
  • "subscriptionId": "string",
  • "subscriptionUrl": "string"
}

Get customer info

Get current customer information with license usage details.

Minimum role: TECHNICIAN with customer selector

Authorizations:
bearer
query Parameters
customerId
integer

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
  • Set to -1 to query all tenants (ADMIN only)

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "comment": "string",
  • "country": "string",
  • "location": "string",
  • "type": "string",
  • "profile": "BASIC",
  • "vertical": "BANKING_AND_FINANCE",
  • "licenseType": "BASIC",
  • "licenseTier": "STARTER",
  • "freeLicenses": 0,
  • "browserSessionLicenses": 0,
  • "deviceSessionLimit": 0,
  • "expirationDate": "2019-08-24T14:15:22Z",
  • "createdDate": "2019-08-24T14:15:22Z",
  • "restricted": true,
  • "contentDesignerEmail": "string",
  • "supportEmail": "string",
  • "needsToBeInvoiced": true,
  • "storageSize": 0,
  • "hiddenUIElementRules": { },
  • "enableAutomaticDistributionToDms": true,
  • "userFullAccessIfNotInTeam": true,
  • "accessResourcesWithoutTeam": true,
  • "isDeviceAndGroupCreationEnabledInRootForTeamUsers": true,
  • "isContentAndGroupCreationEnabledInRootForTeamUsers": true,
  • "isFileAndFolderCreationEnabledInRootForTeamUsers": true,
  • "brandingGuideline": { },
  • "uiVersion": "string",
  • "slaveId": "string",
  • "ownerSubresellerId": 0,
  • "force2FA": true,
  • "onlineLicenses": 0,
  • "totalLicenses": 0,
  • "usedFree": 0,
  • "activeLicenses": 0,
  • "subreseller": {
    }
}

Get customer statistics

Get detailed statistics for a specific customer including device counts, user activity, content counts, and pie chart data.

Minimum role: OWNER with customer selector

Authorizations:
bearer
path Parameters
customerId
required
integer <int64>

Responses

Response samples

Content type
application/json
{
  • "totalDevices": 0,
  • "totalLicenses": 0,
  • "lastDeviceActivity": "2019-08-24T14:15:22Z",
  • "activeDevicesInLastWeek": 0,
  • "totalUsers": 0,
  • "totalUserPresenceTime": 0,
  • "totalUserLoginCount": 0,
  • "activeUsersInLastWeek": 0,
  • "totalContents": 0,
  • "totalDatasources": 0,
  • "ownedCustomerCount": 0,
  • "devicesByState": {
    },
  • "devicesByLicensePayType": {
    },
  • "devicesByLicenseType": {
    },
  • "contentsByType": {
    }
}

Get customer license dashboard

Get license dashboard view for a customer.

Minimum role: OWNER with customer selector

Authorizations:
bearer
path Parameters
customerId
required
integer <int64>

Responses

Response samples

Content type
application/json
{
  • "totalLicenses": 0,
  • "usedLicenses": 0,
  • "freeLicenses": 0
}

Update team settings

Update team-related settings for a customer.

Minimum role: OWNER with customer selector

Authorizations:
bearer
query Parameters
customerId
integer

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
  • Set to -1 to query all tenants (ADMIN only)
Request Body schema: application/json
required
userFullAccessIfNotInTeam
boolean
accessResourcesWithoutTeam
boolean
isDeviceAndGroupCreationEnabledInRootForTeamUsers
boolean
isContentAndGroupCreationEnabledInRootForTeamUsers
boolean
isFileAndFolderCreationEnabledInRootForTeamUsers
boolean

Responses

Request samples

Content type
application/json
{
  • "userFullAccessIfNotInTeam": true,
  • "accessResourcesWithoutTeam": true,
  • "isDeviceAndGroupCreationEnabledInRootForTeamUsers": true,
  • "isContentAndGroupCreationEnabledInRootForTeamUsers": true,
  • "isFileAndFolderCreationEnabledInRootForTeamUsers": true
}

user-interface-profile

User interface profile management (UI customization)

List UI profiles

Retrieve user interface profiles with optional filtering and pagination.

Minimum role: OWNER

Authorizations:
bearer
query Parameters
customerId
integer

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
  • Set to -1 to query all tenants (ADMIN only)
search
string

WBQL filter expression. Operators: : (contains), = (equals), , , ^ (starts with), >, , <, , (in set). Logic: , (AND), | (OR). Special: NULL, !NULL. Example: name:lobby,deviceStatus=ONLINE

select
string

Field projection. * = all primitives, field,field = specific, relation(fields) = nested. Example: select=*,customer(id,name)

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: field,direction

  • Directions: asc, desc
  • Multiple sorts: sort=name,asc&sort=lastActivity,desc
  • Nested fields: sort=content.name,asc

Responses

Response samples

Content type
application/json
{
  • "first": true,
  • "last": true,
  • "number": 0,
  • "numberOfElements": 0,
  • "totalElements": 0,
  • "totalPages": 0,
  • "size": 0,
  • "content": [
    ]
}

Create UI profile

Create a new user interface profile.

Minimum role: OWNER

Authorizations:
bearer
query Parameters
customerId
integer

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
  • Set to -1 to query all tenants (ADMIN only)
Request Body schema: application/json
required
name
required
string

Profile name

comment
string

Optional description

hiddenUIElementRules
required
object

JSON rules for hiding UI elements

Responses

Request samples

Content type
application/json
{
  • "name": "Limited Editor",
  • "comment": "Hide advanced settings and admin features",
  • "hiddenUIElementRules": {
    }
}

Response samples

Content type
application/json
{
  • "id": 42,
  • "name": "Limited Editor",
  • "comment": "Hide advanced features",
  • "hiddenUIElementRules": {
    },
  • "customerId": 123
}

Update UI profile

Update an existing user interface profile.

Minimum role: OWNER

Authorizations:
bearer
path Parameters
userInterfaceProfileId
required
integer <int64>

UI profile ID

Request Body schema: application/json
required
name
required
string

Profile name

comment
string

Optional description

hiddenUIElementRules
required
object

JSON rules for hiding UI elements

Responses

Request samples

Content type
application/json
{
  • "name": "Limited Editor",
  • "comment": "Restrict access to sensitive settings",
  • "hiddenUIElementRules": {
    }
}

Response samples

Content type
application/json
{
  • "id": 42,
  • "name": "Limited Editor",
  • "comment": "Hide advanced features",
  • "hiddenUIElementRules": {
    },
  • "customerId": 123
}

Delete UI profile

Delete a user interface profile.

Minimum role: OWNER

Authorizations:
bearer
path Parameters
userInterfaceProfileId
required
integer <int64>

UI profile ID

Responses

Assign profile to users

Assign or remove user interface profile to/from users.

Minimum role: OWNER

Authorizations:
bearer
path Parameters
userInterfaceProfileId
required
integer <int64>

UI profile ID

Request Body schema: application/json
required
assignUserIds
Array of strings

User IDs to assign profile to

removeUserIds
Array of strings

User IDs to remove profile from

Responses

Request samples

Content type
application/json
{
  • "assignUserIds": [
    ],
  • "removeUserIds": [
    ]
}

statistics

Statistics and metrics (customer-level)

Get network dashboard statistics

Get statistics for a network owner and their members. Returns the same structure as system dashboard but scoped to the network.

Minimum role: VIEWER with customer selector

Authorizations:
bearer
query Parameters
customerId
integer

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
  • Set to -1 to query all tenants (ADMIN only)
includeOwnerData
boolean
Default: false

Include network owner's own data in statistics

force
boolean
Default: false

Force refresh cached data

Responses

Response samples

Content type
application/json
{
  • "unassignedDeviceStatusCounts": {
    },
  • "assignedDeviceStatusCounts": {
    },
  • "assignedLicenseCount": 0,
  • "unAssignedLicenseCount": 0,
  • "deviceLicenseTypeCounts": {
    },
  • "deviceLicenseStatusCounts": {
    },
  • "customerCount": 0,
  • "activeCustomerCount": 0,
  • "customerByVerticalCounts": {
    },
  • "customerLicenseTierCounts": {
    },
  • "userCount": 0,
  • "activeUserCount": 0,
  • "simpleLoopCount": 0,
  • "contentCount": 0,
  • "slideCount": 0,
  • "scheduleCount": 0,
  • "datasourceByTypeCounts": {
    },
  • "datasourceByIncomingDataFormatCounts": {
    },
  • "activeExternalDatasourceCount": 0,
  • "brokenExternalDatasourceCount": 0,
  • "browserSessionLimit": 0,
  • "activeBrowserSessionCount": 0,
  • "activeGoogleCredentials": {
    },
  • "activeMicrosoftCredentials": {
    },
  • "licenseValidTo": 0,
  • "supportValidTo": 0
}

Get session statistics

Get active session statistics for a customer including browser sessions and device content sessions.

Minimum role: VIEWER with customer selector

Authorizations:
bearer
query Parameters
customerId
required
integer <int64>

Customer ID

Responses

Response samples

Content type
application/json
{
  • "browserSessions": {
    },
  • "deviceContentSessions": {
    }
}

log

Activity logs

Get activity logs

Retrieve paginated activity logs for a customer. Logs include user actions, device events, and system messages.

Note: This endpoint is served by the wb-log-service microservice.

Authorizations:
bearer
query Parameters
customerId
integer

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
  • Set to -1 to query all tenants (ADMIN only)
page
integer
Default: 0

Page index (0-based)

size
integer
Default: 20

Page size

search
string

Search filter expression

order
string
Default: "DESC"
Enum: "ASC" "DESC"

Sort order

from
integer <int64>

Filter logs from this timestamp (Unix milliseconds)

to
integer <int64>

Filter logs until this timestamp (Unix milliseconds)

Responses

Response samples

Content type
application/json
{
  • "content": [
    ],
  • "totalPages": 0,
  • "last": true,
  • "totalElements": 0,
  • "size": 0,
  • "number": 0,
  • "first": true,
  • "numberOfElements": 0
}

Download logs as CSV

Download activity logs as a CSV file.

Note: This endpoint is served by the wb-log-service microservice.

Authorizations:
bearer
query Parameters
customerId
integer

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
  • Set to -1 to query all tenants (ADMIN only)
search
string

Search filter expression

Responses

tag

Tag management for resources

Get customer tags

Get all tags organized by entity type for a customer.

Minimum role: VIEWER with customer selector

Authorizations:
bearer
query Parameters
customerId
integer

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
  • Set to -1 to query all tenants (ADMIN only)
select
string

Field projection. * = all primitives, field,field = specific, relation(fields) = nested. Example: select=*,customer(id,name)

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "campaignTags": {
    },
  • "messageTags": {
    },
  • "deviceContentTags": {
    },
  • "deviceTags": {
    },
  • "deviceGroupTags": {
    },
  • "fileTags": {
    }
}

Create tag

Create a new tag for a specific entity type.

Minimum role: EDITOR with customer selector

Authorizations:
bearer
query Parameters
customerId
integer

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
  • Set to -1 to query all tenants (ADMIN only)
tagType
required
string (CustomerTagType)
Enum: "CONTENT" "DEVICE" "CAMPAIGN" "MESSAGE" "FILE"

Entity type for the tag

Request Body schema: application/json
required
tag
required
string

Tag name

comment
string

Tag description

Responses

Request samples

Content type
application/json
{
  • "tag": "string",
  • "comment": "string"
}

Response samples

Content type
application/json
{
  • "tag": "string",
  • "tagInfo": {
    }
}

Update tag

Update an existing tag's comment.

Minimum role: EDITOR with customer selector

Authorizations:
bearer
query Parameters
customerId
integer

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
  • Set to -1 to query all tenants (ADMIN only)
tag
required
string

Tag name to update

tagType
required
string (CustomerTagType)
Enum: "CONTENT" "DEVICE" "CAMPAIGN" "MESSAGE" "FILE"

Entity type for the tag

Request Body schema: application/json
required
comment
string

Updated tag description

Responses

Request samples

Content type
application/json
{
  • "comment": "string"
}

Delete tag

Delete an existing tag.

Minimum role: EDITOR with customer selector

Authorizations:
bearer
query Parameters
customerId
integer

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
  • Set to -1 to query all tenants (ADMIN only)
tag
required
string

Tag name to delete

tagType
required
string (CustomerTagType)
Enum: "CONTENT" "DEVICE" "CAMPAIGN" "MESSAGE" "FILE"

Entity type for the tag

Responses

Get all tags with usage counts

Get all tags merged across entity types with their usage counts.

Minimum role: VIEWER with customer selector

Authorizations:
bearer
query Parameters
customerId
integer

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
  • Set to -1 to query all tenants (ADMIN only)

Responses

Response samples

Content type
application/json
{
  • "lobby": 5,
  • "reception": 3,
  • "floor-1": 12
}

Suggest tags

Get tag suggestions based on keyword and entity type.

Minimum role: VIEWER with customer selector

Authorizations:
bearer
query Parameters
customerId
integer

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
  • Set to -1 to query all tenants (ADMIN only)
keyword
string

Keyword to filter suggestions

entity
string (CustomerTagType)
Enum: "CONTENT" "DEVICE" "CAMPAIGN" "MESSAGE" "FILE"

Entity type to filter by

Responses

Response samples

Content type
application/json
[
  • "string"
]

Suggest template tags

Get template tag suggestions based on keyword.

Minimum role: VIEWER

Authorizations:
bearer
query Parameters
keyword
string

Keyword to filter suggestions

Responses

Response samples

Content type
application/json
[
  • "string"
]

customer-admin

Customer administration (ADMIN only, system-wide)

Export customers as CSV

Export customer list as CSV file (all customers in the system).

Minimum role: ADMIN

Authorizations:
bearer
query Parameters
search
string

WBQL filter expression. Operators: : (contains), = (equals), , , ^ (starts with), >, , <, , (in set). Logic: , (AND), | (OR). Special: NULL, !NULL. Example: name:lobby,deviceStatus=ONLINE

Responses

Get global customer statistics

Get global statistics across all customers in the system.

Minimum role: ADMIN

Authorizations:
bearer

Responses

Response samples

Content type
application/json
{
  • "activeLastWeek": 0,
  • "totalActiveLicenses": 0,
  • "totalLicenses": 0
}

statistics-admin

System statistics (ADMIN only)

Get system dashboard statistics

Get global platform statistics including device counts, customer counts, user activity, and content statistics across all customers.

Minimum role: ADMIN

Authorizations:
bearer
query Parameters
force
boolean
Default: false

Force refresh cached data

Responses

Response samples

Content type
application/json
{
  • "unassignedDeviceStatusCounts": {
    },
  • "assignedDeviceStatusCounts": {
    },
  • "assignedLicenseCount": 0,
  • "unAssignedLicenseCount": 0,
  • "deviceLicenseTypeCounts": {
    },
  • "deviceLicenseStatusCounts": {
    },
  • "customerCount": 0,
  • "activeCustomerCount": 0,
  • "customerByVerticalCounts": {
    },
  • "customerLicenseTierCounts": {
    },
  • "userCount": 0,
  • "activeUserCount": 0,
  • "simpleLoopCount": 0,
  • "contentCount": 0,
  • "slideCount": 0,
  • "scheduleCount": 0,
  • "datasourceByTypeCounts": {
    },
  • "datasourceByIncomingDataFormatCounts": {
    },
  • "activeExternalDatasourceCount": 0,
  • "brokenExternalDatasourceCount": 0,
  • "browserSessionLimit": 0,
  • "activeBrowserSessionCount": 0,
  • "activeGoogleCredentials": {
    },
  • "activeMicrosoftCredentials": {
    },
  • "licenseValidTo": 0,
  • "supportValidTo": 0
}