From bffe84181c56439060c27f9d353353eb5cbcc263 Mon Sep 17 00:00:00 2001 From: scaleway-bot Date: Thu, 29 Aug 2024 12:39:21 +0000 Subject: [PATCH] feat: update generated APIs --- .../src/api/key_manager/v1alpha1/api.gen.ts | 38 +++++++++++++++++++ .../src/api/key_manager/v1alpha1/index.gen.ts | 3 ++ .../key_manager/v1alpha1/marshalling.gen.ts | 11 ++++++ .../src/api/key_manager/v1alpha1/types.gen.ts | 36 ++++++++++++++++++ 4 files changed, 88 insertions(+) diff --git a/packages/clients/src/api/key_manager/v1alpha1/api.gen.ts b/packages/clients/src/api/key_manager/v1alpha1/api.gen.ts index 31634ec72..edefe56bf 100644 --- a/packages/clients/src/api/key_manager/v1alpha1/api.gen.ts +++ b/packages/clients/src/api/key_manager/v1alpha1/api.gen.ts @@ -12,6 +12,7 @@ import { marshalDecryptRequest, marshalEncryptRequest, marshalGenerateDataKeyRequest, + marshalImportKeyMaterialRequest, marshalUpdateKeyRequest, unmarshalDataKey, unmarshalDecryptResponse, @@ -24,6 +25,7 @@ import type { DataKey, DecryptRequest, DecryptResponse, + DeleteKeyMaterialRequest, DeleteKeyRequest, DisableKeyRequest, EnableKeyRequest, @@ -31,6 +33,7 @@ import type { EncryptResponse, GenerateDataKeyRequest, GetKeyRequest, + ImportKeyMaterialRequest, Key, ListKeysRequest, ListKeysResponse, @@ -324,4 +327,39 @@ export class API extends ParentAPI { }, unmarshalDecryptResponse, ) + + /** + * Import key material. Import key material to use to derive a new + * cryptographic key. The key's origin must be `external`. + * + * @param request - The request {@link ImportKeyMaterialRequest} + * @returns A Promise of Key + */ + importKeyMaterial = (request: Readonly) => + this.client.fetch( + { + body: JSON.stringify( + marshalImportKeyMaterialRequest(request, this.client.settings), + ), + headers: jsonContentHeaders, + method: 'POST', + path: `/key-manager/v1alpha1/regions/${validatePathParam('region', request.region ?? this.client.settings.defaultRegion)}/keys/${validatePathParam('keyId', request.keyId)}/import-key-material`, + }, + unmarshalKey, + ) + + /** + * Delete key material. Delete previously imported key material. This renders + * the associated cryptographic key unusable for any operation. The key's + * origin must be `external`. + * + * @param request - The request {@link DeleteKeyMaterialRequest} + */ + deleteKeyMaterial = (request: Readonly) => + this.client.fetch({ + body: '{}', + headers: jsonContentHeaders, + method: 'POST', + path: `/key-manager/v1alpha1/regions/${validatePathParam('region', request.region ?? this.client.settings.defaultRegion)}/keys/${validatePathParam('keyId', request.keyId)}/delete-key-material`, + }) } diff --git a/packages/clients/src/api/key_manager/v1alpha1/index.gen.ts b/packages/clients/src/api/key_manager/v1alpha1/index.gen.ts index 658a2a751..197c02fb1 100644 --- a/packages/clients/src/api/key_manager/v1alpha1/index.gen.ts +++ b/packages/clients/src/api/key_manager/v1alpha1/index.gen.ts @@ -7,6 +7,7 @@ export type { DataKeyAlgorithmSymmetricEncryption, DecryptRequest, DecryptResponse, + DeleteKeyMaterialRequest, DeleteKeyRequest, DisableKeyRequest, EnableKeyRequest, @@ -14,8 +15,10 @@ export type { EncryptResponse, GenerateDataKeyRequest, GetKeyRequest, + ImportKeyMaterialRequest, Key, KeyAlgorithmSymmetricEncryption, + KeyOrigin, KeyRotationPolicy, KeyState, KeyUsage, diff --git a/packages/clients/src/api/key_manager/v1alpha1/marshalling.gen.ts b/packages/clients/src/api/key_manager/v1alpha1/marshalling.gen.ts index fca728352..498b19b70 100644 --- a/packages/clients/src/api/key_manager/v1alpha1/marshalling.gen.ts +++ b/packages/clients/src/api/key_manager/v1alpha1/marshalling.gen.ts @@ -15,6 +15,7 @@ import type { EncryptRequest, EncryptResponse, GenerateDataKeyRequest, + ImportKeyMaterialRequest, Key, KeyRotationPolicy, KeyUsage, @@ -62,6 +63,7 @@ export const unmarshalKey = (data: unknown): Key => { id: data.id, locked: data.locked, name: data.name, + origin: data.origin, projectId: data.project_id, protected: data.protected, region: data.region, @@ -156,6 +158,7 @@ export const marshalCreateKeyRequest = ( ): Record => ({ description: request.description, name: request.name, + origin: request.origin, project_id: request.projectId ?? defaults.defaultProjectId, rotation_policy: request.rotationPolicy !== undefined @@ -193,6 +196,14 @@ export const marshalGenerateDataKeyRequest = ( without_plaintext: request.withoutPlaintext, }) +export const marshalImportKeyMaterialRequest = ( + request: ImportKeyMaterialRequest, + defaults: DefaultValues, +): Record => ({ + key_material: request.keyMaterial, + salt: request.salt, +}) + export const marshalUpdateKeyRequest = ( request: UpdateKeyRequest, defaults: DefaultValues, diff --git a/packages/clients/src/api/key_manager/v1alpha1/types.gen.ts b/packages/clients/src/api/key_manager/v1alpha1/types.gen.ts index f0f83b1ff..c1586da96 100644 --- a/packages/clients/src/api/key_manager/v1alpha1/types.gen.ts +++ b/packages/clients/src/api/key_manager/v1alpha1/types.gen.ts @@ -10,6 +10,8 @@ export type KeyAlgorithmSymmetricEncryption = | 'unknown_symmetric_encryption' | 'aes_256_gcm' +export type KeyOrigin = 'unknown_origin' | 'scaleway_kms' | 'external' + export type KeyState = | 'unknown_state' | 'enabled' @@ -77,6 +79,8 @@ export interface Key { rotatedAt?: Date /** Key rotation policy. */ rotationPolicy?: KeyRotationPolicy + /** Refer to the `Key.Origin` enum for a description of values. */ + origin: KeyOrigin /** Region of the key. */ region: Region } @@ -104,6 +108,8 @@ export type CreateKeyRequest = { rotationPolicy?: KeyRotationPolicy /** Default value is `false`. */ unprotected: boolean + /** Refer to the `Key.Origin` enum for a description of values. */ + origin?: KeyOrigin } export interface DataKey { @@ -152,6 +158,16 @@ export interface DecryptResponse { ciphertext?: string } +export type DeleteKeyMaterialRequest = { + /** + * Region to target. If none is passed will use default region from the + * config. + */ + region?: Region + /** ID of the key of which to delete the key material. */ + keyId: string +} + export type DeleteKeyRequest = { /** * Region to target. If none is passed will use default region from the @@ -237,6 +253,26 @@ export type GetKeyRequest = { keyId: string } +export type ImportKeyMaterialRequest = { + /** + * Region to target. If none is passed will use default region from the + * config. + */ + region?: Region + /** The key's origin must be 'external'. */ + keyId: string + /** + * The key material The key material is a random sequence of bytes used to + * derive a cryptographic key. + */ + keyMaterial: string + /** + * A salt can be used to improve the quality of randomness when the key + * material is generated from a low entropy source. + */ + salt?: string +} + export type ListKeysRequest = { /** * Region to target. If none is passed will use default region from the