Which connected channels can reach this contact
GET/api/contacts/:contact/reachability
Every channel this tenant has connected and this agent may work, with what may be done with THIS contact on each of them and — when nothing — why not.
The answer is COMPUTED PER REQUEST from the contact's addresses against
each channel's address kind. It is deliberately not a stored flag: a
has_whatsapp column is correct the day it is written and silently
wrong afterwards, and its only symptom is an agent's message landing
nowhere.
One channel can produce two rows — a WhatsApp number carries both a
conversation and a call, and those are two different permissions.
medium says which row is which. Voice rows are
App\Voice\CallAffordanceResolver's own answer, translated and not
re-decided, so this endpoint and GET /api/calls/lines cannot disagree.
Channels whose customer id is minted by the platform (Messenger,
Instagram, Telegram, LINE, Viber, WeChat, Zalo, X, Apple Messages for
Business, TikTok, Slack) appear with action: none and
reason: inbound_only. That is not a gap to be filled later: none of
those ids can be derived from a phone number or an email address, by us
or by anybody, so the customer has to write first. Comment/review
surfaces and the internal sources are not listed at all.
Requires Contact view.
Request
Responses
- 200
- 401
- 403
One row per channel (per medium).
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).
Authenticated but not allowed.