Stream verification status (SSE)
GET/v3/config/digital-wallet/openid/notifications/presentation-status/sse
Streams the status of one verification request over Server-Sent Events. The server sends the current status at once, then a frame for each change, and it ends the stream after a final status. Use it to show a live status while the holder answers the request, for example a Digital Credentials API request.
Authentication
Send the Authorization header (ApiKey <key> or Bearer <token>). The browser EventSource API cannot set request headers: get a one-time ticket with POST /v2/config/sse-ticket (body {"path": "/v3/config/digital-wallet/openid/notifications/presentation-status/sse"}) and put it in the ticket query parameter.
Response headers
Content-Type: text/event-stream, Cache-Control: no-cache.
Frames that the server writes
retry: 30000- the server writes this frame first. 2. One unnamed event (adataline, noeventline) with the current status, at once. 3. One unnamed event for each change of the status. 4.: keep-alive- an SSE comment line every 15 seconds. It carries no event, and clients ignore it.
The data field holds a JSON object with verificationId (the value of the query parameter), status and, for failed and expired, reason. The frames have no id field: a client that connects again gets the current status in the first frame.
Statuses
| status | Meaning | reason | | --- | --- | --- | | pending | The request is sent and has no answer yet. | - | | received | The holder sent a presentation and it is valid. Final. | - | | failed | The holder sent a presentation that is not valid, or an error. Final. | The message of the first failed check (a wallet error as <error>: <description>), else Presentation is not valid. | | expired | The request expired before an answer. Final. | Presentation request expired |
A request expires at the exp of the stored request object, else at its creation time plus presentationRequestExpiresIn of the verifier global configuration (default 3600 seconds).
End of the stream
The server ends the stream after it sends a final status (received, failed or expired), after 3900 seconds, or when the client closes the connection. Errors before the stream (an unknown verification request, too many open streams) come as a JSON answer with a 4xx or 5xx status, not as a frame.
Request
Query Parameters
Identifier of the verification request (the presentationExchangeId of the verification history).
One-time ticket for a client that cannot send the Authorization header, for example the browser EventSource API. Get the ticket with POST /v2/config/sse-ticket, sent with the Authorization header and the body {"path": "/v3/config/digital-wallet/openid/notifications/presentation-status/sse"}. The ticket is valid for 30 seconds and for one request to this path. An unknown, used or expired ticket gives 401. A request with the Authorization header needs no ticket.
Responses
- 200
- 400
- 401
- 404
- 503
The server opened the Server-Sent Events stream. The stream ends after a final status.
Response Headers
Cache-Control string
The server always sends
no-cache.
- text/event-stream
- Schema
Schema
string
The verificationId query parameter is missing, or the organisation (or the sandbox) has no OpenID4VC wallet deployment.
Response Headers
- application/json
- Schema
- Example (from schema)
Schema
{
"errorCode": 400,
"errorDescription": "Bad input parameter"
}
The Authorization header is missing or not valid, or the ticket is unknown, used or expired.
Response Headers
- application/json
- Schema
- Example (from schema)
Schema
{
"errorCode": 400,
"errorDescription": "Bad input parameter"
}
The wallet has no verification request with this verificationId, or the value is not a UUID.
Response Headers
- application/json
- Schema
- Example (from schema)
- Example
Schema
{
"errorCode": 400,
"errorDescription": "Bad input parameter"
}
{
"errorCode": 404,
"errorDescription": "Verification history not found"
}
The server has too many open event streams. Try again later.
Response Headers
- application/json
- Schema
- Example (from schema)
- Example
Schema
{
"errorCode": 400,
"errorDescription": "Bad input parameter"
}
{
"errorCode": 503,
"errorDescription": "Too many open event streams"
}