---
id: config-digital-wallet-open-id-update-secure-vault
title: "Update secure vault"
description: "Updates the secure vault configuration for OID4VCI and OpenID4VP key storage."
sidebar_label: "Update secure vault"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "put 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"}>Update secure vault</h1>

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



Updates the secure vault configuration for OID4VCI and OpenID4VP key storage.

## Request

<MimeTabs className={"openapi-tabs__mime"}><TabItem label={"application/json"} value={"application/json-schema"}><details style={{}} className={"openapi-markdown__details mime"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-mime"}><h3 className={"openapi-markdown__details-summary-header-body"}>Body</h3></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></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

HashiCorp Vault configuration for external key management used for OID4VCI credential signing.

</div><SchemaItem collapsible={false} name={"enabled"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Specifies whether Hashicorp Vault is enabled"}}></SchemaItem><SchemaItem collapsible={false} name={"vaultUsername"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Username for Hashicorp Vault authentication"}}></SchemaItem><SchemaItem collapsible={false} name={"vaultPassword"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Password for Hashicorp Vault authentication"}}></SchemaItem><SchemaItem collapsible={false} name={"vaultAddress"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Address of the Hashicorp Vault server"}}></SchemaItem><SchemaItem collapsible={false} name={"vaultNamespace"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Namespace in Hashicorp Vault"}}></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 for OID4VCI credential signing.

</div><SchemaItem collapsible={false} name={"enabled"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Specifies whether iGrant.io Vault is enabled"}}></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></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Qualified Trust Service Provider (QTSP) configuration for qualified electronic signatures compliant with eIDAS regulation.

</div><SchemaItem collapsible={false} name={"enabled"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Specifies whether Qualified Trust Service Provider (QTSP) is enabled"}}></SchemaItem><SchemaItem collapsible={false} name={"cscUrl"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URL for the CSC service"}}></SchemaItem><SchemaItem collapsible={false} name={"clientId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Client ID for QTSP authentication"}}></SchemaItem><SchemaItem collapsible={false} name={"clientSecret"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Client secret for QTSP authentication"}}></SchemaItem><SchemaItem collapsible={false} name={"userID"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"User ID for QTSP service"}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem></MimeTabs><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"201"} value={"201"}><div></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={"secureVault"} required={false} schemaName={"integer[]"} qualifierMessage={undefined} schema={{"type":"array","items":{"type":"integer"},"description":"Secure vault ID, `1` for iGrant.io, `2` for Hashicorp secure vault, `3` for QTSP vault","enum":[1,2,3]}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"secureVault\": [\n    0\n  ]\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>
      