Every entity change is delivered in real time to connected clients. The mechanism differs for users (frontend) and services (background processors).Documentation Index
Fetch the complete documentation index at: https://iolite-2c826219.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
WebSocket protocol
All real-time communication happens over WebSocket using a JSON protocol with a type discriminator field.Events (Server → Client)
| Type | Recipient | Description |
|---|---|---|
| Entity Change | Users | Entity changed matching your subscription |
| Entity Change (with task) | Services | Entity change requiring acknowledgment |
| Entity Change Batch | Services | Batch of changes requiring acknowledgment |
| Subscription Result | Both | Subscribe success/failure |
| Subscription Refresh | Users | Entity left your subscription — refetch your list |
| Heartbeat | Both | Connection alive |
| Log Broadcast | Admins | Service log message |
Commands (Client → Server)
| Command | Description |
|---|---|
| Subscribe | Subscribe to entities matching a query |
| Unsubscribe | Stop receiving changes |
| Task Completion | Acknowledge processing complete (services only) |
| Lock / Unlock | Distributed lock management (services only) |
| Heartbeat | Keep-alive ping |
User data flow
User changes are fire-and-forget. Users don’t acknowledge receipt. If a user is offline when a change happens, they’ll get the current state when they reconnect and subscribe.
Subscription refresh
When an entity leaves a user’s subscription (e.g., an account’s workstream changes from “DenialManagement” to “None” while a user is viewing the denial queue), a refresh event is sent. This tells the client: “an entity you were watching no longer matches your query — refetch your list.”Service data flow
Key difference from users:
- Durable — messages persist even if the service is offline
- Acknowledged — services must confirm processing
- Retried — unacknowledged messages are re-delivered after a timeout