Passer au contenu

Errors

Every EDFlow error code: request-level HTTP status on the signed ingest profile, per-event result codes, and REST API problem details (RFC 9457) with retryable flags and the retry action to take first.

Cette page n'est pas encore offerte en français; elle est affichée en anglais.

REST API: problem details

Every non-2xx response on /v1/* is application/problem+json (RFC 9457):

{
  "type": "https://…/problems/insufficient_scope",
  "title": "Insufficient scope",
  "status": 403,
  "detail": "This operation needs the requests:write scope. Your token has: requests:read encounters:read.",
  "code": "insufficient_scope",
  "requestId": "rid_01J8ZQ4M2B7V6T1K9C3X5N0P8R",
  "retryable": false,
  "requiredScopes": ["requests:write"]
}
  • Switch on code, never on the text.
  • retryable says whether a retry can succeed; retryAction says what to do first: reauthenticate (new token), resign (new timestamp, delivery id and signature) or wait (honour Retry-After).
  • Validation failures add errors[] with JSON Pointer paths.
  • detail never echoes secrets, tokens, visit numbers or payload values.
  • FHIR routes return an OperationOutcome when you ask for application/fhir+json; raw HL7 returns an ACK (see HL7 v2); the OAuth endpoints use RFC 6749 error bodies.
  • Quote requestId in support tickets.

Request-level errors

HTTPCodesRetryableDo this
400invalid_request, malformed_json, invalid_cursor, idempotency_key_required, site_required, batch_too_largeNoFix the request
401unauthenticated, invalid_token, token_revoked, wrong_environment, mtls_requiredNoFix the credential or host
401token_expiredYes, reauthenticateNew token, same request
401missing_signature, invalid_signature, unknown_source (signed profile)NoCheck the key, version and body bytes
401timestamp_out_of_window, delivery_replayed (signed profile)Yes, resignRe-sign with a new timestamp and delivery id
403insufficient_scope, site_not_allowed, capability_disabled, ip_not_allowed, client_disabled, org_suspended, source_disabledNoSee detail
404not_foundNoUnknown route or resource, or a resource at another site
405, 406method_not_allowed, not_acceptableNo
409idempotency_in_progressYes, after a short waitThe same key is still running
409idempotency_conflict, conflictNoEvent id reused with a different payload; or a state conflict
410goneNoPast its sunset date
413, 415payload_too_large, unsupported_media_typeNoSplit or fix the content type
422validation_failed, idempotency_key_reused, event_rejected, processing_id_not_allowed, phi_suspected, transaction_not_supported, unsupported_encodingNoFix and resend
429rate_limitedYes, waitHonour Retry-After
500internal_errorYes, with backoffQuote the requestId
503unavailableYes, waitKeep it queued; honour Retry-After

Per-event result codes

Inside a 200 batch response, each event has its own result. Rejected events carry one of these codes and a path:

CodeRetryableCause
invalid_envelopeNoEnvelope field missing or malformed, or an id containing an identifier
unsupported_spec_versionNospecVersion isn't supported
unknown_event_typeNoNot in the catalogue
event_type_not_allowed, site_not_allowed, source_kind_not_allowedNoYour source isn't allowed to send it
simulator_disabledNoSimulator events outside a synthetic deployment
encounter_requiredNoThe type needs encounter
invalid_dataNodata failed validation; path points at the field
prohibited_fieldNoA prohibited key anywhere in the event
idempotency_conflictNoThe id was used with a different payload
occurred_at_in_future, occurred_at_too_oldNoMore than 10 minutes ahead, or more than 90 days old
processing_errorYesTransient; resend that event (same id) later

The product's error catalogue

Errors raised by the product itself, with the text people see:

CodeGroupeCe que les gens voient
unauthenticatedBase—
forbiddenBaseVous n'avez pas accès à cette page. Demandez-le à votre gestionnaire de l'urgence si vous en avez besoin.
not_foundBaseNous n'avons pas trouvé cette page.
not_openedBase—
invalid_argumentBase—
out_of_rangeBase—
rate_limitedBase—
conflictBaseQuelqu'un d'autre a modifié cet élément. Passez en revue ses changements et réessayez.
access_endedBase—
read_onlyBase—
identity_unconfirmedBase—
mfa_requiredBase—
mfa_enrolment_requiredBase—
session_lockedBase—
reauth_requiredBase—
forbidden_in_productionBase—
sharing_unavailableBase—
limit_reachedBase—
code_category_cannot_notifyBase—
invalid_transitionBase—
undo_expiredBase—
last_managerBase—
approver_is_editorBase—
content_not_readyBase—
key_version_limitBase—
key_already_revealedBase—
provider_not_configuredBase—
password_policyBase—
invalid_codeBase—
flow_disabledBase—
forbidden_demoBase—
approval_requiredBase—
self_approvalBase—
verification_requiredBase—
verification_failedBase—
device_limitBase—
owner_onlyBase—
updates_pausedBase—
station_requiredBase—
budget_exhaustedBase—
conflict_of_interestBase—
policy_violationPlateforme d'intégration—
sod_violationPlateforme d'intégration—
affiliation_pendingPlateforme d'intégration—
attestation_requiredPlateforme d'intégration—
app_not_approvedPlateforme d'intégration—
in_usePlateforme d'intégration—
ai_disabledFonctions d'IA—
ai_unavailableFonctions d'IA—
ai_rate_limitedFonctions d'IA—
ai_budget_exhaustedFonctions d'IA—
ai_input_too_longFonctions d'IA—
ai_blockedFonctions d'IA—
ai_approval_invalidFonctions d'IA—
ai_approval_expiredFonctions d'IA—
ai_region_violationFonctions d'IA—
ai_language_not_readyFonctions d'IA—
ai_governance_incompleteFonctions d'IA—
ai_sample_unscrubbableFonctions d'IA—
ai_sample_not_syntheticFonctions d'IA—
ai_audio_too_longFonctions d'IA—
ai_opted_outFonctions d'IA—
ai_query_refused_differencingFonctions d'IA—
ai_review_conflictFonctions d'IA—
ai_brand_mismatchFonctions d'IA—

Dernière mise à jour le

Cette page vous a-t-elle été utile?

Sur cette page