---
id: config-digital-wallet-open-id-delete-key-store
title: "Delete key store"
description: "Deletes a key store that the organisation added. The key store must have no keys of the organisation: delete them first with the delete key operation. The wallet deletes only its record of the key store. It never deletes a key in the key store of the provider (a vault, a cloud KMS, a DPoD partition or a QTSP)."
sidebar_label: "Delete key store"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "delete 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"}>Delete key store</h1>

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



Deletes a key store that the organisation added. The key store must have no keys of the organisation: delete them first with the delete key operation. The wallet deletes only its record of the key store. It never deletes a key in the key store of the provider (a vault, a cloud KMS, a DPoD partition or a QTSP).

This operation needs a request body: send `{"confirm": "DELETE"}`. A `local` key store cannot be deleted. A sandbox organisation cannot delete a key store.


## Request

<details style={{"marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collapsed={false} open={true}><summary style={{}}><h3 className={"openapi-markdown__details-summary-header-params"}>Path Parameters</h3></summary><div><ul><ParamsItem className={"paramsItem"} param={{"description":"Unique identifier of the key store. `local-openbao`, `local-database` or `local-hsm` for a key store of the installation, else the identifier that the create key store operation returned.","in":"path","name":"keyStoreId","required":true,"schema":{"type":"string","maxLength":64},"example":"local-openbao"}}></ParamsItem></ul></div></details><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><strong className={"openapi-schema__required"}>required</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}><div style={{"marginTop":"1rem","marginBottom":"1rem"}}>

Confirmation of the delete operation.

</div></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"confirm"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`DELETE`]"} schema={{"type":"string","description":"Confirmation string. Set the value to `DELETE`.","enum":["DELETE"],"example":"DELETE"}}></SchemaItem></ul></details></TabItem></MimeTabs><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"204"} value={"204"}><div>

Key store deleted successfully. The response body is empty.

</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></div></TabItem><TabItem label={"400"} value={"400"}><div>

The confirmation string is missing or is not `DELETE`, the key store is a `local` key store, or the organisation is a sandbox organisation.

</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={"404"} value={"404"}><div>

The organisation has no key store with this ID.

</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={"409"} value={"409"}><div>

The key store has keys of the organisation.

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