DocumentationBlogSupport
Log inSign up
Log inSign up
BlogSupport
Build
Getting StartedPlatform Introduction
Embedded Apps
What's NewOverviewDeveloper GuideSidebar API Quick StartSubmission Checklist for Embedded Apps
Design Guidelines
MessagingMeetingsDevicesSidebarSidebar on Mobile
API Reference
BotsButtons and CardsIntegrationsBYODSService AppsService App GuestsService Apps G2GGuest IssuerWidgetsWebex ConnectLogin with WebexInstant ConnectInstant Connect Meeting LinksDeveloper SandboxBeta ProgramSubmit Your AppSupport PolicyFAQs
APIs
API Behavior ChangesPartners API GuideXML API DeprecationAccess the APIREST API BasicsCompliance
Webex APIs
Reference
Data Sources
Admin
OverviewAdmin APIsHybrid ServicesAuthentication
Guides
Hybrid ServicesWebhooksReal-time File DLP BasicsProvisioning APIsBackground ImagesAudit Events Error Reference
Reference
Admin Audit EventsAuthorizationsEventsGroupsHistorical AnalyticsHybrid ClustersHybrid ConnectorsLicensesMeeting QualitiesOrganization ContactsOrganizationsPartner ManagementPartner Reports/TemplatesPartner TagsPeopleRecording ReportRecordingsReport TemplatesReportsResource Group MembershipsResource GroupsRolesSecurity Audit EventsSession TypesSettingsSpace ClassificationsTracking CodesWorkspace LocationsWorkspace Metrics
Webex Calling Beta
Overview
Guides
Integrations and AuthorizationMetadata and Samples
Webex Calling
OverviewSDKs and ToolsWhat's New
Guides
Integrations and AuthorizationProvisioning APIsMetadata and SamplesBackground Images
Reference
Call ControlsCall RoutingCall Settings For MeCalling Service SettingsClient Call SettingsConference ControlsConverged RecordingsDECT Devices SettingsDevice Call SettingsDevicesEmergency Services SettingsFeatures: Announcement PlaylistFeatures: Announcement RepositoryFeatures: Auto AttendantFeatures: Call ParkFeatures: Call PickupFeatures: Call QueueFeatures: Call RecordingFeatures: Customer Experience EssentialsFeatures: Hunt GroupFeatures: Operating ModesFeatures: Paging GroupFeatures: Single Number ReachLocation Call SettingsLocation Call Settings: Call HandlingLocation Call Settings: SchedulesLocation Call Settings: VoicemailLocationsNumbersPSTNPartner Reports/TemplatesPeopleRecording ReportReportsReports: Detailed Call HistorySend Activation EmailUser Call SettingsVirtual Line Call SettingsWorkspace Call SettingsWorkspaces
Webex for Broadworks
Overview
Guides
Integrations and AuthorizationDeveloper's Guide
Reference
BroadWorks Billing ReportsBroadWorks EnterprisesBroadWorks SubscribersBroadWorks Workspaces
Webex for Wholesale
Overview
Guides
Developer's Guide
Reference
Wholesale Billing ReportsWholesale Provisioning
Webex for UCM
Guides
Integrations and Authorization
Reference
UCM Profile
Contact Center
Overview
Reference
Data Sources
Customer Journey Data
Overview
Guides
Getting StartedFAQ
Devices
Overview
Guides
Devices
Reference
Device Call SettingsDevice ConfigurationsDevicesWorkspace LocationsWorkspace MetricsWorkspace PersonalizationWorkspacesxAPI
Directory Services
Reference
Domain ManagementIdentity Organization
Meetings
Overview
Guides
Integrations and AuthorizationWebhooksWebinar GuideMeeting Resource Guide
Reference
Meeting ChatsMeeting Closed CaptionsMeeting InviteesMeeting MessagesMeeting ParticipantsMeeting PollsMeeting PreferencesMeeting Q and AMeeting QualitiesMeeting TranscriptsMeetingsMeetings Summary ReportPeopleRecording ReportRecordingsSession TypesTracking CodesVideo MeshWebhooks
Messaging
Overview
Guides
BotsIntegrations and AuthorizationWebhooksButtons and Cards
Reference
Attachment ActionsEventsMembershipsMessagesPeopleRoom TabsRoomsTeam MembershipsTeamsWebhooks
SCIM 2
Overview
Reference
SCIM 2 BulkSCIM 2 GroupsSCIM 2 Users
Workspace Integrations
OverviewTechnical DetailsControl Hub Features
Webex Status API
Full API Reference
Admin Audit EventsAttachment ActionsAuthorizationsBroadWorks Billing ReportsBroadWorks EnterprisesBroadWorks SubscribersBroadWorks WorkspacesCall ControlsCall RoutingCall Settings For MeCalling Service SettingsClient Call SettingsConference ControlsConverged RecordingsDECT Devices SettingsData SourcesDevice Call SettingsDevice ConfigurationsDevicesDomain ManagementEmergency Services SettingsEventsFeatures: Announcement PlaylistFeatures: Announcement RepositoryFeatures: Auto AttendantFeatures: Call ParkFeatures: Call PickupFeatures: Call QueueFeatures: Call RecordingFeatures: Customer Experience EssentialsFeatures: Hunt GroupFeatures: Operating ModesFeatures: Paging GroupFeatures: Single Number ReachGroupsGuests ManagementHistorical AnalyticsHybrid ClustersHybrid ConnectorsIdentity OrganizationIssuesLicensesLocation Call SettingsLocation Call Settings: Call HandlingLocation Call Settings: SchedulesLocation Call Settings: VoicemailLocationsMeeting ChatsMeeting Closed CaptionsMeeting InviteesMeeting MessagesMeeting ParticipantsMeeting PollsMeeting PreferencesMeeting Q and AMeeting QualitiesMeeting TranscriptsMeetingsMeetings Summary ReportMembershipsMessagesNumbersOrganization ContactsOrganizationsPSTNPartner ManagementPartner Reports/TemplatesPartner TagsPeopleRecording ReportRecordingsReport TemplatesReportsReports: Detailed Call HistoryResource Group MembershipsResource GroupsRolesRoom TabsRoomsSCIM 2 BulkSCIM 2 GroupsSCIM 2 UsersSecurity Audit EventsSend Activation EmailSession TypesSettingsSiteSpace ClassificationsTeam MembershipsTeamsTracking CodesUCM ProfileUser Call SettingsVideo MeshVirtual Line Call SettingsWebhooksWholesale Billing ReportsWholesale ProvisioningWorkspace Call SettingsWorkspace LocationsWorkspace MetricsWorkspace PersonalizationWorkspacesxAPI
API Changelog
SDKs
Space Meetings Migration
Calling
Introduction
Platform
Web
IntroductionQuickstart
Basics
AuthorizationCore ConceptsCalls
Advanced Features
Call SettingsContactsSupplementary ServicesVoicemailBackground Noise Reduction
Kitchen Sink
Meetings
Introduction
Platform
Web
IntroductionQuickstart
Basics
AuthorizationJoin a MeetingMigration To Improved MeetingsPasswords & CaptchasUnified Space Meetings
Advanced Features
Advanced ControlsDialing In and OutStreams & EffectsVideo Resolution
Multistream
Multistream Comprehensive GuideMultistream Quickstart
Migrating SDK V2 to V3
iOSAndroidBrowserNode.jsClick to Call
Developer CommunityCertifications

Workspace Integrations

Integration-provided Features in Control Hub

Workspace integrations can also provide new functionality in Control Hub. To achieve this, integrations can mark themselves as providing features, which are contracts integrations can specify that they support. Integrations that provide features are highlighted on the integrations page, and when activated, they enhance functionality provided in other areas of Control Hub.

Control Hub supports integration-provided digital signage and Room Navigator persistent web apps. When an integration that is marked as providing digital signage is enabled, it's available as a service in the bulk and single-device digital signage configuration modals. Read more about configuring digital signage on Webex Boards, Room, and Desk series devices here. Similarly, integrations providing Room Navigator persistent web apps appear in the persistent web app configuration modals. Learn how to configure a persistent web app on a Room Navigator device here.

anchorAdding feature support to an integration

anchor

To register an integration as providing a feature, a new features list must be added to the manifest. Adding a feature to this list places requirements on what information it must provide and the actions it needs to support.

Providing features may also require specific permissions. Digital signage requires the spark-admin:devices_digital_signage scope and persistent web apps require the spark-admin:devices_pwa scope.

Example

{
  "apiAccess": [
    {
      "scope": "spark-admin:devices_digital_signage",
      "access": "required"
    },
    {
      "scope": "spark-admin:devices_pwa",
      "access": "required"
    }
  ],
  "features": ["digital_signage", "persistent_web_app"]
  // ...
}

Manifest Details

FieldRequired / OptionalValue spaceDescription
featuresOptionalArrayThe list of features supported: digital_signage, persistent_web_app

Attention: Adding a feature to the manifest grants the integration access to new management APIs. An integration providing digital signage or persistent web apps is not fully provisioned until it uses the corresponding feature's management API to provide a configuration object. Integrations should upload configurations for the features they provide shortly after being provisioned. If a feature is added to an existing manifest, ensure that configurations are provided to existing installations by listening for the updateApproved action. Consider adding a periodic check to your integration verifying the feature configurations, in case of failures when storing the configurations or lost updateApproved actions.

anchorDigital Signage

anchor

Adding the digital_signage feature and the spark-admin:devices_digital_signage scope to a manifest grants the integration access to a new API. The new API lets the integration provide details regarding the digital signage service it provides.

For integrations providing signage, the link to this API is contained in the signageUrl property of the provisioning and updateApproved JWT tokens. This API allows the integration to create, read, update, and delete the digital signage configuration required by the integration.

Add Signage Configuration

A PUT on the signageUrl endpoint should contain the following payload:

PUT {signageUrl}
{
  "signageUrl": "... signage URL ...",
  "crossLaunch": {
    "manageContent": {
      "url": "... cross-launch URL to manage content ..."
    },
    "assignContent": {
      "url": "... cross-launch URL to assign content ..."
    }
  }
}

This makes the integration available as a digital signage provider in Control Hub.

Configuration Details

FieldRequired / OptionalValue spaceDescription
signageUrlRequiredURLThe provider signage URL. Can contain replacement values to allow the vendor to provide device-specific content.
crossLaunchMapOptionalCross-launch URLs for assigning content to devices. Shows up as actions in Control Hub.
crossLaunch.assignContentMapOptionalCross-launch URL for administering devices selected in Control Hub.
crossLaunch.assignContent.urlRequiredURLThe URL to post the assign content cross-launch action JWT to.
crossLaunch.manageContentMapOptionalCross-launch URL for launching to the integration from the integration details page in Control Hub.
crossLaunch.manageContent.urlRequiredURLThe URL to post the manage content cross-launch action JWT to.

Signage URL Replacement Values

Webex can provide integrations information about the device displaying the digital signage screen by adding it to the URL.

Example

  • URL from integration / signage provider:

https://signage.example.com/webex?deviceId=$(deviceId)&deviceName=$(deviceName)

  • URL fetched by the device:

https://signage.example.com/webex?deviceId=Y2lzY29...&deviceName=Board%20Room&appId=ac6b6972-538e-11ec-bf63-0242ac130002

Replacement Value Details

Replacement ValueDescription
$(deviceId)The ID of the device: Y2lzY29...
$(deviceName)The name of the device: Board Room
$(deviceModel)The device model: Y2lzY29...
$(ownerId)The ID of the device's workspace
$(ownerName)The name of the device's workspace
$(organizationId)The organization ID: Y2lzY29...

The replacement values are resolved by the Webex backend before provisioning the URL to the devices.

Note that there is a _cisco_app_id URL parameter added at the end of the URL which is used internally by the Webex backend.

Cross-launch to the Integration

Control Hub also supports cross-launching to integrations. If the signage configuration specifies manageContent, an action button appears under the Actions drop-down on the integration details page that allows the administrator to launch the provider UI to do digital signage content management. If assignContent is specified, a button will show in the bulk and single-device digital signage modals that allows the administrator to manage signage for the selected devices. When a cross-launch is performed, a specific cross-launch JWT is sent to the URL, with the selected devices in a devices list:

POST {crossLaunch.assignContent.url}
{
  "jwt": "eyJhbGciOiJSUzI1NiJ9....",
  "devices": [
    {
      "deviceId": "Y2lzY29..."
    }
  ]
}

JWT
{
  "sub": "Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi8zYTZmZjM3My02OGE3LTQ0ZTQtOTFkNi1hMjc0NjBlMGFjNWM",
  "iat": 1516239022,
  "jti": "WTJselkyOXpjR0Z5YXpvdkw=",
  "appId": "6d93fe09-7130-4507-b261-3908b63428a4",
  "action": "crossLaunch"
}

Response:
{
  "redirectUrl": "... required redirectUrl that will be opened in a new tab by Control Hub ... ",
}
Retrieve Signage Configuration

Integrations can read the stored configuration by performing a GET on the signageUrl.

GET {signageUrl}
{
  "signageUrl": "... signage URL ...",
  "crossLaunch": {
    "manageContent": {
      "url": "... cross-launch URL to manage content ..."
    },
    "assignContent": {
      "url": "... cross-launch URL to assign content ..."
    }
  }
}
Update Signage Configuration

Integrations can update the digital signage configuration by performing a PUT on the JWT signageUrl. This automatically provisions the updated digital signage URL configuration to devices using the workspace integration for digital signage.

PUT {signageUrl}
{
  "signageUrl": "... signage URL ...",
  "crossLaunch": {
    "manageContent": {
      "url": "... cross-launch URL to manage content ..."
    },
    "assignContent": {
      "url": "... cross-launch URL to assign content ..."
    }
  }
}
Delete Signage Configuration

Integrations can delete the digital signage configuration by performing a DELETE on the JWT signageUrl. This removes the digital signage that was configured with the workspace integration from the devices.

DELETE {signageUrl}

anchorPersistent Web App

anchor

Managing the Persistent Web App (PWA) configuration requires the persistent_web_app feature entry and the spark-admin:devices_pwa scope. The link to the PWA configuration API is contained in the pwaUrl property of the provisioning and updateApproved JWT tokens. This API allows the integration to create, read, update, and delete the PWA configuration.

Add Persistent Web App Configuration

To configure PWA, perform a PUT on the pwaUrl endpoint with the following payload:

PUT {pwaUrl}
{
  "pwaUrl": "... PWA URL ...",
  "crossLaunch": {
    "manageContent": {
      "url": "... cross-launch URL to manage content ..."
    },
    "assignContent": {
      "url": "... cross-launch URL to assign content ..."
    }
  }
}

This makes the integration available as a PWA provider in Control Hub.

Integrations can also require access to JSXAPI by adding the spark-admin:devices_pwa_jsxapi scope. This will allow the integration to directly access a subset of the device's xAPI when running as a persistent web app, irrespective of the permissions granted to the integration itself. This is useful for applications where low latency is required (e.g. controlling the device's LED light). Learn more about JSXAPI.

Configuration Details

FieldRequired / OptionalValue spaceDescription
pwaUrlRequiredURLThe provider PWA URL. Can contain replacement values to allow the vendor to provide device-specific content.
crossLaunchMapOptionalCross-launch URLs for assigning content to devices. Shows up as actions in Control Hub.
crossLaunch.assignContentMapOptionalCross-launch URL for administering devices selected in Control Hub.
crossLaunch.assignContent.urlRequiredURLThe URL to post the assign content cross-launch action JWT to.
crossLaunch.manageContentMapOptionalCross-launch URL for launching to the integration from the integration details page in Control Hub.
crossLaunch.manageContent.urlRequiredURLThe URL to post the manage content cross-launch action JWT to.

Persistent Web App URL Replacement Values

Webex can provide integrations information about the Room Navigator displaying the persistent web app by adding it to the URL.

Example

  • URL from integration / PWA provider:

https://pwa.example.com/webex?deviceId=$(deviceId)&deviceName=$(deviceName)

  • URL fetched by the device:

https://pwa.example.com/webex?deviceId=Y2lzY29...&deviceName=Board%20Room&appId=ac6b6972-538e-11ec-bf63-0242ac130002

Replacement Value Details

Replacement ValueDescription
$(deviceId)The ID of the device: Y2lzY29...
$(deviceName)The name of the device: Board Room
$(deviceModel)The device model: Y2lzY29...
$(ownerId)The ID of the device's workspace
$(ownerName)The name of the device's workspace
$(peripheralSerial)The serial number of the Room Navigator displaying the persistent web app.
$(organizationId)The organization ID: Y2lzY29...

The replacement values are resolved by the Webex backend before provisioning the URL to the devices.

Note that there is a _cisco_app_id URL parameter added at the end of the URL which is used internally by the Webex backend.

Cross-launch to the integration

Control Hub also supports cross-launching to integrations. If the PWA configuration specifies manageContent, an action button appears under the Actions drop-down on the integration details page that allows the administrator to launch the provider UI to do content management. If assignContent is specified, a button will show in the bulk and single-device PWA modals that allows the administrator to manage PWA for the selected devices. When a cross-launch is performed, a specific cross-launch JWT is sent to the URL, with the selected devices in a devices list:

POST {crossLaunch.assignContent.url}
{
  "jwt": "eyJhbGciOiJSUzI1NiJ9....",
  "devices": [
    {
      "deviceId": "Y2lzY29..."
    }
  ]
}

JWT
{
  "sub": "Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi8zYTZmZjM3My02OGE3LTQ0ZTQtOTFkNi1hMjc0NjBlMGFjNWM",
  "iat": 1516239022,
  "jti": "WTJselkyOXpjR0Z5YXpvdkw=",
  "appId": "6d93fe09-7130-4507-b261-3908b63428a4",
  "action": "crossLaunch"
}

Response:
{
  "redirectUrl": "... required redirectUrl that will be opened in a new tab by Control Hub ... ",
}
Retrieve Persistent Web App Configuration

Integrations can read the stored configuration by performing a GET on the pwaUrl.

GET {pwaUrl}
{
  "pwaUrl": "... signage URL ...",
  "crossLaunch": {
    "manageContent": {
      "url": "... cross-launch URL to manage content ..."
    },
    "assignContent": {
      "url": "... cross-launch URL to assign content ..."
    }
  }
}
Update Persistent Web App Configuration

Integrations can update the PWA configuration by performing a PUT on the JWT pwaUrl. This automatically provisions the updated PWA URL configuration to devices using the workspace integration for PWA.

PUT {pwaUrl}
{
  "signageUrl": "... PWA URL ...",
  "crossLaunch": {
    "manageContent": {
      "url": "... cross-launch URL to manage content ..."
    },
    "assignContent": {
      "url": "... cross-launch URL to assign content ..."
    }
  }
}
Delete Persistent Web App Configuration

Integrations can delete the PWA configuration by performing a DELETE on the JWT pwaUrl. This removes the PWA that was configured with the workspace integration from the devices.

DELETE {pwaUrl}
In This Article
  • Adding feature support to an integration
  • Digital Signage
  • Persistent Web App

Connect

Support

Developer Community

Developer Events

Contact Sales

Handy Links

Webex Ambassadors

Webex App Hub

Resources

Open Source Bot Starter Kits

Download Webex

DevNet Learning Labs

Terms of Service

Privacy Policy

Cookie Policy

Trademarks

© 2025 Cisco and/or its affiliates. All rights reserved.