Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 85 additions & 1 deletion packages/clients/src/api/secret/v1alpha1/api.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,15 @@ import {
import type { Region } from '../../../bridge'
import {
marshalAddSecretOwnerRequest,
marshalCreateFolderRequest,
marshalCreateSecretRequest,
marshalCreateSecretVersionRequest,
marshalGeneratePasswordRequest,
marshalUpdateSecretRequest,
marshalUpdateSecretVersionRequest,
unmarshalAccessSecretVersionResponse,
unmarshalFolder,
unmarshalListFoldersResponse,
unmarshalListSecretVersionsResponse,
unmarshalListSecretsResponse,
unmarshalListTagsResponse,
Expand All @@ -26,17 +29,22 @@ import type {
AccessSecretVersionRequest,
AccessSecretVersionResponse,
AddSecretOwnerRequest,
CreateFolderRequest,
CreateSecretRequest,
CreateSecretVersionRequest,
DeleteFolderRequest,
DeleteSecretRequest,
DestroySecretVersionRequest,
DisableSecretVersionRequest,
EnableSecretVersionRequest,
Folder,
GeneratePasswordRequest,
GetSecretByNameRequest,
GetSecretRequest,
GetSecretVersionByNameRequest,
GetSecretVersionRequest,
ListFoldersRequest,
ListFoldersResponse,
ListSecretVersionsByNameRequest,
ListSecretVersionsRequest,
ListSecretVersionsResponse,
Expand Down Expand Up @@ -67,7 +75,7 @@ export class API extends ParentAPI {
public static readonly LOCALITIES: Region[] = ['fr-par']

/**
* Create a secret. You must sepcify the `region` to create a secret.
* Create a secret. You must specify the `region` to create a secret.
*
* @param request - The request {@link CreateSecretRequest}
* @returns A Promise of Secret
Expand All @@ -88,6 +96,28 @@ export class API extends ParentAPI {
unmarshalSecret,
)

/**
* Create folder.
*
* @param request - The request {@link CreateFolderRequest}
* @returns A Promise of Folder
*/
createFolder = (request: Readonly<CreateFolderRequest>) =>
this.client.fetch<Folder>(
{
body: JSON.stringify(
marshalCreateFolderRequest(request, this.client.settings),
),
headers: jsonContentHeaders,
method: 'POST',
path: `/secret-manager/v1alpha1/regions/${validatePathParam(
'region',
request.region ?? this.client.settings.defaultRegion,
)}/folders`,
},
unmarshalFolder,
)

/**
* Get metadata using the secret's ID. Retrieve the metadata of a secret
* specified by the `region` and `secret_id` parameters.
Expand All @@ -111,6 +141,11 @@ export class API extends ParentAPI {
* Get metadata using the secret's name. Retrieve the metadata of a secret
* specified by the `region` and `secret_name` parameters.
*
* GetSecretByName usage is now deprecated.
*
* Scaleway recommends you to use ListSecrets with the `name` filter.
*
* @deprecated
* @param request - The request {@link GetSecretByNameRequest}
* @returns A Promise of Secret
*/
Expand Down Expand Up @@ -172,6 +207,7 @@ export class API extends ParentAPI {
'page_size',
request.pageSize ?? this.client.settings.defaultPageSize,
],
['path', request.path],
['project_id', request.projectId],
['tags', request.tags],
),
Expand All @@ -190,6 +226,40 @@ export class API extends ParentAPI {
listSecrets = (request: Readonly<ListSecretsRequest> = {}) =>
enrichForPagination('secrets', this.pageOfListSecrets, request)

protected pageOfListFolders = (request: Readonly<ListFoldersRequest> = {}) =>
this.client.fetch<ListFoldersResponse>(
{
method: 'GET',
path: `/secret-manager/v1alpha1/regions/${validatePathParam(
'region',
request.region ?? this.client.settings.defaultRegion,
)}/folders`,
urlParams: urlParams(
['order_by', request.orderBy ?? 'created_at_asc'],
['page', request.page],
[
'page_size',
request.pageSize ?? this.client.settings.defaultPageSize,
],
['path', request.path],
[
'project_id',
request.projectId ?? this.client.settings.defaultProjectId,
],
),
},
unmarshalListFoldersResponse,
)

/**
* List secrets. Retrieve the list of folders created within a Project.
*
* @param request - The request {@link ListFoldersRequest}
* @returns A Promise of ListFoldersResponse
*/
listFolders = (request: Readonly<ListFoldersRequest> = {}) =>
enrichForPagination('folders', this.pageOfListFolders, request)

/**
* Delete a secret. Delete a given secret specified by the `region` and
* `secret_id` parameters.
Expand All @@ -205,6 +275,20 @@ export class API extends ParentAPI {
)}/secrets/${validatePathParam('secretId', request.secretId)}`,
})

/**
* Delete a given folder specified by the and `folder_id` parameter.
*
* @param request - The request {@link DeleteFolderRequest}
*/
deleteFolder = (request: Readonly<DeleteFolderRequest>) =>
this.client.fetch<void>({
method: 'DELETE',
path: `/secret-manager/v1alpha1/regions/${validatePathParam(
'region',
request.region ?? this.client.settings.defaultRegion,
)}/folders/${validatePathParam('folderId', request.folderId)}`,
})

/**
* Protect a secret. Protect a given secret specified by the `secret_id`
* parameter. A protected secret can be read and modified but cannot be
Expand Down
6 changes: 6 additions & 0 deletions packages/clients/src/api/secret/v1alpha1/index.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,23 @@ export type {
AccessSecretVersionRequest,
AccessSecretVersionResponse,
AddSecretOwnerRequest,
CreateFolderRequest,
CreateSecretRequest,
CreateSecretVersionRequest,
DeleteFolderRequest,
DeleteSecretRequest,
DestroySecretVersionRequest,
DisableSecretVersionRequest,
EnableSecretVersionRequest,
Folder,
GeneratePasswordRequest,
GetSecretByNameRequest,
GetSecretRequest,
GetSecretVersionByNameRequest,
GetSecretVersionRequest,
ListFoldersRequest,
ListFoldersRequestOrderBy,
ListFoldersResponse,
ListSecretVersionsByNameRequest,
ListSecretVersionsRequest,
ListSecretVersionsResponse,
Expand Down
44 changes: 44 additions & 0 deletions packages/clients/src/api/secret/v1alpha1/marshalling.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,12 @@ import type { DefaultValues } from '../../../bridge'
import type {
AccessSecretVersionResponse,
AddSecretOwnerRequest,
CreateFolderRequest,
CreateSecretRequest,
CreateSecretVersionRequest,
Folder,
GeneratePasswordRequest,
ListFoldersResponse,
ListSecretVersionsResponse,
ListSecretsResponse,
ListTagsResponse,
Expand All @@ -23,6 +26,22 @@ import type {
UpdateSecretVersionRequest,
} from './types.gen'

export const unmarshalFolder = (data: unknown) => {
if (!isJSONObject(data)) {
throw new TypeError(
`Unmarshalling the type 'Folder' failed as data isn't a dictionary.`,
)
}

return {
createdAt: unmarshalDate(data.created_at),
id: data.id,
name: data.name,
path: data.path,
projectId: data.project_id,
} as Folder
}

export const unmarshalSecret = (data: unknown) => {
if (!isJSONObject(data)) {
throw new TypeError(
Expand All @@ -37,6 +56,7 @@ export const unmarshalSecret = (data: unknown) => {
isManaged: data.is_managed,
isProtected: data.is_protected,
name: data.name,
path: data.path,
projectId: data.project_id,
region: data.region,
status: data.status,
Expand Down Expand Up @@ -80,6 +100,19 @@ export const unmarshalAccessSecretVersionResponse = (data: unknown) => {
} as AccessSecretVersionResponse
}

export const unmarshalListFoldersResponse = (data: unknown) => {
if (!isJSONObject(data)) {
throw new TypeError(
`Unmarshalling the type 'ListFoldersResponse' failed as data isn't a dictionary.`,
)
}

return {
folders: unmarshalArrayOfObject(data.folders, unmarshalFolder),
totalCount: data.total_count,
} as ListFoldersResponse
}

export const unmarshalListSecretVersionsResponse = (data: unknown) => {
if (!isJSONObject(data)) {
throw new TypeError(
Expand Down Expand Up @@ -135,12 +168,22 @@ export const marshalAddSecretOwnerRequest = (
product_name: request.productName,
})

export const marshalCreateFolderRequest = (
request: CreateFolderRequest,
defaults: DefaultValues,
): Record<string, unknown> => ({
name: request.name,
path: request.path,
project_id: request.projectId ?? defaults.defaultProjectId,
})

export const marshalCreateSecretRequest = (
request: CreateSecretRequest,
defaults: DefaultValues,
): Record<string, unknown> => ({
description: request.description,
name: request.name,
path: request.path,
project_id: request.projectId ?? defaults.defaultProjectId,
tags: request.tags,
type: request.type ?? 'unknown_secret_type',
Expand Down Expand Up @@ -183,6 +226,7 @@ export const marshalUpdateSecretRequest = (
): Record<string, unknown> => ({
description: request.description,
name: request.name,
path: request.path,
tags: request.tags,
})

Expand Down
Loading