From f967ed4df07dd9dbb4da8fe34105a2626a5bff27 Mon Sep 17 00:00:00 2001 From: scaleway-bot Date: Fri, 30 Jun 2023 14:05:06 +0000 Subject: [PATCH] feat: update generated APIs --- .../src/api/secret/v1alpha1/api.gen.ts | 48 +++++++++++++++++++ .../src/api/secret/v1alpha1/index.gen.ts | 2 + .../api/secret/v1alpha1/marshalling.gen.ts | 1 + .../src/api/secret/v1alpha1/types.gen.ts | 27 ++++++++++- 4 files changed, 76 insertions(+), 2 deletions(-) diff --git a/packages/clients/src/api/secret/v1alpha1/api.gen.ts b/packages/clients/src/api/secret/v1alpha1/api.gen.ts index 4959bd5da..5d02b8d58 100644 --- a/packages/clients/src/api/secret/v1alpha1/api.gen.ts +++ b/packages/clients/src/api/secret/v1alpha1/api.gen.ts @@ -44,8 +44,10 @@ import type { ListSecretsResponse, ListTagsRequest, ListTagsResponse, + ProtectSecretRequest, Secret, SecretVersion, + UnprotectSecretRequest, UpdateSecretRequest, UpdateSecretVersionRequest, } from './types.gen' @@ -203,6 +205,52 @@ export class API extends ParentAPI { )}/secrets/${validatePathParam('secretId', request.secretId)}`, }) + /** + * Protect a secret. Protect a given secret specified by the `secret_id` + * parameter. A protected secret can be read and modified but cannot be + * deleted. + * + * @param request - The request {@link ProtectSecretRequest} + * @returns A Promise of Secret + */ + protectSecret = (request: Readonly) => + this.client.fetch( + { + body: '{}', + headers: jsonContentHeaders, + method: 'POST', + path: `/secret-manager/v1alpha1/regions/${validatePathParam( + 'region', + request.region ?? this.client.settings.defaultRegion, + )}/secrets/${validatePathParam('secretId', request.secretId)}/protect`, + }, + unmarshalSecret, + ) + + /** + * Unprotect a secret. Unprotect a given secret specified by the `secret_id` + * parameter. An unprotected secret can be read, modified and deleted. + * + * @param request - The request {@link UnprotectSecretRequest} + * @returns A Promise of Secret + */ + unprotectSecret = (request: Readonly) => + this.client.fetch( + { + body: '{}', + headers: jsonContentHeaders, + method: 'POST', + path: `/secret-manager/v1alpha1/regions/${validatePathParam( + 'region', + request.region ?? this.client.settings.defaultRegion, + )}/secrets/${validatePathParam( + 'secretId', + request.secretId, + )}/unprotect`, + }, + unmarshalSecret, + ) + /** * Allow a product to use the secret. * diff --git a/packages/clients/src/api/secret/v1alpha1/index.gen.ts b/packages/clients/src/api/secret/v1alpha1/index.gen.ts index 0d41b6355..1872e8351 100644 --- a/packages/clients/src/api/secret/v1alpha1/index.gen.ts +++ b/packages/clients/src/api/secret/v1alpha1/index.gen.ts @@ -27,11 +27,13 @@ export type { ListTagsResponse, PasswordGenerationParams, Product, + ProtectSecretRequest, Secret, SecretStatus, SecretType, SecretVersion, SecretVersionStatus, + UnprotectSecretRequest, UpdateSecretRequest, UpdateSecretVersionRequest, } from './types.gen' diff --git a/packages/clients/src/api/secret/v1alpha1/marshalling.gen.ts b/packages/clients/src/api/secret/v1alpha1/marshalling.gen.ts index 0f517d80d..f1f5ba7d7 100644 --- a/packages/clients/src/api/secret/v1alpha1/marshalling.gen.ts +++ b/packages/clients/src/api/secret/v1alpha1/marshalling.gen.ts @@ -35,6 +35,7 @@ export const unmarshalSecret = (data: unknown) => { description: data.description, id: data.id, isManaged: data.is_managed, + isProtected: data.is_protected, name: data.name, projectId: data.project_id, region: data.region, diff --git a/packages/clients/src/api/secret/v1alpha1/types.gen.ts b/packages/clients/src/api/secret/v1alpha1/types.gen.ts index 0a78801b1..0a9518fd1 100644 --- a/packages/clients/src/api/secret/v1alpha1/types.gen.ts +++ b/packages/clients/src/api/secret/v1alpha1/types.gen.ts @@ -90,8 +90,9 @@ export interface Secret { /** Name of the secret. */ name: string /** - * Current status of the secret. `ready`: the secret is ready. `locked`: the - * secret is locked. + * Current status of the secret. `ready`: the secret can be read, modified and + * deleted. `locked`: no action can be performed on the secret. This status + * can only be applied and removed by Scaleway. */ status: SecretStatus /** Date and time of the secret's creation. */ @@ -106,6 +107,8 @@ export interface Secret { description?: string /** Returns `true` for secrets that are managed by another product. */ isManaged: boolean + /** Returns `true` for protected secrets that cannot be deleted. */ + isProtected: boolean /** Type of the secret. See `Secret.Type` enum for description of values. */ type: SecretType /** Region of the secret. */ @@ -231,6 +234,26 @@ export type DeleteSecretRequest = { secretId: string } +export type ProtectSecretRequest = { + /** + * Region to target. If none is passed will use default region from the + * config. + */ + region?: Region + /** ID of the secret to protect. */ + secretId: string +} + +export type UnprotectSecretRequest = { + /** + * Region to target. If none is passed will use default region from the + * config. + */ + region?: Region + /** ID of the secret to unprotect. */ + secretId: string +} + export type AddSecretOwnerRequest = { /** * Region to target. If none is passed will use default region from the