1import type * as redshift from "@distilled.cloud/aws/redshift";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Runtime binding for the `DescribeClusterSnapshots` operation (IAM action
7 * `redshift:DescribeClusterSnapshots`).
8 *
9 * Lists the account's cluster snapshots (manual and automated) — e.g. a
10 * snapshot-rotation job that finds manual snapshots older than the retention
11 * window before deleting them. Provide the implementation with
12 * `Effect.provide(AWS.Redshift.DescribeClusterSnapshotsHttp)`.
13 * ### Managing Snapshots
14 * **Example:** List a Cluster's Manual Snapshots
15 * ```typescript
16 * const describeClusterSnapshots =
17 * yield* AWS.Redshift.DescribeClusterSnapshots();
18 *
19 * const page = yield* describeClusterSnapshots({
20 * ClusterIdentifier: clusterId,
21 * SnapshotType: "manual",
22 * });
23 * const identifiers = page.Snapshots?.map((s) => s.SnapshotIdentifier);
24 * ```
25 *
26 * @binding
27 */
28export interface DescribeClusterSnapshots extends Binding.Service<
29 DescribeClusterSnapshots,
30 "AWS.Redshift.DescribeClusterSnapshots",
31 () => Effect.Effect<
32 (
33 request?: redshift.DescribeClusterSnapshotsMessage,
34 ) => Effect.Effect<
35 redshift.SnapshotMessage,
36 redshift.DescribeClusterSnapshotsError
37 >
38 >
39> {}
40export const DescribeClusterSnapshots =
41 Binding.Service<DescribeClusterSnapshots>(
42 "AWS.Redshift.DescribeClusterSnapshots",
43 );