Create key store
Adds a key store of a provider to the organisation, so that the wallet can create, reference or sign with keys in it. Get the provider ID and its type from List key store types. The organisation can add at most one key store of each provider, and never a local key store (every organisation already uses the key store of the installation).
type | Key store | Connection test |
|---|---|---|
vault | An external OpenBao or HashiCorp Vault (Transit) | Log in, read the health of the vault, list the Transit keys. |
gcp-kms | A key ring in Google Cloud KMS | List the keys of the key ring. |
aws-kms | One region of AWS KMS | List the keys of the region. |
azure-key-vault | An Azure key vault or managed HSM | Get an application token from Microsoft Entra ID, list the keys. |
dpod | A Thales Luna Cloud HSM partition | Give the partition to the HSM signer, wait (at most 90 seconds) until it is active, then sign and verify with a session key. |
csc | A remote signing key store (the CSC API of a QTSP) | Get an OAuth 2.0 token, list the credentials. |
The wallet checks the settings and the credentials, then runs the connection test, and saves the key store only when the test passes (a dpod key store that fails its test is deleted again). A missing permission at the provider gives The connection test failed: Key management service refused the request. The wallet refuses an address in a private network unless the installation allows private addresses, and the cloud KMS types call only the official endpoints of the provider.
The credentials are write-only: no answer returns them. A call with a sandbox API key adds the key store to the main organisation.
Authorizations
AuthorizationstringheaderrequiredYour API key with the prefix
ApiKey:ApiKey <your-api-key>. Get an API key.Scope:
keys:create
Body
The type, the provider, the name, the settings and the credentials of the key store.
typeenum<string>requiredThe key store type. It must be the
typeof the provider.Available options:
vault,gcp-kms,aws-kms,azure-key-vault,dpod,cscExample:
"vault"providerstringrequiredThe provider, an
idofprovidersin List key store types. It cannot change later.At most 64 characters.
Example:
"openbao"namestringrequiredThe name of the key store, unique in the organisation, at most 100 characters.
At most 100 characters.
Example:
"Customer vault"settingsobjectrequiredThe settings of the type (the schema of the same title). The wallet refuses an unknown member and checks the format of each value, for example the AWS region or the Azure vault URL.
credentialsobjectThe write-only credentials of the type (the schema of the same title). Give the credentials that the settings use; for
vaultandazure-key-vault, those of the authentication method.
Response
The key store, saved after a passed connection test.
idstringThe key store ID.
local-openbaoorlocal-hsmfor a local key store of the installation, else a UUID.Example:
"local-openbao"typeenum<string>The key store type.
local: a key store of the installation (OpenBao Transit or the HSM of the installation); every organisation can use it, and the API cannot add, change or delete it.vault: an external OpenBao or HashiCorp Vault.gcp-kms: a key ring in Google Cloud KMS.aws-kms: one region of an AWS account.azure-key-vault: an Azure key vault or managed HSM.dpod: a partition of a Thales Luna Cloud HSM service (DPoD).csc: a remote signing key store, which signs through the Cloud Signature Consortium (CSC) API of a QTSP.Available options:
local,vault,gcp-kms,aws-kms,azure-key-vault,dpod,cscExample:
"local"providerstring | nullThe provider of the key store, an
idfrom List key store types, for exampleopenbao,hashicorp-vault,google-cloud-kmsorintesi.nullfor alocalkey store. It cannot change.namestringThe name of the key store, unique in the organisation. A local key store is
Local vault(local-openbao). On an installation with the HSM as a dedicated option, the organisation has two local key stores that take new keys:Local vault (HSM)(local-hsm, the default key store of a new key) andLocal vault (OpenBao)(local-openbao, the key store of an import that names no key store).At most 100 characters.
Example:
"Local vault"localbooleantruefor a key store of the installation (typelocal).Example:
truestatusenum<string>active: the last connection test passed, or the key store is not tested yet.error: the last connection test failed (a newdpodkey store also haserroruntil its first test passes).disabledis not in use.Available options:
active,disabled,errorExample:
"active"protectionenum<string> | nullWhere the private keys of the key store are.
software: in the software of a key management service (localwithopenbao,vault,gcp-kmswithSOFTWARE,azure-key-vaultwithEC).hsm: in the HSM of the installation (localwithhsm).hsm-backed: in a cloud KMS that keeps the keys in hardware security modules (gcp-kmswithHSM,aws-kms,azure-key-vaultwithEC-HSM).dedicated-hsm: in an HSM partition of the organisation (dpod).provider: at the QTSP, which decides (csc).Available options:
software,hsm,hsm-backed,dedicated-hsm,providerExample:
"software"settingsobjectThe settings of the key store type, with the defaults filled in. Never a secret.
credentialsConfigured objectEach credential member of the key store type, with
truewhen the wallet has a value for it. The answer never has the value. Empty for alocalkey store. For examplepassword,secretId,tokenandclientPrivateKeyforvault, orclientSecretanduserPinforcsc.capabilitiesenum<string>[]What the key store can do.
create: Create key.import: Import key.reference: sign with a key that the provider already has.sign: sign with its keys.csr: make a CSR.certificateChain: store a certificate chain on a key.listProviderKeys: List provider keys.test: Test key store.editanddelete: change and delete the key store. Alocalkey store hascreateandimportonly when it takes the new keys (noimportwith the HSM backend). Acsckey store has nocreate,import,csrorcertificateChain: the QTSP keeps the keys and gives the certificates.Available options:
create,import,reference,sign,csr,certificateChain,listProviderKeys,test,edit,deleteqscdanyWhether the key store keeps the keys in a qualified signature or seal creation device (QSCD).
false, orproviderforcsc, where the QTSP decides.Example:
falsekeyCount integerThe number of keys of the organisation in the key store, without the retired keys.
Example:
3retiredKey Count integerThe number of retired keys of the organisation in the key store. A retired key stays in its key store as evidence until the organisation is purged, so Delete key store needs
keyCountandretiredKeyCountboth at 0.Example:
0qualifiedStatus enum<string> | nullFor a key store of a provider with
qualifiedtrueonly:qualifiedwhen the key store has keys and each of them is qualified (trustof the key),not-qualifiedwhen one is not, elseunknown.nullfor every other key store.Available options:
qualified,not-qualified,unknownlastChecked At string | nullWhen the last connection test ran (ISO 8601 date-time, UTC).
nullbefore the first test.lastCheck Result object | nullThe result of the last connection test.
nullbefore the first test.createdAt string | nullWhen the key store was added (ISO 8601 date-time, UTC).
Example:
"2026-10-20T10:00:00Z"updatedAt string | nullWhen the key store last changed (ISO 8601 date-time, UTC).
Example:
"2026-10-20T10:00:00Z"