List valid call disposition values (system + this org's custom)
GET /workflows/dispositions
Return every disposition value accepted by disposition_filters on the
new_call_disposition trigger - system values AND the caller org’s own
custom dispositions.
Each entry carries origin: system for the built-in vocabulary,
custom for an org-defined one (whose value is the stored
custom_{id} key, never the display name). category keeps its
existing meaning: sdr_selectable a rep can pick it, system_set only
the dialer backend writes it.
Authority for the system half is voice’s SDR_SELECTABLE_DISPOSITIONS
(voice/graph8_livekit/schemas/dispositions.py) plus the two system-set
values the dialer also emits (sdr_hangup, failed). That half is
inlined here and a parity test
(developer_api/tests/test_workflow_dispositions.py) fails the build if
voice adds a value that is not mirrored - the previous “mirror the change
here” comment was not enforced and silently went stale when busy was
added.
The custom half comes from voice’s GET /api/dialer/dispositions/{org_id},
with the org pinned server-side from the authenticated caller and echoed in
the X-Org-Id header voice’s tenant gate requires. Nothing about the
request body or query can influence which org is read.
Degraded mode: if voice is unreachable or errors, this returns the system
vocabulary alone with source='static_fallback' and logs a warning,
rather than failing the whole call. An agent that sees
source='static_fallback' should say it could not confirm custom
dispositions instead of asserting none exist.
Legacy aliases (positive/neutral/negative) are deliberately
absent: normalize_disposition rewrites them before storage, so a filter
on them could never match.
Authorizations
Parameters
Header Parameters
Responses
200
Successful Response
object
422
Validation Error