Skip to main content

Events & Protocols

EthioConnect uses an event-driven architecture built on Apache Kafka. Services publish domain events to dedicated Kafka topics using a CloudEvents-inspired envelope. Consumers subscribe to these topics for real-time updates, analytics ingestion, and cross-service coordination.

Event Envelope

All events share a common envelope structure:

FieldTypeDescription
idstring (uuid)Unique event identifier.
typestringEvent type (e.g. room.created, presence.online).
sourcestringOriginating service (e.g. room-service).
tenant_idstring (uuid)Tenant that owns the resource.
room_idstring (uuid)Associated room (if applicable).
occurred_atstring (date-time)ISO-8601 timestamp.
dataobjectEvent-specific payload.

Kafka Topics

TopicEventsProducer
auth-eventsuser.registered, user.login, token.refreshedAuth Service
room-eventsroom.created, room.closed, room.session.ended, recording.*, moderation actionsRoom Service
presence-eventspresence.online, presence.offline, presence.idlePresence Service
qos-eventsqos.reportAnalytics Service (ingested from client SDK)

WebSocket Signaling

In addition to Kafka events, the platform provides real-time event delivery to connected clients via the WebSocket signaling protocol at /v1/ws. The signaling layer forwards room events, roster snapshots, and supports session resume for dropped connections.

See the individual pages for full schema details: