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 ListSecretVersionIdsRequest extends Omit<
7 secretsmanager.ListSecretVersionIdsRequest,
8 "SecretId"
9> {}
10
11/**
12 * Runtime binding for `secretsmanager:ListSecretVersionIds`.
13 *
14 * Bind this operation to a `Secret` to get a callable that lists the
15 * secret's version IDs and their staging labels (`AWSCURRENT`,
16 * `AWSPENDING`, `AWSPREVIOUS`) — useful for rotation functions and audit
17 * tooling. Provide the implementation with
18 * `Effect.provide(AWS.SecretsManager.ListSecretVersionIdsHttp)`.
19 * ### Inspecting Secrets
20 * **Example:** List a Secret's Versions
21 * ```typescript
22 * // init — bind the operation to the secret
23 * const listVersions = yield* AWS.SecretsManager.ListSecretVersionIds(secret);
24 *
25 * // runtime — every version with its staging labels
26 * const result = yield* listVersions({ IncludeDeprecated: true });
27 * const current = (result.Versions ?? []).find((version) =>
28 * version.VersionStages?.includes("AWSCURRENT"),
29 * );
30 * ```
31 *
32 * @binding
33 */
34export interface ListSecretVersionIds extends Binding.Service<
35 ListSecretVersionIds,
36 "AWS.SecretsManager.ListSecretVersionIds",
37 (
38 secret: Secret,
39 ) => Effect.Effect<
40 (
41 request?: ListSecretVersionIdsRequest,
42 ) => Effect.Effect<
43 secretsmanager.ListSecretVersionIdsResponse,
44 secretsmanager.ListSecretVersionIdsError
45 >
46 >
47> {}
48
49export const ListSecretVersionIds = Binding.Service<ListSecretVersionIds>(
50 "AWS.SecretsManager.ListSecretVersionIds",
51);