The acting physician, including their live-queue presence.
The live video queue and the physician's own calls.
Patients waiting in the tenant's live queue right now.
Physicians of the tenant currently ready (fresh heartbeat).
Whether THIS physician currently counts among readyPhysicians — i.e.
their ready is fresh enough for the matcher to see. False while
busy/offline, and the tell-tale of a heartbeat that stopped.
The waiting patients, in position order.
The consult this physician is on or being rung for (ringing or
in_progress), or null when idle. When in_progress, call /room for
the LiveKit grant; when ringing, keep polling — the patient's client
is confirming.
This physician's booked appointments from now through the next 7 days,
soonest first. The full agenda with a chosen window is
GET /v1/physicians/{id}/agenda.
The messaging inbox.
Whether auto-assignment may hand this physician new threads (asyncAvailable).
Tenant threads waiting for a clinician (queued) — claimable. Oldest first.
This physician's open threads (active / resolve_requested), the ones
awaiting their reply first (then by last activity).
Tenant threads held by SOMEONE ELSE whose response SLA has lapsed —
takeover candidates. Empty when the rota is keeping up.
OptionaltruncatedLists that hit PHYSICIAN_WORKSPACE_LIST_CAP and were cut. Absent when every list is complete — the normal case; a clinic that fills one is a clinic that should page the corresponding list endpoint instead.
When this snapshot was taken — the clock waitedSeconds is relative to.
Everything a clinician's screen needs, in ONE call — the polling target of
GET /v1/physicians/{id}/workspace.Built for the integration this API is meant to make easy: a physician opens your portal and needs their presence, the live queue, the call they are on, today's appointments and their messaging inbox, refreshed every few seconds. Rather than fanning out across six reads and diffing, ask for the workspace and render it. Lists are capped at PHYSICIAN_WORKSPACE_LIST_CAP;
truncatednames any that were cut.