1import * as secretsmanager from "@distilled.cloud/aws/secrets-manager";
2import * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Secret } from "./Secret.ts";
5
6export interface PutSecretValueRequest extends Omit<
7 secretsmanager.PutSecretValueRequest,
8 "SecretId"
9> {}
10
11/**
12 * Runtime binding for `secretsmanager:PutSecretValue`.
13 *
14 * Bind this operation to a `Secret` to get a callable that writes a new
15 * secret version (string or binary); the new version becomes `AWSCURRENT`.
16 * Provide the implementation with
17 * `Effect.provide(AWS.SecretsManager.PutSecretValueHttp)`.
18 * ### Writing Secret Values
19 * **Example:** Rotate a Secret's Value
20 * ```typescript
21 * // init — bind the operation to the secret
22 * const putSecretValue = yield* AWS.SecretsManager.PutSecretValue(secret);
23 *
24 * // runtime — write a new version; the response carries its VersionId
25 * const result = yield* putSecretValue({
26 * SecretString: newPassword,
27 * });
28 * ```
29 *
30 * **Example:** Store a Binary Payload
31 * ```typescript
32 * yield* putSecretValue({
33 * SecretBinary: new TextEncoder().encode(JSON.stringify(credentials)),
34 * });
35 * ```
36 *
37 * @binding
38 */
39export interface PutSecretValue extends Binding.Service<
40 PutSecretValue,
41 "AWS.SecretsManager.PutSecretValue",
42 (
43 secret: Secret,
44 ) => Effect.Effect<
45 (
46 request: PutSecretValueRequest,
47 ) => Effect.Effect<
48 secretsmanager.PutSecretValueResponse,
49 secretsmanager.PutSecretValueError
50 >
51 >
52> {}
53
54export const PutSecretValue = Binding.Service<PutSecretValue>(
55 "AWS.SecretsManager.PutSecretValue",
56);