The call log (F10.2)
GET/api/calls/history
What HAPPENED, as opposed to GET /api/calls, which answers what is
happening right now. This is the list a call centre works from, so it is
paginated, filtered, and includes the calls NOBODY ANSWERED.
A missed call is not a log line: it is a customer who tried to reach the
business and did not. outcome=missed is therefore a work queue, and
the panel treats it as one — a tab beside "All", not a buried filter.
VISIBILITY IS THE CONVERSATION POLICY'S, EXPRESSED IN SQL:
conversations.view plus channel access. The live board can afford to
drop rows per row after loading; a paginated log cannot, because a page
of 25 that returns 3 rows with a total of 25 is a lie an operator acts
on.
OUTCOME IS DERIVED, not stored. answered means the call CONNECTED —
not that its status says ended, since an unanswered call ends too.
Adding an outcome column would be a second, denormalised copy of a
derived truth, and copies drift.
WAIT AND TALK ARE SEPARATE NUMBERS, because they answer different questions: how long the customer was left ringing, versus how long the conversation took. Collapsing them loses the only metric the customer personally experiences.
Request
Responses
- 200
- 401
- 403
- 422
The calls, most recent first.
Not authenticated. code: account_disabled means the member's seat was deactivated in this workspace: the session is over even though the token was not revoked (clients sign out and clean up).
The actor may not view conversations.
A filter outside the closed vocabulary. Refused rather than ignored: a silently dropped filter produces a page that looks filtered and is not, and somebody reads "no missed calls" off it.