Room Events
Room lifecycle events published to the room-events Kafka topic using a CloudEvents-inspired envelope.
Source: Room Service
Envelope
All room events are wrapped in a common envelope:
| Field | Type | Required | Description |
|---|---|---|---|
id | string (uuid) | Yes | Unique event identifier. |
type | string | Yes | Event type (e.g. room.created). |
source | string | Yes | Originating service. |
tenant_id | string (uuid) | No | Tenant identifier. |
room_id | string (uuid) | No | Room identifier. |
occurred_at | string (date-time) | Yes | ISO-8601 timestamp. |
data | object | No | Event-specific payload. |
Events
room.created
Emitted when a new room is created.
| Field | Type | Description |
|---|---|---|
room.id | string (uuid) | Room identifier. |
room.name | string | Room display name. |
room.slug | string | URL-safe slug. |
room.max_participants | integer | Maximum allowed participants. |
created_by | string (uuid) | User who created the room. |
room.closed
Emitted when a room is closed.
| Field | Type | Description |
|---|---|---|
reason | string | Reason for closure. |
room.session.ended
Emitted when a participant's session in a room ends.
| Field | Type | Required | Description |
|---|---|---|---|
session_id | string (uuid) | Yes | Session identifier. |
user_id | string (uuid) | Yes | Participant user ID. |
joined_at | string (date-time) | No | When the user joined. |
left_at | string (date-time) | No | When the user left. |
duration_s | integer | Yes | Session duration in seconds. |
leave_reason | string | No | Reason for leaving. |
platform | string | No | Client platform (e.g. web, ios, android). |
used_turn_relay | boolean | No | Whether TURN relay was used. |
recording.started
| Field | Type | Description |
|---|---|---|
recording_id | string (uuid) | Recording identifier. |
recording.completed
| Field | Type | Required | Description |
|---|---|---|---|
recording_id | string (uuid) | Yes | Recording identifier. |
duration_s | integer | Yes | Recording duration in seconds. |
size_bytes | integer | Yes | Recording file size. |