Skip to content

Commit b3547f5

Browse files
authored
feat(secret): add managed secrets (#606)
1 parent 3fa61a1 commit b3547f5

File tree

4 files changed

+47
-0
lines changed

4 files changed

+47
-0
lines changed

packages/clients/src/api/secret/v1alpha1/api.gen.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
} from '../../../bridge'
99
import type { Region } from '../../../bridge'
1010
import {
11+
marshalAddSecretOwnerRequest,
1112
marshalCreateSecretRequest,
1213
marshalCreateSecretVersionRequest,
1314
marshalUpdateSecretRequest,
@@ -22,6 +23,7 @@ import type {
2223
AccessSecretVersionByNameRequest,
2324
AccessSecretVersionRequest,
2425
AccessSecretVersionResponse,
26+
AddSecretOwnerRequest,
2527
CreateSecretRequest,
2628
CreateSecretVersionRequest,
2729
DeleteSecretRequest,
@@ -144,6 +146,24 @@ export class API extends ParentAPI {
144146
unmarshalSecret,
145147
)
146148

149+
/**
150+
* Allow another product to use the secret.
151+
*
152+
* @param request - The request {@link AddSecretOwnerRequest}
153+
*/
154+
addSecretOwner = (request: Readonly<AddSecretOwnerRequest>) =>
155+
this.client.fetch<void>({
156+
body: JSON.stringify(
157+
marshalAddSecretOwnerRequest(request, this.client.settings),
158+
),
159+
headers: jsonContentHeaders,
160+
method: 'POST',
161+
path: `/secret-manager/v1alpha1/regions/${validatePathParam(
162+
'region',
163+
request.region ?? this.client.settings.defaultRegion,
164+
)}/secrets/${validatePathParam('secretId', request.secretId)}/add-owner`,
165+
})
166+
147167
protected pageOfListSecrets = (request: Readonly<ListSecretsRequest> = {}) =>
148168
this.client.fetch<ListSecretsResponse>(
149169
{
@@ -153,6 +173,7 @@ export class API extends ParentAPI {
153173
request.region ?? this.client.settings.defaultRegion,
154174
)}/secrets`,
155175
urlParams: urlParams(
176+
['is_managed', request.isManaged],
156177
['name', request.name],
157178
['order_by', request.orderBy ?? 'name_asc'],
158179
['organization_id', request.organizationId],

packages/clients/src/api/secret/v1alpha1/index.gen.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export type {
55
AccessSecretVersionByNameRequest,
66
AccessSecretVersionRequest,
77
AccessSecretVersionResponse,
8+
AddSecretOwnerRequest,
89
CreateSecretRequest,
910
CreateSecretVersionRequest,
1011
DeleteSecretRequest,

packages/clients/src/api/secret/v1alpha1/marshalling.gen.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
import type { DefaultValues } from '../../../bridge'
1010
import type {
1111
AccessSecretVersionResponse,
12+
AddSecretOwnerRequest,
1213
CreateSecretRequest,
1314
CreateSecretVersionRequest,
1415
ListSecretVersionsResponse,
@@ -31,6 +32,7 @@ export const unmarshalSecret = (data: unknown) => {
3132
createdAt: unmarshalDate(data.created_at),
3233
description: data.description,
3334
id: data.id,
35+
isManaged: data.is_managed,
3436
name: data.name,
3537
projectId: data.project_id,
3638
region: data.region,
@@ -111,6 +113,13 @@ const marshalPasswordGenerationParams = (
111113
no_uppercase_letters: request.noUppercaseLetters,
112114
})
113115

116+
export const marshalAddSecretOwnerRequest = (
117+
request: AddSecretOwnerRequest,
118+
defaults: DefaultValues,
119+
): Record<string, unknown> => ({
120+
product_name: request.productName,
121+
})
122+
114123
export const marshalCreateSecretRequest = (
115124
request: CreateSecretRequest,
116125
defaults: DefaultValues,

packages/clients/src/api/secret/v1alpha1/types.gen.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ export interface Secret {
9191
versionCount: number
9292
/** Updated description of the secret. */
9393
description?: string
94+
/** True for secrets that are managed by another product. */
95+
isManaged: boolean
9496
}
9597

9698
/** Secret version. */
@@ -171,6 +173,18 @@ export type UpdateSecretRequest = {
171173
description?: string
172174
}
173175

176+
export type AddSecretOwnerRequest = {
177+
/**
178+
* Region to target. If none is passed will use default region from the
179+
* config.
180+
*/
181+
region?: Region
182+
/** ID of the secret. */
183+
secretId: string
184+
/** Name of the product to add. */
185+
productName: string
186+
}
187+
174188
export type ListSecretsRequest = {
175189
/**
176190
* Region to target. If none is passed will use default region from the
@@ -185,6 +199,8 @@ export type ListSecretsRequest = {
185199
name?: string
186200
/** List of tags to filter on (optional). */
187201
tags?: string[]
202+
/** Filter by managed / not managed (optional). */
203+
isManaged?: boolean
188204
orderBy?: ListSecretsRequestOrderBy
189205
page?: number
190206
pageSize?: number

0 commit comments

Comments
 (0)