Enums
Every status and identifier value, and which endpoint emits it.
Task status
eligibility-result, the endpoint these docs poll, reports these verbatim. task-status collapses the in-flight ones and renames
the terminal one.
| Value | On eligibility-result | On task-status | Meaning |
|---|---|---|---|
IN_QUEUE | yes | as PROCESSING | Accepted, not yet started. |
NAVIGATING_WEBSITE | yes | as PROCESSING | The whole exchange with the payer. Most of the wait is spent here. |
EXTRACTING_DATA | yes | as PROCESSING | Parsing the payer's response. Also used when the task finished before its result row existed. |
PROCESS_COMPLETE | yes | as COMPLETE | Finished. |
CANCELLED | yes | yes | Stopped before finishing. |
FAILED | yes | yes | The task failed. |
The three terminal values are the ones to branch on. The set of in-flight
statuses can grow, so test for membership of
{PROCESS_COMPLETE, CANCELLED, FAILED} rather than against the others: a
status you have never seen should make your client wait, not make it read a
result that is not there.
CHECKING_ELIGIBILITY is in the enum but never emitted
It exists in the status enum and appears in older integration notes, but the only two places that would set it are commented out, so no task ever reaches it. Treat it as dead: do not branch on it, and do not wait for it. Listed here only because you will meet the name in the codebase.
The finished state has two names
eligibility-result says PROCESS_COMPLETE; task-status says COMPLETE. They are the same
state. Do not mix the two endpoints in one client. See why not
task-status.
Search-all status
Reported in search_all_status, alongside status, not instead of it.
| Value | Meaning |
|---|---|
SEARCH_ALL_PROCESSING | Payers are still reporting in. |
SEARCH_ALL_COMPLETE | Enough payers have answered; see how completion is decided. |
NOT_SEARCH_ALL | Internal only. Single-payer tasks return null here, not this value. |
On a search-all the top-level status is mapped into the same vocabulary, so
it too can read SEARCH_ALL_PROCESSING or SEARCH_ALL_COMPLETE. Poll
search_all_status; it is derived from the payers that have answered rather
than from the parent task.
Result status
The per-payer outcome, on eligibility_result.status and on each
aggregated_results entry. This is the field to branch on.
| Value | Meaning | is_eligible |
|---|---|---|
found | Member found. Read is_eligible for the answer. | true or false |
member_found | Older synonym of found; still counted as a hit in search-all tallies. | true or false |
member_not_found | No member matches that identifier at this payer. | false |
invalid_credentials | The clinic's portal login was rejected. | absent |
tpa_not_configured | No credentials on file for this payer. | false, see below |
backoff | Too many recent credential failures; not attempted. | absent |
failed | Ran and did not complete. | absent |
error | An unexpected error while running the check. | absent |
delegated_to_search_all_pool | Search-all routing bookkeeping, not a payer result. | absent |
Do not read is_eligible on a non-answer
tpa_not_configured means the portal was never queried, so no determination was made. The field
does not reliably say so: inside aggregated_results these entries carry data.is_eligible: false, which is indistinguishable from a real negative. Branch on status, not on is_eligible.
See search-all.
delegated_to_search_all_pool appears on every search-all
It reports how a search-all was routed rather than what a payer said, and it is not something to
branch on. Listed here because a client that switches exhaustively on status and throws on the
default will hit it constantly. Ignore statuses you do not recognise.
Identifier types
Sent as id_type on create-task. Per-payer support is in the
TPA matrix.
| Value | id_value is |
|---|---|
EMIRATESID | Emirates ID, 784-YYYY-XXXXXXX-D. The default, and the only one every payer accepts. |
CARDNUMBER | Member id or card number as printed on the insurance card. |
DHAMEMBERID | Regulator-issued DHA member id. |
POLICYNUMBER | Policy number. Nextcare and Lifeline only. |
Visit types
There is no global visit-type enum: each payer accepts its own list, and MedNet and Daman use the field for more than the inpatient / outpatient split. Every accepted value per payer is on the TPA matrix.
The values common to most payers:
OUTPATIENT, INPATIENT, DAYCASE, MATERNITY, DENTAL, OPTICAL,
PSYCHIATRY, WELLNESS, EMERGENCY.
error_type
Failure payloads carry an error_type, a stable identifier for the failure,
for example MemberNotFoundError or TPAInvalidCredentialsError. Quote it
when you contact support about a specific task.
It is not a public enum. New classes appear and existing ones get renamed without notice. Branch
on status; log error_type.