Wallet Offer Response
POST/api/v1/wallet/offers/:offerId/response
Called by the holder's wallet to accept or reject a credential offer.
POST to the walletResponseUrl returned by Create Credential Offer exactly as given. Its token query parameter is the authorization — the offer ID alone is not enough. A missing or wrong token returns the same 404 as an unknown offer.
The wallet can respond while the offer is pending or after the credential is claimed:
action | Result |
|---|---|
accepted | Status becomes accepted (respondedAt, acceptedAt). If the credential has not been issued yet, the issuance is recorded on the accepted offer when it happens |
rejected | Status becomes rejected (failureReason wallet_rejected). Credential Factory also tries to revoke the credential's Network Credential Registry entry; that step is best effort and does not change the response |
Repeating the same answer returns 200 again (idempotent). A different answer after the offer was settled (for example rejecting after accepting), or a response to an offer that is expired, revoked or suspended, returns 409. A pending offer past its TTL returns 410; once its expired status has been stored, the call returns 409.
Authentication: None (the token is the capability). Treat walletResponseUrl as a secret: anything that logs full request URLs will record the token.
Request
Responses
- 200
- 400
- 404
- 409
- 410
- 500
- 503
Response acknowledged.
Invalid request — action missing or not accepted/rejected.
Offer not found, or token missing or wrong.
The offer was already settled with a different answer, or is expired, revoked or suspended.
Offer expired — returned while its stored status is still pending. Once the expired status has been stored, calls return 409.
Internal server error.
Offer storage temporarily unavailable. Retry after the Retry-After header.