1import type * as secretmanager from "@distilled.cloud/gcp/secretmanager_v1";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { RuntimeContext } from "../../RuntimeContext.ts";
5import type { LocationsSecret } from "./LocationsSecret.ts";
6import type { Secret } from "./Secret.ts";
7
8export interface AccessSecretVersionRequest {
9 /**
10 * Version id or alias. `latest` is the most recently created version.
11 * @default "latest"
12 */
13 version?: string;
14}
15
16/**
17 * Runtime binding for Secret Manager `secrets.versions.access`.
18 *
19 * Bind this operation to a {@link Secret} or {@link LocationsSecret} in a
20 * Function/Action init phase.
21 * Provide {@link AccessSecretVersionHttp}. Payload `data` is standard
22 * base64.
23 *
24 * ### Accessing Secret Versions
25 * **Example:** Access the latest version
26 * ```typescript
27 * const access = yield* GCP.SecretManager.AccessSecretVersion(secret);
28 * const { payload } = yield* access();
29 * ```
30 *
31 * **Example:** Access a specific version
32 * ```typescript
33 * const access = yield* GCP.SecretManager.AccessSecretVersion(secret);
34 * const { payload } = yield* access({ version: "1" });
35 * ```
36 *
37 * @binding
38 * @category SecretManager
39 */
40export interface AccessSecretVersion extends Binding.Service<
41 AccessSecretVersion,
42 "GCP.SecretManager.AccessSecretVersion",
43 (
44 secret: Secret | LocationsSecret,
45 ) => Effect.Effect<
46 (
47 request?: AccessSecretVersionRequest,
48 ) => Effect.Effect<
49 secretmanager.AccessSecretVersionResponse,
50 secretmanager.AccessProjectsSecretsVersionsError,
51 RuntimeContext
52 >
53 >
54> {}
55
56export const AccessSecretVersion = Binding.Service<AccessSecretVersion>(
57 "GCP.SecretManager.AccessSecretVersion",
58);