IronCore Labs KMS Configuration API
KMS configurations from different providers (AWS, Azure, GCP, Thales)
KMS configurations from different providers (AWS, Azure, GCP, Thales)
openapi: 3.1.0
info:
title: Vendor API Bridge Configuration Assignment KMS Configuration API
version: 3.1.0
description: API used to manage tenants and KMS configurations by communicating with the IronCore Configuration Broker on your behalf.
contact:
name: IronCore Labs
url: www.ironcorelabs.com
email: info@ironcorelabs.com
summary: IronCore Vendor API Bridge
servers:
- url: http://localhost:3000/api
description: Local
security:
- Authorization: []
tags:
- name: KMS Configuration
description: KMS configurations from different providers (AWS, Azure, GCP, Thales)
paths:
/1/kms/configs:
parameters: []
get:
summary: KMS Config List
tags:
- KMS Configuration
responses:
'200':
$ref: '#/components/responses/KmsConfigListResponse'
'401':
description: Unauthorized
operationId: get-kms-configs
description: "List the metadata of all KMS configurations owned by the calling vendor. \nThis does not decrypt any of the sensitive KMS configuration data."
parameters:
- $ref: '#/components/parameters/iclRequestorId'
- schema:
type: string
enum:
- assignments
- created
- updated
default: created
in: query
name: sortColumn
description: Field to use for sorting
- schema:
type: string
enum:
- AWS
- GCP
- AZURE
in: query
name: kmsType
description: KMS to filter results to
- schema:
type: boolean
in: query
name: leasingEnabled
description: Key leasing status to filter results to
- $ref: '#/components/parameters/pageSize'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/sortDirection'
post:
summary: KMS Config Create
operationId: post-kms-configs
responses:
'200':
$ref: '#/components/responses/KmsConfigCreateResponse'
'401':
description: Unauthorized
parameters:
- $ref: '#/components/parameters/iclRequestorId'
description: Create a new KMS configuration. This configuration will not be assigned to any tenants.
tags:
- KMS Configuration
requestBody:
$ref: '#/components/requestBodies/KmsConfigCreateRequest'
/1/kms/configs/{kmsConfigId}:
parameters:
- $ref: '#/components/parameters/kmsConfigId'
get:
summary: KMS Config Get
tags:
- KMS Configuration
responses:
'200':
$ref: '#/components/responses/KmsConfigGetResponse'
'401':
description: Unauthorized
'422':
description: "Unprocessable Entity \nPossible causes: \n\\- Invalid KMS configuration ID provided \n\\- Kms configuration not owned by calling vendor"
operationId: get-kms-configs-kmsConfigId
parameters:
- $ref: '#/components/parameters/iclRequestorId'
description: "Get the specified KMS configuration. \nReturns metadata and, if your organization owns the configuration, the decrypted data."
put:
summary: KMS Config Update
operationId: put-kms-configs-kmsConfigId
responses:
'200':
$ref: '#/components/responses/KmsConfigUpdateResponse'
'401':
description: Unauthorized
'422':
description: 'Unprocessable Entity
Possible causes:
\- Invalid KMS configuration ID provided
\- Kms configuration not owned by calling vendor'
parameters:
- $ref: '#/components/parameters/iclRequestorId'
description: Update the specified KMS configuration's encrypted data or enable/disable key leasing for the configuration. The configuration must be owned by the calling vendor.
tags:
- KMS Configuration
requestBody:
$ref: '#/components/requestBodies/KmsConfigUpdateRequest'
delete:
summary: KMS Config Delete
operationId: delete-kms-configs-kmsConfigId
responses:
'200':
$ref: '#/components/responses/KmsConfigDeleteResponse'
'401':
description: Unauthorized
'422':
description: "Unprocessable Entity \nPossible causes: \n\\- Invalid KMS configuration ID provided \n\\- Kms configuration not owned by calling vendor \n\\- Config currently in use via an assignment"
parameters:
- $ref: '#/components/parameters/iclRequestorId'
description: 'Delete the specified KMS configuration. In order to succeed, the configuration must be owned by the calling vendor and not have any tenant assignments.
This API allows for destructively offboarding a tenant with active secrets. Secrets are not recoverable and any downstream services (Deterministic Encryption, Cloaked Search) will fail when attempting to do things with those secrets. **We strongly advise checking for `secret_count == 0` before issuing a KMS Configuration DELETE**.'
tags:
- KMS Configuration
components:
schemas:
AzureKmsConfigUpdate:
title: AzureKmsConfigUpdate
type: object
examples:
- credentials:
clientId: myClientId
clientSecret: myClientSecret
tenantGuid: myTenantGuid
type: AZURE
version: 1
x-internal: false
description: Azure configuration update. `keyPath` cannot be updated
properties:
credentials:
$ref: '#/components/schemas/AzureCredentialsV1'
type:
type: string
enum:
- AZURE
description: 'KMS type: Azure'
version:
type: integer
description: Config version
minimum: 1
required:
- credentials
- type
- version
AwsKmsConfigUpdate:
title: AwsKmsConfigUpdate
x-stoplight: null
type: object
examples:
- credentials:
accessKeyId: myAccessKeyId
secretAccessKey: mySecretAccessKey
type: AWS
version: 1
description: AWS configuration update. `keyPath` cannot be updated
properties:
credentials:
$ref: '#/components/schemas/AwsCredentialsV1'
type:
type: string
enum:
- AWS
description: 'KMS type: AWS'
version:
type: integer
description: Config version
minimum: 1
required:
- credentials
- type
- version
GcpKmsConfigUpdate:
title: GcpKmsConfigUpdate
type: object
examples:
- credentials:
client_email: myClientEmail
private_key: myPrivateKey
type: GCP
version: 1
description: GCP configuration update. `keyPath` cannot be updated
properties:
credentials:
$ref: '#/components/schemas/GcpCredentialsV1'
type:
type: string
enum:
- GCP
description: 'KMS type: GCP'
version:
type: integer
description: Config version
minimum: 1
required:
- credentials
- type
- version
Base64:
type: string
title: Base64
examples:
- AgA4eyJfZGlkXyI6IjVkMW
pattern: ^[A-Za-z0-9+/=]+
description: Base 64 string
AwsCredentialsV1:
title: AwsCredentialsV1
type: object
properties:
accessKeyId:
type: string
description: AWS Accesss Key ID
secretAccessKey:
type: string
description: AWS Secret Access Key
required:
- accessKeyId
- secretAccessKey
description: AWS credentials
examples:
- accessKeyId: myAccessKeyId
secretAccessKey: mySecretAccessKey
KmsConfigId:
type: integer
title: KmsConfigId
description: KMS configuration ID
minimum: 1
examples: []
ThalesCredentialsV1:
title: ThalesCredentialsV1
x-stoplight:
id: 9y1giaxkl7n6i
type: object
properties:
authDomain:
type: string
x-stoplight:
id: i54hy5k27kkmy
description: Thales auth domain. May default to root
connection:
type: string
x-stoplight:
id: 9i96z3el8wc4f
description: Thales connection. May default to local_account
username:
type: string
x-stoplight:
id: i52z478me2a3c
description: Thales username
password:
type: string
x-stoplight:
id: qabpvzo6e57p6
description: Thales password
required:
- authDomain
- connection
- username
- password
description: Thales credentials
examples:
- authDomain: root
connection: local_account
username: foo
password: bar
CreatedByType:
type: string
title: CreatedByType
enum:
- Tsp
- Admin
- Va
examples:
- Vaa
- Tsp
- Admin
description: Creator type
AwsKmsConfigNonsensitive:
title: AwsKmsConfigNonsensitive
type: object
examples:
- keyPath:
keyID: myKeyId
region: us-east
type: AWS
version: 1
description: AWS configuration without sensitive credentials
properties:
keyPath:
type: object
required:
- keyID
- region
description: AWS keypath
properties:
keyID:
type: string
description: AWS Key ID
region:
type: string
example: us-east
description: AWS Region
type:
type: string
enum:
- AWS
description: 'KMS type: AWS'
version:
type: integer
description: Config version
minimum: 1
required:
- keyPath
- type
- version
AzureKmsConfigNonsensitive:
title: AzureKmsConfigNonsensitive
type: object
examples:
- keyPath:
keyName: myKeyName
vaultBaseUrl: myVaultBaseUrl
type: AZURE
version: 1
x-internal: false
description: Azure configuration without sensitive credentials
properties:
keyPath:
type: object
required:
- keyName
- vaultBaseUrl
description: Azure keypath
properties:
keyName:
type: string
description: Azure Key Name
vaultBaseUrl:
type: string
description: Azure Vault Base URL
type:
type: string
enum:
- AZURE
description: 'KMS type: Azure'
version:
type: integer
description: Config version
minimum: 1
required:
- keyPath
- type
- version
AwsKmsConfig:
title: AwsKmsConfig
type: object
examples:
- credentials:
accessKeyId: myAccessKeyId
secretAccessKey: mySecretAccessKey
keyPath:
keyID: myKeyId
region: us-east
type: AWS
version: 1
description: AWS configuration
properties:
credentials:
$ref: '#/components/schemas/AwsCredentialsV1'
keyPath:
type: object
required:
- keyID
- region
description: AWS keypath
properties:
keyID:
type: string
description: AWS Key ID
region:
type: string
example: us-east
description: AWS Region
type:
type: string
enum:
- AWS
description: 'KMS type: AWS'
version:
type: integer
description: Config version
minimum: 1
required:
- credentials
- keyPath
- type
- version
KmsConfigurationUpdate:
title: KmsConfigurationUpdate
oneOf:
- $ref: '#/components/schemas/AwsKmsConfigUpdate'
- $ref: '#/components/schemas/AzureKmsConfigUpdate'
- $ref: '#/components/schemas/GcpKmsConfigUpdate'
- $ref: '#/components/schemas/ThalesKmsConfigUpdate'
x-stoplight:
id: 7xcsbn867lfge
examples:
- credentials:
clientId: myClientId
clientSecret: myClientSecret
tenantGuid: myTenantGuid
type: AZURE
version: 1
- credentials:
accessKeyId: myAccessKeyId
secretAccessKey: mySecretAccessKey
type: AWS
version: 1
- credentials:
client_email: myClientEmail
private_key: myPrivateKey
keyPath:
cryptoKeyId: myCryptoKeyId
keyRingId: myKeyRingId
locationId: myLocationId
projectId: myProjectId
type: GCP
version: 1
description: KMS configuration update. `keyPath` cannot be updated
ThalesKmsConfig:
title: ThalesKmsConfig
x-stoplight:
id: nb2balwsrnvqk
type: object
examples:
- credentials:
authDomain: root
connection: local_account
username: foo
password: bar
keyPath:
keyId: string
serviceUrl: string
type: THALES
version: 1
description: Thales configuration
properties:
credentials:
$ref: '#/components/schemas/ThalesCredentialsV1'
x-stoplight:
id: 196iuez1cnqvf
description: Thales credentials. Can be updated later
keyPath:
type: object
x-stoplight:
id: iv9l0nbray601
description: Thales key path. Cannot be changed later
required:
- keyId
- serviceUrl
properties:
keyId:
type: string
x-stoplight:
id: yz90v635shwkj
description: Thales key ID
serviceUrl:
type: string
x-stoplight:
id: irltdyh6mecj6
description: Thales service URL
type:
type: string
x-stoplight:
id: vui4ehfkrst3q
enum:
- THALES
description: 'KMS type: THALES'
version:
type: integer
x-stoplight:
id: vgqjq2aj92kfs
minimum: 1
description: Config version
required:
- credentials
- keyPath
- type
- version
ThalesKmsConfigUpdate:
title: ThalesKmsConfigUpdate
x-stoplight:
id: nb2balwsrnvqk
type: object
examples:
- credentials:
authDomain: root
connection: local_account
username: foo
password: bar
type: THALES
version: 1
description: Thales configuration update. `keyPath` cannot be updated
properties:
credentials:
$ref: '#/components/schemas/ThalesCredentialsV1'
x-stoplight:
id: 196iuez1cnqvf
description: Thales credentials. Can be updated later
type:
type: string
x-stoplight:
id: vui4ehfkrst3q
enum:
- THALES
description: 'KMS type: THALES'
version:
type: integer
x-stoplight:
id: vgqjq2aj92kfs
minimum: 1
description: Config version
required:
- credentials
- type
- version
AzureKmsConfig:
title: AzureKmsConfig
type: object
examples:
- credentials:
clientId: myClientId
clientSecret: myClientSecret
tenantGuid: myTenantGuid
keyPath:
keyName: myKeyName
vaultBaseUrl: myVaultBaseUrl
type: AZURE
version: 1
x-internal: false
description: Azure configuration
properties:
credentials:
$ref: '#/components/schemas/AzureCredentialsV1'
keyPath:
type: object
required:
- keyName
- vaultBaseUrl
description: Azure keypath
properties:
keyName:
type: string
description: Azure Key Name
vaultBaseUrl:
type: string
description: Azure Vault Base URL
type:
type: string
enum:
- AZURE
description: 'KMS type: Azure'
version:
type: integer
description: Config version
minimum: 1
required:
- credentials
- keyPath
- type
- version
BasicKmsConfig:
title: BasicKmsConfig
type: object
examples:
- id: 501
kmsType: AZURE
version: 1
createdBy:
id: vendor
name: Vendor
type: Vaa
primary: true
active: true
leasingAllowed: false
tenantId: tenant-icl
created: '2022-01-13T21:44:43.653Z'
updated: '2022-01-13T21:44:43.653Z'
description: KMS Configuration metadata
required:
- id
- kmsType
- version
- createdBy
- leasingAllowed
- assignmentCount
- secretCount
- created
- updated
properties:
id:
type: integer
description: KMS Config ID
kmsType:
$ref: '#/components/schemas/KmsType'
version:
type: integer
description: Config verssion
minimum: 1
createdBy:
$ref: '#/components/schemas/CreatedBy'
leasingAllowed:
type: boolean
description: Is key leasing enabled?
assignmentCount:
description: Number of consumers of the configuration.
type: integer
secretCount:
type: integer
x-stoplight:
id: 8h1q01fci9mae
minimum: 0
description: Number of active secrets associated with this configuration
created:
$ref: '#/components/schemas/Timestamp'
updated:
$ref: '#/components/schemas/Timestamp'
CreatedBy:
title: CreatedBy
type: object
examples:
- id: vendor
name: Vendor
type: Vaa
description: Metadata about creating user/service
properties:
id:
type: string
description: Creator ID
name:
type: string
description: Creator name
type:
$ref: '#/components/schemas/CreatedByType'
required:
- id
- name
- type
GcpKmsConfigNonsensitive:
title: GcpKmsConfigNonsensitive
type: object
examples:
- keyPath:
cryptoKeyId: myCryptoKeyId
keyRingId: myKeyRingId
locationId: myLocationId
projectId: myProjectId
type: GCP
version: 1
description: GCP configuration without sensitive credentials
properties:
keyPath:
type: object
description: GCP keypath
required:
- cryptoKeyId
- keyRingId
- locationId
- projectId
properties:
cryptoKeyId:
type: string
description: GCP crypto key ID
keyRingId:
type: string
description: GCP key ring ID
locationId:
type: string
description: GCP location ID
projectId:
type: string
description: GCP project ID
type:
type: string
enum:
- GCP
description: 'KMS type: GCP'
version:
type: integer
description: Config version
minimum: 1
required:
- keyPath
- type
- version
GcpCredentialsV1:
title: GcpCredentialsV1
type: object
description: GCP credentials
properties:
client_email:
type: string
description: GCP client email
private_key:
type: string
description: GCP private key
required:
- client_email
- private_key
examples:
- client_email: myClientEmail
private_key: myPrivateKey
KmsType:
type: string
title: KmsType
enum:
- AZURE
- AWS
- GCP
examples:
- AWS
- AZURE
- GCP
description: 'KMS type: AWS, Azure, or GCP'
ThalesKmsConfigNonsensitive:
title: ThalesKmsConfigNonsensitive
x-stoplight:
id: nb2balwsrnvqk
type: object
examples:
- keyPath:
keyId: string
serviceUrl: string
type: THALES
version: 1
description: Thales configuration without sensitive credentials
properties:
keyPath:
type: object
x-stoplight:
id: iv9l0nbray601
description: Thales key path. Cannot be changed later
required:
- keyId
- serviceUrl
properties:
keyId:
type: string
x-stoplight:
id: yz90v635shwkj
description: Thales key ID
serviceUrl:
type: string
x-stoplight:
id: irltdyh6mecj6
description: Thales service URL
type:
type: string
x-stoplight:
id: vui4ehfkrst3q
enum:
- THALES
description: 'KMS type: THALES'
version:
type: integer
x-stoplight:
id: vgqjq2aj92kfs
minimum: 1
description: Config version
required:
- keyPath
- type
- version
AzureCredentialsV1:
title: AzureCredentialsV1
type: object
properties:
clientId:
type: string
description: Azure Client ID
clientSecret:
type: string
description: Azure Client Secret
tenantGuid:
type: string
description: Azure Tenant GUID
required:
- clientId
- clientSecret
- tenantGuid
description: Azure credentials
examples:
- clientId: myClientId
clientSecret: myClientSecret
tenantGuid: myTenantGuid
GcpKmsConfig:
title: GcpKmsConfig
type: object
examples:
- credentials:
client_email: myClientEmail
private_key: myPrivateKey
keyPath:
cryptoKeyId: myCryptoKeyId
keyRingId: myKeyRingId
locationId: myLocationId
projectId: myProjectId
type: GCP
version: 1
description: GCP configuration
properties:
credentials:
$ref: '#/components/schemas/GcpCredentialsV1'
keyPath:
type: object
description: GCP keypath
required:
- cryptoKeyId
- keyRingId
- locationId
- projectId
properties:
cryptoKeyId:
type: string
description: GCP crypto key ID
keyRingId:
type: string
description: GCP key ring ID
locationId:
type: string
description: GCP location ID
projectId:
type: string
description: GCP project ID
type:
type: string
enum:
- GCP
description: 'KMS type: GCP'
version:
type: integer
description: Config version
minimum: 1
required:
- credentials
- keyPath
- type
- version
Timestamp:
type: string
title: Timestamp
description: RFC3339 timestamp
pattern: ^((?:(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2}(?:\.\d+)?))(Z|[\+-]\d{2}:\d{2})?)$
examples:
- '2022-01-13T21:44:43.653Z'
example: '2022-01-13T21:44:43.653Z'
KmsConfiguration:
title: KmsConfiguration
oneOf:
- $ref: '#/components/schemas/AwsKmsConfig'
- $ref: '#/components/schemas/AzureKmsConfig'
- $ref: '#/components/schemas/GcpKmsConfig'
- $ref: '#/components/schemas/ThalesKmsConfig'
x-stoplight:
id: e2tg4fjspzd23
examples:
- credentials:
clientId: myClientId
clientSecret: myClientSecret
tenantGuid: myTenantGuid
keyPath:
keyName: myKeyName
vaultBaseUrl: myVaultBaseUrl
type: AZURE
version: 1
- credentials:
accessKeyId: myAccessKeyId
secretAccessKey: mySecretAccessKey
keyPath:
keyID: myKeyId
region: us-east
type: AWS
version: 1
- credentials:
client_email: myClientEmail
private_key: myPrivateKey
keyPath:
cryptoKeyId: myCryptoKeyId
keyRingId: myKeyRingId
locationId: myLocationId
projectId: myProjectId
type: GCP
version: 1
description: KMS configuration
KmsConfigurationNonsensitive:
title: KmsConfigurationNonsensitive
oneOf:
- $ref: '#/components/schemas/AwsKmsConfigNonsensitive'
- $ref: '#/components/schemas/AzureKmsConfigNonsensitive'
- $ref: '#/components/schemas/GcpKmsConfigNonsensitive'
- $ref: '#/components/schemas/ThalesKmsConfigNonsensitive'
x-stoplight:
id: 3pgfp6g80ysuq
examples:
- keyPath:
keyName: myKeyName
vaultBaseUrl: myVaultBaseUrl
type: AZURE
version: 1
- keyPath:
keyID: myKeyId
region: us-east
type: AWS
version: 1
- keyPath:
cryptoKeyId: myCryptoKeyId
keyRingId: myKeyRingId
locationId: myLocationId
projectId: myProjectId
type: GCP
version: 1
description: KMS configuration without sensitive credentials
parameters:
sortDirection:
name: sortDirection
in: query
required: false
schema:
type: string
default: desc
enum:
- asc
- desc
description: Direction to sort
page:
name: page
in: query
required: false
schema:
type: integer
default: 1
minimum: 1
description: Page number to return
kmsConfigId:
name: kmsConfigId
in: path
required: true
schema:
type: integer
description: KMS Configuration ID
iclRequestorId:
name: icl-requestor-id
in: header
required: true
schema:
type: string
description: ID of requesting user/service
pageSize:
name: pageSize
in: query
required: false
schema:
type: integer
minimum: 1
default: 10
description: Number of entries returned per page
responses:
KmsConfigCreateResponse:
description: Result of creating a KMS configuration
content:
application/json:
schema:
title: KmsConfigCreateResponse
type: object
examples:
- id: 1
encryptedConfig: string
kmsType: AZURE
version: 1
createdBy:
id: string
name: string
type: Vaa
created: '2022-01-13T21:44:43.653Z'
updated: '2022-01-13T21:44:43.653Z'
leasingAllowed: true
required:
- id
- encryptedConfig
- kmsType
- version
- createdBy
- leasingAllowed
- assignmentCount
- secretCount
- created
- updated
properties:
id:
$ref: '#/components/schemas/KmsConfigId'
encryptedConfig:
$ref: '#/components/schemas/Base64'
kmsType:
$ref: '#/components/schemas/KmsType'
version:
type: integer
description: Config version
minimum: 1
createdBy:
$ref: '#/components/schemas/CreatedBy'
leasingAllowed:
type: boolean
description: Is key leasing enabled?
assignmentCount:
type: integer
description: Number of consumers of this configuration
minimum: 0
secretCount:
type: integer
x-stoplight:
id: wgnyzqo5kmid0
minimum: 0
description: Number of active secrets associated with this configuration
created:
$ref: '#/components/schemas/Timestamp'
updated:
$ref: '#/components/schemas/Timestamp'
examples:
New tenant:
value:
id: 803
encryptedConfig: AgA4eyJfZGlkXyI6IjVkMW
kmsType: AZURE
version: 1
createdBy:
id: vendor
name: Vendor
type: Va
leasingAllowed: false
assignmentCount: 0
created: '2022-01-13T21:44:43.653Z'
updated: '2022-01-13T21:44:43.653Z'
secretCount: 0
KmsConfigDeleteResponse:
description: Result of deleting a KMS configuration
content:
application/json:
schema:
title: KmsConfigDeleteResponse
type: object
examples:
- id: 1
properties:
id:
$ref: '#/components/schemas/KmsConfigId'
required:
- id
examples:
Delete tenant:
value:
id: 803
KmsConfigGetResponse:
description: Result of decrypting a KMS configuration
content:
application/json:
schema:
title: KmsConfigGetResponse
type: object
required:
- id
- decryptedConfig
- createdBy
- leasingAllowed
- assignmentCount
- secretCount
- created
- updated
properties:
id:
$ref: '#/components/schemas/KmsConfigId'
decryptedConfig:
$ref: '#/components/schemas/KmsConfigurationNonsensitive'
createdBy:
$ref: '#/components/schemas/CreatedBy'
leasingAllowed:
type: boolean
description: Is key leasing enabled?
assignmentCount:
description: Number of consumers of the configuration.
type: integer
secretCount:
type: integer
x-stoplight:
id: 3v7sbjdhyxia4
minimum: 0
description: Number of active secrets associated with this configuration
created:
$ref: '#/components/schemas/Timestamp'
updated:
$ref: '#/components/schemas/Timestamp'
examples:
Get configuration:
value:
id: 803
decryptedConfig:
keyPath:
keyName: myKeyPath
vaultBaseUrl: myVaultBaseUrl
type: AZURE
version: 1
createdBy:
id: vendor
name: Vendor
type: Va
leasingAllowed: false
assignmentCount: 2
created: '2022-01-13T21:44:43.653Z'
updated: '2022-01-13T21:44:43.653Z'
secretCount: 0
KmsConfigListResponse:
description: Result of listing the vendor's KMS configurations
content:
application/json:
schema:
title: TenantConfigListResponse
type: object
examples:
- tenant_configs:
- id: 1
kmsType: AZURE
version: 1
createdBy:
id: string
name: string
type: Vaa
primary: true
active: true
leasingAllowed: true
tenantId: string
created: '2022-01-13T21:44:43.653Z'
# --- truncated at 32 KB (39 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ironcore-labs/refs/heads/main/openapi/ironcore-labs-kms-configuration-api-openapi.yml