A presence record describing a member's membership in a realtime channel — who is connected, with what client metadata, and from when. Generalizes the presence models in Ably, Pusher, PubNub, Phoenix Presence, and LiveKit room participants.
{
"$id": "realtime-presence.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Realtime Presence",
"description": "A presence record describing a member's membership in a realtime channel — who is connected, with what client metadata, and from when. Generalizes the presence models in Ably, Pusher, PubNub, Phoenix Presence, and LiveKit room participants.",
"type": "object",
"required": [
"channel",
"clientId",
"action"
],
"properties": {
"channel": {
"type": "string",
"description": "Channel on which the presence event occurred."
},
"clientId": {
"type": "string",
"description": "Identifier of the user or client whose presence is being reported."
},
"connectionId": {
"type": "string",
"description": "Provider-assigned identifier for the transport connection backing this presence."
},
"action": {
"type": "string",
"description": "The presence transition this record represents.",
"enum": [
"enter",
"leave",
"update",
"present",
"absent"
]
},
"data": {
"type": "object",
"description": "Application-defined presence metadata associated with the member (e.g., display name, avatar URL, status, location).",
"additionalProperties": true
},
"since": {
"type": "string",
"format": "date-time",
"description": "Time at which the member entered the channel (only for 'present'/'update')."
},
"occurredAt": {
"type": "string",
"format": "date-time",
"description": "Time the presence event occurred."
}
},
"additionalProperties": false
}