---
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>
      