@@ -9,12 +9,15 @@ import {
9
9
import type { Region } from '../../../bridge'
10
10
import {
11
11
marshalAddSecretOwnerRequest ,
12
+ marshalCreateFolderRequest ,
12
13
marshalCreateSecretRequest ,
13
14
marshalCreateSecretVersionRequest ,
14
15
marshalGeneratePasswordRequest ,
15
16
marshalUpdateSecretRequest ,
16
17
marshalUpdateSecretVersionRequest ,
17
18
unmarshalAccessSecretVersionResponse ,
19
+ unmarshalFolder ,
20
+ unmarshalListFoldersResponse ,
18
21
unmarshalListSecretVersionsResponse ,
19
22
unmarshalListSecretsResponse ,
20
23
unmarshalListTagsResponse ,
@@ -26,17 +29,22 @@ import type {
26
29
AccessSecretVersionRequest ,
27
30
AccessSecretVersionResponse ,
28
31
AddSecretOwnerRequest ,
32
+ CreateFolderRequest ,
29
33
CreateSecretRequest ,
30
34
CreateSecretVersionRequest ,
35
+ DeleteFolderRequest ,
31
36
DeleteSecretRequest ,
32
37
DestroySecretVersionRequest ,
33
38
DisableSecretVersionRequest ,
34
39
EnableSecretVersionRequest ,
40
+ Folder ,
35
41
GeneratePasswordRequest ,
36
42
GetSecretByNameRequest ,
37
43
GetSecretRequest ,
38
44
GetSecretVersionByNameRequest ,
39
45
GetSecretVersionRequest ,
46
+ ListFoldersRequest ,
47
+ ListFoldersResponse ,
40
48
ListSecretVersionsByNameRequest ,
41
49
ListSecretVersionsRequest ,
42
50
ListSecretVersionsResponse ,
@@ -67,7 +75,7 @@ export class API extends ParentAPI {
67
75
public static readonly LOCALITIES : Region [ ] = [ 'fr-par' ]
68
76
69
77
/**
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.
71
79
*
72
80
* @param request - The request {@link CreateSecretRequest}
73
81
* @returns A Promise of Secret
@@ -88,6 +96,28 @@ export class API extends ParentAPI {
88
96
unmarshalSecret ,
89
97
)
90
98
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
+
91
121
/**
92
122
* Get metadata using the secret's ID. Retrieve the metadata of a secret
93
123
* specified by the `region` and `secret_id` parameters.
@@ -111,6 +141,11 @@ export class API extends ParentAPI {
111
141
* Get metadata using the secret's name. Retrieve the metadata of a secret
112
142
* specified by the `region` and `secret_name` parameters.
113
143
*
144
+ * GetSecretByName usage is now deprecated.
145
+ *
146
+ * Scaleway recommends you to use ListSecrets with the `name` filter.
147
+ *
148
+ * @deprecated
114
149
* @param request - The request {@link GetSecretByNameRequest}
115
150
* @returns A Promise of Secret
116
151
*/
@@ -172,6 +207,7 @@ export class API extends ParentAPI {
172
207
'page_size' ,
173
208
request . pageSize ?? this . client . settings . defaultPageSize ,
174
209
] ,
210
+ [ 'path' , request . path ] ,
175
211
[ 'project_id' , request . projectId ] ,
176
212
[ 'tags' , request . tags ] ,
177
213
) ,
@@ -190,6 +226,40 @@ export class API extends ParentAPI {
190
226
listSecrets = ( request : Readonly < ListSecretsRequest > = { } ) =>
191
227
enrichForPagination ( 'secrets' , this . pageOfListSecrets , request )
192
228
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
+
193
263
/**
194
264
* Delete a secret. Delete a given secret specified by the `region` and
195
265
* `secret_id` parameters.
@@ -205,6 +275,20 @@ export class API extends ParentAPI {
205
275
) } /secrets/${ validatePathParam ( 'secretId' , request . secretId ) } `,
206
276
} )
207
277
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
+
208
292
/**
209
293
* Protect a secret. Protect a given secret specified by the `secret_id`
210
294
* parameter. A protected secret can be read and modified but cannot be
0 commit comments