Usage with Wallet Service
Once the Policy Store is set up and attached to a wallet service, it can be used during the verification flow and or the issuance flow. When a wallet attempts to present or receive a credentials, the policies defined in the Policy Store will be evaluated based on their priority.
If a policy's check condition is met, the action specified in the policy will be executed (either ALLOW or BLOCK). This allows for dynamic control over which credentials can be presented based on the defined policies.
Example of a Verification Flow with Policies
CURL
Endpoint:
/v1/{target}/wallet-service-api/credentials/present
| API Reference
Example Request
curl -X 'POST' \
'https://{orgID}.enterprise-sandbox.waltid.dev/v1/{target}/wallet-service-api/credentials/present' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{
"requestUrl": "openid4vp://...",
"keyReference": "org1.tenant.kms.key1",
"didReference": "org1.tenant.didstore.did1",
"runPolicies": true
}'
Path Parameters
orgID
: - When performing operations within an organization, it is essential to use the organization's Base URL or another valid host alias. For example, if your organization is namedtest
, your default Base URL will betest.enterprise-sandbox.walt.dev
when using the sandbox environment.target
: resourceIdentifier - The target indicates the organization + tenant + wallet which should be used to present the credential ({organizationID}.{tenantID}.[walletID]
), e.g.waltid.tenant1.wallet1
- Body Parameters
requestUrl
String - An OID4VCP Authorization URL.keyReference
(optional) String - The resource ID (target) of the key which owns the credential. Key can be stored in a linked KMS store or provided as a static key as described in the setup section.didReference
(optional) String - The DID reference of a DID stored in a linked DID Store.runPolicies
(optional) Boolean - If set to true, the wallet will run the policies defined in the attached Policy Store during the presentation flow.
Response Codes
200
- Presentation received and is being processed.400
- Presentation execution was blocked by Holder Policy.
Response Example
{
"transmission_success" : true,
"verifier_response": {
"status": "received",
"message": "Presentation received and is being processed."
}
}
Last updated on July 21, 2025