Python: Realtime
Publish to channels, replay missed messages, see presence and channels, open WebSockets with tickets and manage end-to-end encryption keys with the Python SDK.
await sovaria.stream_publish("room:42", {"text": "Hello!"})
missed = await sovaria.stream_replay("room:42", after=last_seen, limit=100)Methods
sovaria.e2ee_bootstrap_key
Create (or fetch) the active e2ee channel key.
await sovaria.e2ee_bootstrap_key(
channel: str,
*, ttl_seconds: int = 86400,
force_new: bool = False,
) -> dict[str, Any]Parameters
channelstrrequiredttl_secondsintoptionaldefault86400force_newbooloptionaldefaultFalse
- Returns
dict[str, Any]
sovaria.e2ee_get_active_key
Get the active e2ee key for a channel, wrapped for client_public_key.
Pass an RSA-OAEP (SHA-256) public key as PEM or base64 SPKI; the response's wrapped_key_b64 decrypts with the matching private key.
await sovaria.e2ee_get_active_key(
channel: str,
client_public_key: str | None = None,
) -> dict[str, Any]Parameters
channelstrrequiredclient_public_keystr | NoneoptionaldefaultNone
- Returns
dict[str, Any]
sovaria.e2ee_get_key
Get key material by channel/key_id, wrapped for client_public_key.
await sovaria.e2ee_get_key(
channel: str,
key_id: str,
client_public_key: str | None = None,
) -> dict[str, Any]Parameters
channelstrrequiredkey_idstrrequiredclient_public_keystr | NoneoptionaldefaultNone
- Returns
dict[str, Any]
sovaria.e2ee_list_keys
List key metadata for a channel.
await sovaria.e2ee_list_keys(channel: str) -> dict[str, Any]Parameters
channelstrrequired
- Returns
dict[str, Any]
sovaria.e2ee_revoke_key
Revoke an active or historical channel key.
await sovaria.e2ee_revoke_key(
channel: str,
*, key_id: str | None = None,
reason: str | None = None,
) -> dict[str, Any]Parameters
channelstrrequiredkey_idstr | NoneoptionaldefaultNonereasonstr | NoneoptionaldefaultNone
- Returns
dict[str, Any]
sovaria.e2ee_rotate_key
Rotate e2ee key material for a channel.
await sovaria.e2ee_rotate_key(
channel: str,
*, ttl_seconds: int = 86400,
) -> dict[str, Any]Parameters
channelstrrequiredttl_secondsintoptionaldefault86400
- Returns
dict[str, Any]
sovaria.issue_realtime_ws_ticket
Issue a short-lived ticket for opening a Pulse websocket on one channel.
await sovaria.issue_realtime_ws_ticket(channel: str) -> strParameters
channelstrrequired
- Returns
str
sovaria.realtime_ws_url
Build the gateway websocket URL for a channel with scope query.
sovaria.realtime_ws_url(
channel: str,
*, ticket: str | None = None,
) -> strParameters
channelstrrequiredticketstr | NoneoptionaldefaultNone
- Returns
str
sovaria.realtime_ws_url_with_ticket
Issue a ticket and build the gateway websocket URL for a channel.
await sovaria.realtime_ws_url_with_ticket(channel: str) -> strParameters
channelstrrequired
- Returns
str
sovaria.stream_channels
List active realtime channels.
await sovaria.stream_channels() -> dict[str, Any]- Returns
dict[str, Any]
sovaria.stream_presence
Fetch presence for a realtime channel.
await sovaria.stream_presence(channel: str) -> dict[str, Any]Parameters
channelstrrequired
- Returns
dict[str, Any]
sovaria.stream_publish
Publish a realtime event through Pulse REST API.
await sovaria.stream_publish(
channel: str,
payload: dict[str, Any],
*, clock: dict[str, int] | None = None,
clock_delta: dict[str, int] | None = None,
) -> dict[str, Any]Parameters
channelstrrequiredpayloaddict[str, Any]requiredclockdict[str, int] | NoneoptionaldefaultNoneclock_deltadict[str, int] | NoneoptionaldefaultNone
- Returns
dict[str, Any]
sovaria.stream_replay
Replay events for a realtime channel.
await sovaria.stream_replay(
channel: str,
*, after: int = 0,
limit: int = 200,
) -> dict[str, Any]Parameters
channelstrrequiredafterintoptionaldefault0limitintoptionaldefault200
- Returns
dict[str, Any]
sovaria.stream_subscribe
Subscribe a client ID to a realtime channel.
await sovaria.stream_subscribe(
channel: str,
client_id: str,
) -> dict[str, Any]Parameters
channelstrrequiredclient_idstrrequired
- Returns
dict[str, Any]
sovaria.stream_unsubscribe
Unsubscribe a client ID from a realtime channel.
await sovaria.stream_unsubscribe(
channel: str,
client_id: str,
) -> dict[str, Any]Parameters
channelstrrequiredclient_idstrrequired
- Returns
dict[str, Any]