> For the complete documentation index, see [llms.txt](https://docs.toolkit.equs.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.toolkit.equs.ai/api/web-wallet-api/oid4vp.md).

# Oid4Vp

## Resolve Authorization Request

> Resolve Authorization Request and return eligible VCs for each step

```json
{"openapi":"3.0.0","info":{"title":"EqusDTK Web Custodial Wallet Documentation","version":"0.1.2"},"tags":[{"name":"Oid4Vp","description":""}],"security":[{"user":[]},{"agent":[]}],"components":{"securitySchemes":{"user":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Holder user. `users` realm token with `principal_type=user`. Authorize one bearer scheme at a time."},"agent":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Holder's AI agent. `users` realm token with `principal_type=agent`. Authorize one bearer scheme at a time."}},"schemas":{"ResolveAuthorizationRequest":{"type":"object","properties":{"ref":{"type":"string","description":"Reference identifier of the authorization request to resolve."}},"required":["ref"]},"ResolveAuthorizationResponse":{"type":"object","properties":{"authorizationRequest":{"description":"The resolved authorization request received from the verifier.","allOf":[{"$ref":"#/components/schemas/CommonAuthorizationRequest"}]},"verifier":{"description":"Display metadata of the verifier requesting the presentation.","allOf":[{"$ref":"#/components/schemas/VerifierDisplayMetadata"}]},"inputs":{"description":"Credential inputs matching the request, available for the holder to select from.","type":"array","items":{"type":"string"}}},"required":["authorizationRequest","verifier"]},"CommonAuthorizationRequest":{"type":"object","properties":{"client_id":{"type":"string","description":"Identifier of the verifier requesting the presentation."},"client_metadata":{"description":"Metadata describing the verifier and the response formats it supports.","allOf":[{"$ref":"#/components/schemas/ClientMetadata"}]},"dcql_query":{"description":"Digital Credentials Query Language (DCQL) query describing which credentials are being requested.","allOf":[{"$ref":"#/components/schemas/Dcql"}]},"nonce":{"type":"string","description":"One-time value used to prevent replay of the authorization response."},"response_type":{"type":"string","description":"OAuth response type requested by the verifier."},"response_mode":{"type":"string","description":"Mode used to return the authorization response to the verifier."},"response_uri":{"type":"string","description":"URI the holder must post the authorization response to."},"state":{"type":"string","description":"Opaque value used by the verifier to maintain state between the request and callback."},"transaction_data":{"type":"object","description":"Transaction data the holder must sign as part of the presentation."},"expected_origins":{"type":"object","description":"Origins from which the authorization response is expected to originate, used for cross-device flow validation."}},"required":["client_id","client_metadata","dcql_query","nonce","response_type","response_mode","response_uri"]},"ClientMetadata":{"type":"object","properties":{"jwks":{"type":"object","description":"JSON Web Key Set used by the verifier to encrypt the authorization response."},"vp_formats_supported":{"description":"Map of supported presentation formats and their associated cryptographic capabilities, keyed by format identifier.","allOf":[{"$ref":"#/components/schemas/ClaimFormatMap"}]},"encrypted_response_enc_values_supported":{"type":"object","description":"Content encryption algorithms supported for encrypting the authorization response."},"client_name":{"type":"string","description":"Human-readable name of the verifier displayed to the holder."},"logo_uri":{"type":"string","description":"URL of the verifier logo displayed to the holder."}},"required":["vp_formats_supported"]},"ClaimFormatMap":{"type":"object","properties":{}},"Dcql":{"type":"object","properties":{"credentials":{"description":"List of credential queries requested from the holder.","type":"array","items":{"type":"string"}}},"required":["credentials"]},"VerifierDisplayMetadata":{"type":"object","properties":{"name":{"type":"string","description":"Human-readable display name of the verifier."},"logo":{"type":"object","description":"Logo to display for the verifier."}},"required":["name"]}}},"paths":{"/api/v1/oid4vp/requests":{"post":{"description":"Resolve Authorization Request and return eligible VCs for each step","operationId":"Oid4VpController_resolveAuthorizationRequest_api/v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveAuthorizationRequest"}}}},"responses":{"200":{"description":"When Authorization request is resolved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveAuthorizationResponse"}}}},"400":{"description":"When one or more claims could not be successfully parsed."},"404":{"description":"When authorization request has already been processed or does not exist."}},"summary":"Resolve Authorization Request","tags":["Oid4Vp"]}}}}
```

## Submit Authorization Response

> Submit Authorization Response with selected VCs by user for each step

```json
{"openapi":"3.0.0","info":{"title":"EqusDTK Web Custodial Wallet Documentation","version":"0.1.2"},"tags":[{"name":"Oid4Vp","description":""}],"security":[{"user":[]},{"agent":[]}],"components":{"securitySchemes":{"user":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Holder user. `users` realm token with `principal_type=user`. Authorize one bearer scheme at a time."},"agent":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Holder's AI agent. `users` realm token with `principal_type=agent`. Authorize one bearer scheme at a time."}},"schemas":{"SubmitAuthorizationRequest":{"type":"object","properties":{"authorizationRequest":{"description":"The authorization request for the presentation","allOf":[{"$ref":"#/components/schemas/CommonAuthorizationRequest"}]},"credentialMapping":{"type":"object","description":"Mapping of DCQL credential query ids to the credential and key material used to satisfy them."}},"required":["authorizationRequest","credentialMapping"]},"CommonAuthorizationRequest":{"type":"object","properties":{"client_id":{"type":"string","description":"Identifier of the verifier requesting the presentation."},"client_metadata":{"description":"Metadata describing the verifier and the response formats it supports.","allOf":[{"$ref":"#/components/schemas/ClientMetadata"}]},"dcql_query":{"description":"Digital Credentials Query Language (DCQL) query describing which credentials are being requested.","allOf":[{"$ref":"#/components/schemas/Dcql"}]},"nonce":{"type":"string","description":"One-time value used to prevent replay of the authorization response."},"response_type":{"type":"string","description":"OAuth response type requested by the verifier."},"response_mode":{"type":"string","description":"Mode used to return the authorization response to the verifier."},"response_uri":{"type":"string","description":"URI the holder must post the authorization response to."},"state":{"type":"string","description":"Opaque value used by the verifier to maintain state between the request and callback."},"transaction_data":{"type":"object","description":"Transaction data the holder must sign as part of the presentation."},"expected_origins":{"type":"object","description":"Origins from which the authorization response is expected to originate, used for cross-device flow validation."}},"required":["client_id","client_metadata","dcql_query","nonce","response_type","response_mode","response_uri"]},"ClientMetadata":{"type":"object","properties":{"jwks":{"type":"object","description":"JSON Web Key Set used by the verifier to encrypt the authorization response."},"vp_formats_supported":{"description":"Map of supported presentation formats and their associated cryptographic capabilities, keyed by format identifier.","allOf":[{"$ref":"#/components/schemas/ClaimFormatMap"}]},"encrypted_response_enc_values_supported":{"type":"object","description":"Content encryption algorithms supported for encrypting the authorization response."},"client_name":{"type":"string","description":"Human-readable name of the verifier displayed to the holder."},"logo_uri":{"type":"string","description":"URL of the verifier logo displayed to the holder."}},"required":["vp_formats_supported"]},"ClaimFormatMap":{"type":"object","properties":{}},"Dcql":{"type":"object","properties":{"credentials":{"description":"List of credential queries requested from the holder.","type":"array","items":{"type":"string"}}},"required":["credentials"]},"SubmitAuthorizationResponse":{"type":"object","properties":{"redirectUri":{"type":"string","description":"URI to redirect the holder to after the authorization response has been submitted."}}}}},"paths":{"/api/v1/oid4vp/responses":{"post":{"description":"Submit Authorization Response with selected VCs by user for each step","operationId":"Oid4VpController_submitAuthorizationResponse_api/v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitAuthorizationRequest"}}}},"responses":{"200":{"description":"When Authorization response is submitted successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitAuthorizationResponse"}}}},"400":{"description":"When one or more claims could not be successfully parsed."}},"summary":"Submit Authorization Response","tags":["Oid4Vp"]}}}}
```

## Submit Authorization Response (Auto)

> Automatically select and submit VCs for the Authorization Response

```json
{"openapi":"3.0.0","info":{"title":"EqusDTK Web Custodial Wallet Documentation","version":"0.1.2"},"tags":[{"name":"Oid4Vp","description":""}],"security":[{"user":[]},{"agent":[]}],"components":{"securitySchemes":{"user":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Holder user. `users` realm token with `principal_type=user`. Authorize one bearer scheme at a time."},"agent":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Holder's AI agent. `users` realm token with `principal_type=agent`. Authorize one bearer scheme at a time."}},"schemas":{"AutoSubmitAuthorizationRequest":{"type":"object","properties":{"ref":{"type":"string","description":"Reference identifier of the authorization request being resolved and submitted."}},"required":["ref"]},"AutoSubmitAuthorizationResponse":{"type":"object","properties":{"redirectUri":{"type":"string","description":"URI to redirect the holder to after the authorization response has been submitted."}}}}},"paths":{"/api/v1/oid4vp/responses/auto":{"post":{"description":"Automatically select and submit VCs for the Authorization Response","operationId":"Oid4VpController_submitAuthorizationResponseAuto_api/v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoSubmitAuthorizationRequest"}}}},"responses":{"200":{"description":"When Authorization response is submitted automatically successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoSubmitAuthorizationResponse"}}}},"400":{"description":"When one or more claims could not be successfully parsed."}},"summary":"Submit Authorization Response (Auto)","tags":["Oid4Vp"]}}}}
```

## Decline Authorization Request

> Decline Authorization Request by ref

```json
{"openapi":"3.0.0","info":{"title":"EqusDTK Web Custodial Wallet Documentation","version":"0.1.2"},"tags":[{"name":"Oid4Vp","description":""}],"security":[{"user":[]},{"agent":[]}],"components":{"securitySchemes":{"user":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Holder user. `users` realm token with `principal_type=user`. Authorize one bearer scheme at a time."},"agent":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Holder's AI agent. `users` realm token with `principal_type=agent`. Authorize one bearer scheme at a time."}},"schemas":{"DeclineAuthorizationRequestRequest":{"type":"object","properties":{"ref":{"type":"string","description":"Reference identifier of the authorization request being declined."}},"required":["ref"]}}},"paths":{"/api/v1/oid4vp/requests/decline":{"post":{"description":"Decline Authorization Request by ref","operationId":"Oid4VpController_decline_api/v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeclineAuthorizationRequestRequest"}}}},"responses":{"200":{"description":"When Authorization request is declined successfully."},"404":{"description":"When the authorization request was already processed or does not exist."}},"summary":"Decline Authorization Request","tags":["Oid4Vp"]}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.toolkit.equs.ai/api/web-wallet-api/oid4vp.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
