Listing Oracle Radio WebSocket Channel Users
Send a LIST_CHANNEL_USERS message to list users with at least one active WebSocket session subscribed to a Radio channel.
Permissions and Prerequisites
The following permissions and prerequisites apply to this operation.
| Requirement | Value |
|---|---|
| Authentication | Complete the supported authentication path for the client before sending this operation. See authentication. |
| Radio permission | Requires radio.channel.subscribe. |
| Channel access | Request only a channel that the authenticated user is authorized to access. |
| Session state | The WebSocket connection must be open. The response describes users currently connected to the channel, not saved subscriptions. |
Important
Current location is sensitive. Use, display, and store it only for an authorized operational purpose and in accordance with applicable policy. When no current location is available, the response omits
Current location is sensitive. Use, display, and store it only for an authorized operational purpose and in accordance with applicable policy. When no current location is available, the response omits
location.Request
Send the LIST_CHANNEL_USERS message as a JSON text message.
| Name | Data type | Required | Default | Constraints | Description |
|---|---|---|---|---|---|
type | string | Yes | None | Must be LIST_CHANNEL_USERS. | Identifies the channel-user list operation. |
channel | string | Yes | None | Channel name. | Channel for which to list connected users. |
{
"type": "LIST_CHANNEL_USERS",
"channel": "operations"
}
Responses
The following table lists the messages the client can receive and explains their purpose.
| Message type | Kind | Description |
|---|---|---|
CHANNEL_USERS | Direct response | Returns connected user identifiers, display names, current locations when available, and the count for the channel. |
ERROR | Denial or error | Indicates a permission, identity-domain, missing-channel-name, validation, or processing failure. |
CHANNEL_USERS Response
The following table describes the response properties, their data types, and whether they are required.
| Name | Data type | Required | Description |
|---|---|---|---|
type | string | Yes | Response type. The value is CHANNEL_USERS. |
channel | string | Yes | Channel name. |
users | array of strings | Yes | Usernames of connected users. |
userDisplayNames | object | Yes | Display names keyed by username. |
userDetails | array of objects | Yes | Authenticated user identities and their latest unexpired current locations. |
userDetails[].username | string | Yes | Username. |
userDetails[].userId | string | Yes | Radio user identifier. |
userDetails[].displayName | string | Yes | User display name. |
userDetails[].location | object | No | Latest unexpired current location. Omitted when no current location is available. |
userDetails[].location.latitude | number | When location is an object | Latitude of the current location. |
userDetails[].location.longitude | number | When location is an object | Longitude of the current location. |
userDetails[].location.timestamp | string | When location is an object | Date and time of the current location in ISO 8601 format. |
count | integer | Yes | Number of connected users returned. |
{
"type": "CHANNEL_USERS",
"channel": "operations",
"users": ["dispatcher1", "field-unit-1", "field-unit-2"],
"userDisplayNames": {
"dispatcher1": "Dispatch One",
"field-unit-1": "Field Unit One",
"field-unit-2": "Field Unit Two"
},
"userDetails": [
{
"username": "dispatcher1",
"userId": "user-dispatcher1",
"displayName": "Dispatch One"
},
{
"username": "field-unit-1",
"userId": "user-field-unit-1",
"displayName": "Field Unit One",
"location": {
"latitude": 37.77,
"longitude": -122.41,
"timestamp": "2026-08-24T12:00:00Z"
}
},
{
"username": "field-unit-2",
"userId": "user-field-unit-2",
"displayName": "Field Unit Two"
}
],
"count": 3
}