Recipient: answer a status check
The answer to a status request, delivered to the sender that asked. The x-hcx-status in the protected header says where the message you asked about got to.
The payload is an empty string.
Business purpose
It separates "did my message arrive" from "what did the payer decide". A sender learns whether a quiet case is still held by the exchange, has reached the recipient, or is dead, without resubmitting it and creating a duplicate.
When to use
Every participant that sends /v1/status hosts this path. It carries the answer to your status request.
Preconditions
- You sent
/v1/statusand kept track of which request it asked about. - Your callback URL is registered and answers
202within 30 seconds.
Postconditions
Read x-hcx-status in the header. request.dispatched means the message reached the recipient, and request.queued means NHCX still holds it. request.stopped means the request is dead, so a retry needs a new correlation ID. Answer 202.
Common mistakes
- Expecting a bundle. The payload is an empty string.
- Matching on the original request's correlation ID instead of your status request's.
- Retrying a stopped request on its old correlation ID.
Best practices
- Keep every
API_call_IDyou send. Without it you cannot ask the question at all. - Act on
request.stoppedat once, and treatrequest.dispatchedas a reason to wait for the payer. - Ask from a support screen when a case has gone quiet for longer than the payer's expected turnaround, not on a timer.
Related scenario
A pre-authorisation has had no answer for longer than the payer's usual turnaround. The support screen sends /v1/status with that request's API_call_ID as the correlation ID. The answer arrives here with an empty payload and x-hcx-status request.stopped, so the desk knows the request is dead rather than slow, and resubmits it with a fresh correlation ID.
Specification
Chapter NHCX adapter (Optional) of the NHCX integration specification. Every NHCX call carries the access token from the session call in a header named Example These fields go in the JWE protected header of Key management algorithm. Always Example Content encryption algorithm. Always Example Your participant code. Mandatory on the envelope. Example The recipient's. For a provider, the processor code from the policy lookup. Mandatory on the envelope. Example Fresh on every message, including responses. Mandatory on the envelope. Example The thread that ties a request to its answers. The correlation ID rule says when to reuse it. Mandatory on the envelope. Example The time the message was made. Timestamp gives the format. Mandatory on the envelope. Example Where this message stands. Status words lists the values. Mandatory on the envelope. Example Always One of Read Authorizations
bearer_authapiKeyRequiredbearer_auth, as the word Bearer, a space and the token. NHCX reads bearer_auth, not Authorization.Bearer <access token>Protected header
payload, not as HTTP headers. Building and sending a JWE shows how to prepare and encrypt the payload, and Receiving a callback how to decrypt one.algstringRequiredRSA-OAEP-256: the content key is wrapped with the recipient's RSA public key.RSA-OAEP-256encstringRequiredA256GCM.A256GCMx-hcx-sender_codestringRequired<participant code>x-hcx-recipient_codestringRequired<recipient code>x-hcx-api_call_idstringRequired<uuid>x-hcx-correlation_idstringRequired<correlation id>x-hcx-timestampstringRequired<iso timestamp>x-hcx-statusstringRequiredresponse.completeBody
typestringRequiredJWEPayload. Every response (on_) call sends it beside payload.JWEPayloadpayloadstringRequiredResponses
200x-hcx-status from the protected header.timestampstringapi_call_idstringcorrelation_idstringerrorobjecterror.codestringerror.messagestring
Callbacks
- NHCX delivers this call to the participant, on the participant's own
/v1/on_status, not back to you. Sender receives the status answer.