1import * as secretmanager from "@distilled.cloud/gcp/secretmanager_v1";
2import * as Layer from "effect/Layer";
3import {
4 AddSecretVersion,
5 type AddSecretVersionRequest,
6} from "./AddSecretVersion.ts";
7import { makeSecretHttpBinding } from "./BindingHttp.ts";
8
9/**
10 * HTTP implementation of {@link AddSecretVersion}.
11 *
12 * @layer
13 * @provides GCP.SecretManager.AddSecretVersion
14 */
15export const AddSecretVersionHttp = Layer.effect(
16 AddSecretVersion,
17 makeSecretHttpBinding<
18 secretmanager.AddVersionProjectsSecretsRequest,
19 secretmanager.SecretVersion,
20 secretmanager.AddVersionProjectsSecretsError,
21 AddSecretVersionRequest
22 >({
23 tag: "GCP.SecretManager.AddSecretVersion",
24 iam: {
25 role: "roles/secretmanager.secretVersionAdder",
26 on: "secretmanager.secret",
27 },
28 operation: secretmanager.addVersionProjectsSecrets,
29 toInput: (secretName, request) => ({
30 parent: secretName,
31 body: { payload: request?.payload },
32 }),
33 }),
34);