Matter Cluster 1364 — WebRTC Transport Requestor
Matter Cluster 1364 (0x0554) WebRTC Transport Requestor: attributes, commands, events, data types, shadow paths and bridge payload examples.
Matter Cluster 1364 — WebRTC Transport Requestor Cluster
Matter Cluster 1364, also written as 0x0554, is the WebRTC Transport Requestor Cluster.
The WebRTC transport requestor cluster provides a way for stream consumers (e.g. Matter Stream Viewer) to establish a WebRTC connection with a stream provider that implements the WebRTC Transport Provider Cluster.
Cluster Identity
| Field | Value |
|---|---|
| Cluster ID decimal | 1364 |
| Cluster ID hex | 0x0554 |
| Cluster name | WebRTC Transport Requestor |
| Cluster revision (Matter 1.6.1) | 2 |
| Role | application |
| Scope | Endpoint |
| PICS code | WEBRTCR |
| Typical endpoint | 1 |
Revision history
| Revision | Change |
|---|---|
| 1 | Initial version of the WebRTC Transport Requestor Cluster |
| 2 | Add multi stream support |
Shadow Path Format
Cluster 1364 values in the device shadow use this format:
endpoint_id / 1364 / attribute_id
Example:
{
"1/1364/0": []
}
| Part | Meaning |
|---|---|
1 | Endpoint ID |
1364 | WebRTC Transport Requestor cluster |
0 | CurrentSessions attribute |
Cluster 1364 Attributes
Cluster 1364 defines 1 attribute plus the global attributes. Conformance: M mandatory, O optional, a feature code means "mandatory when that feature is present", square brackets mean "optional when …".
| ID | Hex | Attribute | Type | Conformance | Access | Qualities | Default |
|---|---|---|---|---|---|---|---|
| 0 | 0x0000 | CurrentSessions | list of WebRTCSessionStruct | M | R (read: admin, fabric-sensitive) | — | — |
Global attributes
| ID | Hex | Attribute | Meaning |
|---|---|---|---|
| 65528 | 0xFFF8 | GeneratedCommandList | Response command IDs this server generates. |
| 65529 | 0xFFF9 | AcceptedCommandList | Command IDs this server accepts. |
| 65531 | 0xFFFB | AttributeList | Attribute IDs implemented. |
| 65532 | 0xFFFC | FeatureMap | Implemented optional features (see above). |
| 65533 | 0xFFFD | ClusterRevision | Cluster revision implemented; 2 for a Matter 1.6.1 device. |
Attribute Details
Attribute 0 / 0x0000 — CurrentSessions
Path example:
1/1364/0
This attribute is a list of WebRTCSessionStruct, which represents all the active WebRTC Sessions on this Node.
| Property | Value |
|---|---|
| Type | list of WebRTCSessionStruct |
| Conformance | M |
| Access | R (read: admin, fabric-sensitive) |
Example:
{
"1/1364/0": []
}
Cluster 1364 Commands
Cluster 1364 has 4 client-to-server commands and 0 responses.
| ID | Hex | Command | Direction | Conformance | Response | Description |
|---|---|---|---|---|---|---|
| 0 | 0x00 | Offer | client → server | M | status | This command provides the stream requestor with WebRTC session details. |
| 1 | 0x01 | Answer | client → server | M | status | This command provides the stream requestor with the WebRTC session details (i.e. |
| 2 | 0x02 | ICECandidates | client → server | M | status | — |
| 3 | 0x03 | End | client → server | M | status | This command notifies the stream requestor that the provider has ended the WebRTC session. |
AcceptedCommandList
The AcceptedCommandList attribute lists the command IDs the endpoint actually implements:
endpoint_id / 1364 / 65529
{
"1/1364/65529": [
0,
1,
2,
3
]
}
Before sending a Cluster 1364 command, check that the command ID exists in endpoint/1364/65529. Optional commands are only present when the matching feature is set in FeatureMap.
Bridge Command Payload Format
The bridge accepts Matter commands in this structure:
{
"message_id": "1",
"command": "device_command",
"args": {
"endpoint_id": 1,
"cluster_id": 1364,
"command_name": "Offer",
"payload": {},
"timed_request_timeout_ms": 1000
}
}
For Cluster 1364, always use "cluster_id": 1364. Payload keys are the command field names in lowerCamelCase. Octet-string fields are base64-encoded. timed_request_timeout_ms is required for timed commands and ignored otherwise.
Command: Offer
Purpose
This command provides the stream requestor with WebRTC session details. It is sent following the receipt of a SolicitOffer command or a re-offer initiated by the Provider. This command must respond with a response status of NOT_FOUND if the WebRTCSessionID does not match an entry in CurrentSessions, or if the matching entry's associated fabric and PeerNodeID do not match the accessing fabric and the Peer Node ID entry stored in the Secure Session Context of the session this command was received on.
Command Identity
| Field | Value |
|---|---|
| Command ID | 0 |
| Command hex | 0x00 |
| Command name | Offer |
| Direction | client → server |
| Conformance | M |
| Response | status |
| Access | (invoke: operate) |
Payload Fields
| ID | Field | Payload key | Type | Conformance | Constraint | Meaning |
|---|---|---|---|---|---|---|
| 0 | WebRTCSessionID | webRTCSessionID | WebRTCSessionID | M | — | — |
| 1 | SDP | sdp | string | M | — | — |
| 2 | ICEServers | iceServers | list of ICEServerStruct | O | max 10 entries | — |
| 3 | ICETransportPolicy | iceTransportPolicy | string | O | max length 16 | — |
Bridge Command Example
{
"message_id": "1",
"command": "device_command",
"args": {
"endpoint_id": 1,
"cluster_id": 1364,
"command_name": "Offer",
"payload": {
"webRTCSessionID": 0,
"sdp": "example"
}
}
}
Command: Answer
Purpose
This command provides the stream requestor with the WebRTC session details (i.e. Session ID and SDP answer), It is the next command in the Offer/Answer flow to the ProvideOffer command. This command must respond with a response status of NOT_FOUND if the WebRTCSessionID does not match an entry in CurrentSessions, or if the matching entry's associated fabric and PeerNodeID do not match the accessing fabric and the Peer Node ID entry stored in the Secure Session Context of the session this command was received on.
Command Identity
| Field | Value |
|---|---|
| Command ID | 1 |
| Command hex | 0x01 |
| Command name | Answer |
| Direction | client → server |
| Conformance | M |
| Response | status |
| Access | (invoke: operate) |
Payload Fields
| ID | Field | Payload key | Type | Conformance | Constraint | Meaning |
|---|---|---|---|---|---|---|
| 0 | WebRTCSessionID | webRTCSessionID | WebRTCSessionID | M | — | — |
| 1 | SDP | sdp | string | M | — | — |
Bridge Command Example
{
"message_id": "1",
"command": "device_command",
"args": {
"endpoint_id": 1,
"cluster_id": 1364,
"command_name": "Answer",
"payload": {
"webRTCSessionID": 0,
"sdp": "example"
}
}
}
Command: ICECandidates
Purpose
ICECandidates is a client-to-server command of the WebRTC Transport Requestor cluster.
Command Identity
| Field | Value |
|---|---|
| Command ID | 2 |
| Command hex | 0x02 |
| Command name | ICECandidates |
| Direction | client → server |
| Conformance | M |
| Response | status |
| Access | (invoke: operate) |
Payload Fields
| ID | Field | Payload key | Type | Conformance | Constraint | Meaning |
|---|---|---|---|---|---|---|
| 0 | WebRTCSessionID | webRTCSessionID | WebRTCSessionID | M | — | — |
| 1 | ICECandidates | iceCandidates | list of ICECandidateStruct | M | min 1 entries | — |
Bridge Command Example
{
"message_id": "1",
"command": "device_command",
"args": {
"endpoint_id": 1,
"cluster_id": 1364,
"command_name": "ICECandidates",
"payload": {
"webRTCSessionID": 0,
"iceCandidates": []
}
}
}
Command: End
Purpose
This command notifies the stream requestor that the provider has ended the WebRTC session.
Command Identity
| Field | Value |
|---|---|
| Command ID | 3 |
| Command hex | 0x03 |
| Command name | End |
| Direction | client → server |
| Conformance | M |
| Response | status |
| Access | (invoke: operate) |
Payload Fields
| ID | Field | Payload key | Type | Conformance | Constraint | Meaning |
|---|---|---|---|---|---|---|
| 0 | WebRTCSessionID | webRTCSessionID | WebRTCSessionID | M | — | — |
| 1 | Reason | reason | WebRTCEndReasonEnum | M | — | This field is one of the values in WebRTCEndReasonEnum. |
Bridge Command Example
{
"message_id": "1",
"command": "device_command",
"args": {
"endpoint_id": 1,
"cluster_id": 1364,
"command_name": "End",
"payload": {
"webRTCSessionID": 0,
"reason": 0
}
}
}
Cluster 1364 Events
Cluster 1364 defines no events.
SmartphoneKey Notes
- Cluster 1364 is not currently exposed by SmartphoneKey devices. This page documents the Matter 1.6.1 specification so that future devices can be interpreted without changes to the backend.
- Shadow paths follow
endpoint/1364/attribute; attribute values that the device reports as unreadable are written asn/a. - Attribute IDs, command IDs and enum values on this page come from the CSA Matter 1.6.1 data model; descriptions are condensed from the specification text.