---
id: config-digital-wallet-open-id-read-secure-vault
title: "Read secure vault"
description: "Reads the current secure vault configuration of the organisation. The response shows each vault and tells you if it is enabled. The service does not send a field that has no value."
sidebar_label: "Read secure vault"
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 secure vault</h1>

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



Reads the current secure vault configuration of the organisation. The response shows each vault and tells you if it is enabled. The service does not send a field that has no value.

The response holds the stored vault credentials in clear text, which includes `hashicorpVault.vaultPassword` and `qtsp.clientSecret`. Protect the response as you protect the credentials. The QTSP user PIN is the only secret that the service never sends back.

The response status code of this operation is `201`, not `200`.


## Request

<details style={{"marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collapsed={false} open={true}><summary style={{}}><h3 className={"openapi-markdown__details-summary-header-params"}>Header Parameters</h3></summary><div><ul><ParamsItem className={"paramsItem"} param={{"description":"Optional. Unique identifier of the sandbox organisation to use for this request. When you send this header, the service runs the operation in the context of the named sandbox organisation, that is, against the wallet of that sandbox organisation and not against the main wallet of the organisation. Leave the header out to use the main wallet.\n\nThe service reads this header only when you authenticate with a bearer access token. When you authenticate with an API key, the service takes the sandbox organisation from the API key and ignores this header. To run an API-key call in a sandbox organisation, bind the key to the sandbox organisation with `PUT /v2/config/admin/apikey/{apiKeyId}/sandbox-org` instead.\n\n`X-SubwalletId` is the deprecated name of this header. The service continues to accept it, but `X-SandboxOrgId` wins if you send both headers.\n\nThe sandbox organisation must exist, must belong to your organisation and must be deployed. An unknown identifier, an identifier of a sandbox organisation that is not deployed, and an identifier that belongs to a different organisation all make the call fail with HTTP 400.","in":"header","name":"X-SandboxOrgId","required":false,"schema":{"type":"string"},"example":"6889e1a4c5b2f30001a3d710"}}></ParamsItem></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"201"} value={"201"}><div>

Secure vault configuration read successfully.

</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={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>hashicorpVault</strong><span className={"openapi-schema__name"}> object</span><span className={"openapi-schema__divider"}></span><span className={"openapi-schema__required"}>required</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Hashicorp Vault configuration.

</div><SchemaItem collapsible={false} name={"enabled"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Shows `true` when the Hashicorp vault is enabled.","example":false}}></SchemaItem><SchemaItem collapsible={false} name={"vaultUsername"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"User name for Hashicorp Vault authentication.","example":"vault-user"}}></SchemaItem><SchemaItem collapsible={false} name={"vaultPassword"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Password for Hashicorp Vault authentication.","example":"<vault-password>"}}></SchemaItem><SchemaItem collapsible={false} name={"vaultAddress"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Base address of the Hashicorp Vault server.","example":"https://vault.example.com"}}></SchemaItem><SchemaItem collapsible={false} name={"vaultNamespace"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Namespace in Hashicorp Vault.","example":"admin"}}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>igrantioVault</strong><span className={"openapi-schema__name"}> object</span><span className={"openapi-schema__divider"}></span><span className={"openapi-schema__required"}>required</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

iGrant.io managed vault configuration.

</div><SchemaItem collapsible={false} name={"enabled"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Shows `true` when the iGrant.io vault is enabled.","example":true}}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>qtsp</strong><span className={"openapi-schema__name"}> object</span><span className={"openapi-schema__divider"}></span><span className={"openapi-schema__required"}>required</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Qualified Trust Service Provider (QTSP) configuration.

</div><SchemaItem collapsible={false} name={"enabled"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Shows `true` when the QTSP vault is enabled.","example":false}}></SchemaItem><SchemaItem collapsible={false} name={"cscUrl"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Base URL of the CSC service.","example":"https://csc.example.com/csc"}}></SchemaItem><SchemaItem collapsible={false} name={"clientId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Client ID for QTSP authentication.","example":"<qtsp-client-id>"}}></SchemaItem><SchemaItem collapsible={false} name={"clientSecret"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Client secret for QTSP authentication.","example":"<qtsp-client-secret>"}}></SchemaItem><SchemaItem collapsible={false} name={"userID"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"User ID registered with the QTSP.","example":"<qtsp-user-id>"}}></SchemaItem><SchemaItem collapsible={false} name={"credentialId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"ID of the QTSP signing credential that is in use. Set this value with the configure QTSP credential operation.","example":"<qtsp-credential-id>"}}></SchemaItem><SchemaItem collapsible={false} name={"cscApiVersion"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`v1`, `v2`]"} schema={{"type":"string","description":"CSC API version in use. `v1` is CSC 1.0.4.0 and `v2` is CSC 2.2.0.0.","enum":["v1","v2"],"example":"v1"}}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>dbBackedVault</strong><span className={"openapi-schema__name"}> object</span><span className={"openapi-schema__divider"}></span><span className={"openapi-schema__required"}>required</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Database backed vault configuration.

</div><SchemaItem collapsible={false} name={"enabled"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Shows `true` when the database backed vault is enabled.","example":false}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"hashicorpVault\": {\n    \"enabled\": false,\n    \"vaultUsername\": \"vault-user\",\n    \"vaultPassword\": \"<vault-password>\",\n    \"vaultAddress\": \"https://vault.example.com\",\n    \"vaultNamespace\": \"admin\"\n  },\n  \"igrantioVault\": {\n    \"enabled\": true\n  },\n  \"qtsp\": {\n    \"enabled\": false,\n    \"cscUrl\": \"https://csc.example.com/csc\",\n    \"clientId\": \"<qtsp-client-id>\",\n    \"clientSecret\": \"<qtsp-client-secret>\",\n    \"userID\": \"<qtsp-user-id>\",\n    \"credentialId\": \"<qtsp-credential-id>\",\n    \"cscApiVersion\": \"v1\"\n  },\n  \"dbBackedVault\": {\n    \"enabled\": false\n  }\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"400"} value={"400"}><div>

The organisation is not valid, or the wallet is not deployed.

</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={"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>

Internal server error

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