---
id: config-read-digital-wallet-open-id
title: "Read digital wallet deployment"
description: "Reads the OID4VC digital wallet deployment of the organisation. The response gives the deployment status, the service endpoints, and the well-known metadata URLs that wallets and verifiers use."
sidebar_label: "Read digital wallet deployment"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "get api-method"
info_path: docs/openid4vc-api/igrant-io-api-documentation
custom_edit_url: null
---

> **Build this with an AI coding agent.** Install the iGrant.io Agent Skills, then ask your agent to build the integration:
>
> ```bash
> npx skills add L3-iGrant/skills
> ```


import ApiTabs from "@theme/ApiTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import Markdown from "@theme/Markdown";
import OperationTabs from "@theme/OperationTabs";
import TabItem from "@theme/TabItem";

<h1 className={"openapi__heading"}>Read digital wallet deployment</h1>

<MethodEndpoint method={"get"} path={"/v2/config/digital-wallet/openid"}></MethodEndpoint>



Reads the OID4VC digital wallet deployment of the organisation. The response gives the deployment status, the service endpoints, and the well-known metadata URLs that wallets and verifiers use.

The service answers with HTTP 200 even when the organisation has no deployment. In that case `status` is `0`, `statusStr` is `Not Configured`, `secureVaults` is `null`, and every endpoint and metadata URL is an empty string. Read `status` before you use the URLs.

<div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The service returned the OpenID digital wallet deployment details.

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"agentServiceEndpoint"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Base URL of the OID4VCI and OpenID4VP service of the organisation. The value is an empty string when the organisation has no deployment.","example":"https://api.igrant.io/v2/organisation/62d9e0b9e5b1a80001d0f8b1/service"}}></SchemaItem><SchemaItem collapsible={false} name={"credentialOfferEndpoint"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URL of the OID4VCI Credential Offer endpoint.","example":"https://api.igrant.io/v2/organisation/62d9e0b9e5b1a80001d0f8b1/service/credential-offer"}}></SchemaItem><SchemaItem collapsible={false} name={"version"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Software version of the deployed agent.","example":"1.0.0"}}></SchemaItem><SchemaItem collapsible={false} name={"status"} required={true} schemaName={"integer"} qualifierMessage={"**Possible values:** [`0`, `2`]"} schema={{"type":"integer","description":"Deployment status of the agent. This operation gives `0` (Not Configured) or `2` (Deployed) only. It reports every status other than Deployed as `0`, so it never gives `1` (Requested).","enum":[0,2],"example":2}}></SchemaItem><SchemaItem collapsible={false} name={"statusStr"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`Not Configured`, `Deployed`]"} schema={{"type":"string","description":"Deployment status of the agent as text. This operation gives `Not Configured` or `Deployed` only, for the same reason as `status`.","enum":["Not Configured","Deployed"],"example":"Deployed"}}></SchemaItem><SchemaItem collapsible={false} name={"ledgerName"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Name of the distributed ledger that the agent uses for DID registration. The service returns this constant value also when the organisation has no deployment.","example":"European Blockchain Services Infrastructure"}}></SchemaItem><SchemaItem collapsible={false} name={"ledgerURL"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URL of the distributed ledger. The service returns this constant value also when the organisation has no deployment.","example":"https://hub.ebsi.eu/"}}></SchemaItem><SchemaItem collapsible={false} name={"ledgerID"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Identifier of the ledger network. The service does not set this field and always returns `0`.","example":0}}></SchemaItem><SchemaItem collapsible={false} name={"infrastructureProvider"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Infrastructure provider that hosts the agent. The service returns `iGrant.io` also when the organisation has no deployment.","example":"iGrant.io"}}></SchemaItem><SchemaItem collapsible={false} name={"deploymentRegion"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Geographic region of the agent deployment. The service returns this constant value also when the organisation has no deployment.","example":"Europe: Frankfurt"}}></SchemaItem><SchemaItem collapsible={false} name={"isWalletProvider"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"When `true`, the organisation is a wallet provider and can issue Wallet Unit Attestations.","example":false}}></SchemaItem><SchemaItem collapsible={false} name={"secureVaults"} required={true} schemaName={"integer[]"} qualifierMessage={"**Possible values:** [`0`, `1`, `2`, `3`, `4`]"} schema={{"type":"array","nullable":true,"description":"Key management backends that the organisation configured. The value is `null` when the organisation configured none.","items":{"type":"integer","description":"Identifier of a key management backend. `0` is Not Configured. `1` is the iGrant.io vault. `2` is HashiCorp Vault. `3` is a Qualified Trust Service Provider (QTSP). `4` is the database-backed vault.","enum":[0,1,2,3,4]},"example":[1]}}></SchemaItem><SchemaItem collapsible={false} name={"credentialIssuerMetadata"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URL of the OID4VCI Credential Issuer Metadata document. The value is an empty string when the organisation has no deployment.","example":"https://api.igrant.io/v2/organisation/62d9e0b9e5b1a80001d0f8b1/service/.well-known/openid-credential-issuer"}}></SchemaItem><SchemaItem collapsible={false} name={"authorizationServerMetadata"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URL of the OAuth 2.0 Authorization Server Metadata document. The value is an empty string when the organisation has no deployment.","example":"https://api.igrant.io/v2/organisation/62d9e0b9e5b1a80001d0f8b1/service/.well-known/oauth-authorization-server"}}></SchemaItem><SchemaItem collapsible={false} name={"notificationEndpoint"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URL of the OID4VCI Notification Endpoint. The value is an empty string when the organisation has no deployment.","example":"https://api.igrant.io/v2/organisation/62d9e0b9e5b1a80001d0f8b1/service/notification"}}></SchemaItem><SchemaItem collapsible={false} name={"jwksEndpoint"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URL of the JSON Web Key Set of the organisation. The value is an empty string when the organisation has no deployment.","example":"https://api.igrant.io/v2/organisation/62d9e0b9e5b1a80001d0f8b1/service/jwks"}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"agentServiceEndpoint\": \"https://api.igrant.io/v2/organisation/62d9e0b9e5b1a80001d0f8b1/service\",\n  \"credentialOfferEndpoint\": \"https://api.igrant.io/v2/organisation/62d9e0b9e5b1a80001d0f8b1/service/credential-offer\",\n  \"version\": \"1.0.0\",\n  \"status\": 2,\n  \"statusStr\": \"Deployed\",\n  \"ledgerName\": \"European Blockchain Services Infrastructure\",\n  \"ledgerURL\": \"https://hub.ebsi.eu/\",\n  \"ledgerID\": 0,\n  \"infrastructureProvider\": \"iGrant.io\",\n  \"deploymentRegion\": \"Europe: Frankfurt\",\n  \"isWalletProvider\": false,\n  \"secureVaults\": [\n    1\n  ],\n  \"credentialIssuerMetadata\": \"https://api.igrant.io/v2/organisation/62d9e0b9e5b1a80001d0f8b1/service/.well-known/openid-credential-issuer\",\n  \"authorizationServerMetadata\": \"https://api.igrant.io/v2/organisation/62d9e0b9e5b1a80001d0f8b1/service/.well-known/oauth-authorization-server\",\n  \"notificationEndpoint\": \"https://api.igrant.io/v2/organisation/62d9e0b9e5b1a80001d0f8b1/service/notification\",\n  \"jwksEndpoint\": \"https://api.igrant.io/v2/organisation/62d9e0b9e5b1a80001d0f8b1/service/jwks\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"401"} value={"401"}><div>

Unauthorized

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"500"} value={"500"}><div>

The service cannot read the organisation. This operation reports an unknown organisation with this status, not with HTTP 400.

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem></ApiTabs></div></div>
      