@@ -9,12 +9,15 @@ import {
99import type { Region } from '../../../bridge'
1010import {
1111 marshalAddSecretOwnerRequest ,
12+ marshalCreateFolderRequest ,
1213 marshalCreateSecretRequest ,
1314 marshalCreateSecretVersionRequest ,
1415 marshalGeneratePasswordRequest ,
1516 marshalUpdateSecretRequest ,
1617 marshalUpdateSecretVersionRequest ,
1718 unmarshalAccessSecretVersionResponse ,
19+ unmarshalFolder ,
20+ unmarshalListFoldersResponse ,
1821 unmarshalListSecretVersionsResponse ,
1922 unmarshalListSecretsResponse ,
2023 unmarshalListTagsResponse ,
@@ -26,17 +29,22 @@ import type {
2629 AccessSecretVersionRequest ,
2730 AccessSecretVersionResponse ,
2831 AddSecretOwnerRequest ,
32+ CreateFolderRequest ,
2933 CreateSecretRequest ,
3034 CreateSecretVersionRequest ,
35+ DeleteFolderRequest ,
3136 DeleteSecretRequest ,
3237 DestroySecretVersionRequest ,
3338 DisableSecretVersionRequest ,
3439 EnableSecretVersionRequest ,
40+ Folder ,
3541 GeneratePasswordRequest ,
3642 GetSecretByNameRequest ,
3743 GetSecretRequest ,
3844 GetSecretVersionByNameRequest ,
3945 GetSecretVersionRequest ,
46+ ListFoldersRequest ,
47+ ListFoldersResponse ,
4048 ListSecretVersionsByNameRequest ,
4149 ListSecretVersionsRequest ,
4250 ListSecretVersionsResponse ,
@@ -67,7 +75,7 @@ export class API extends ParentAPI {
6775 public static readonly LOCALITIES : Region [ ] = [ 'fr-par' ]
6876
6977 /**
70- * Create a secret. You must sepcify the `region` to create a secret.
78+ * Create a secret. You must specify the `region` to create a secret.
7179 *
7280 * @param request - The request {@link CreateSecretRequest}
7381 * @returns A Promise of Secret
@@ -88,6 +96,28 @@ export class API extends ParentAPI {
8896 unmarshalSecret ,
8997 )
9098
99+ /**
100+ * Create folder.
101+ *
102+ * @param request - The request {@link CreateFolderRequest}
103+ * @returns A Promise of Folder
104+ */
105+ createFolder = ( request : Readonly < CreateFolderRequest > ) =>
106+ this . client . fetch < Folder > (
107+ {
108+ body : JSON . stringify (
109+ marshalCreateFolderRequest ( request , this . client . settings ) ,
110+ ) ,
111+ headers : jsonContentHeaders ,
112+ method : 'POST' ,
113+ path : `/secret-manager/v1alpha1/regions/${ validatePathParam (
114+ 'region' ,
115+ request . region ?? this . client . settings . defaultRegion ,
116+ ) } /folders`,
117+ } ,
118+ unmarshalFolder ,
119+ )
120+
91121 /**
92122 * Get metadata using the secret's ID. Retrieve the metadata of a secret
93123 * specified by the `region` and `secret_id` parameters.
@@ -111,6 +141,11 @@ export class API extends ParentAPI {
111141 * Get metadata using the secret's name. Retrieve the metadata of a secret
112142 * specified by the `region` and `secret_name` parameters.
113143 *
144+ * GetSecretByName usage is now deprecated.
145+ *
146+ * Scaleway recommends you to use ListSecrets with the `name` filter.
147+ *
148+ * @deprecated
114149 * @param request - The request {@link GetSecretByNameRequest}
115150 * @returns A Promise of Secret
116151 */
@@ -172,6 +207,7 @@ export class API extends ParentAPI {
172207 'page_size' ,
173208 request . pageSize ?? this . client . settings . defaultPageSize ,
174209 ] ,
210+ [ 'path' , request . path ] ,
175211 [ 'project_id' , request . projectId ] ,
176212 [ 'tags' , request . tags ] ,
177213 ) ,
@@ -190,6 +226,40 @@ export class API extends ParentAPI {
190226 listSecrets = ( request : Readonly < ListSecretsRequest > = { } ) =>
191227 enrichForPagination ( 'secrets' , this . pageOfListSecrets , request )
192228
229+ protected pageOfListFolders = ( request : Readonly < ListFoldersRequest > = { } ) =>
230+ this . client . fetch < ListFoldersResponse > (
231+ {
232+ method : 'GET' ,
233+ path : `/secret-manager/v1alpha1/regions/${ validatePathParam (
234+ 'region' ,
235+ request . region ?? this . client . settings . defaultRegion ,
236+ ) } /folders`,
237+ urlParams : urlParams (
238+ [ 'order_by' , request . orderBy ?? 'created_at_asc' ] ,
239+ [ 'page' , request . page ] ,
240+ [
241+ 'page_size' ,
242+ request . pageSize ?? this . client . settings . defaultPageSize ,
243+ ] ,
244+ [ 'path' , request . path ] ,
245+ [
246+ 'project_id' ,
247+ request . projectId ?? this . client . settings . defaultProjectId ,
248+ ] ,
249+ ) ,
250+ } ,
251+ unmarshalListFoldersResponse ,
252+ )
253+
254+ /**
255+ * List secrets. Retrieve the list of folders created within a Project.
256+ *
257+ * @param request - The request {@link ListFoldersRequest}
258+ * @returns A Promise of ListFoldersResponse
259+ */
260+ listFolders = ( request : Readonly < ListFoldersRequest > = { } ) =>
261+ enrichForPagination ( 'folders' , this . pageOfListFolders , request )
262+
193263 /**
194264 * Delete a secret. Delete a given secret specified by the `region` and
195265 * `secret_id` parameters.
@@ -205,6 +275,20 @@ export class API extends ParentAPI {
205275 ) } /secrets/${ validatePathParam ( 'secretId' , request . secretId ) } `,
206276 } )
207277
278+ /**
279+ * Delete a given folder specified by the and `folder_id` parameter.
280+ *
281+ * @param request - The request {@link DeleteFolderRequest}
282+ */
283+ deleteFolder = ( request : Readonly < DeleteFolderRequest > ) =>
284+ this . client . fetch < void > ( {
285+ method : 'DELETE' ,
286+ path : `/secret-manager/v1alpha1/regions/${ validatePathParam (
287+ 'region' ,
288+ request . region ?? this . client . settings . defaultRegion ,
289+ ) } /folders/${ validatePathParam ( 'folderId' , request . folderId ) } `,
290+ } )
291+
208292 /**
209293 * Protect a secret. Protect a given secret specified by the `secret_id`
210294 * parameter. A protected secret can be read and modified but cannot be
0 commit comments