1import type * as SSM from "@distilled.cloud/aws/ssm";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Parameter } from "./Parameter.ts";
5
6export interface GetParameterHistoryRequest extends Omit<
7 SSM.GetParameterHistoryRequest,
8 "Name"
9> {}
10
11/**
12 * Runtime binding for `ssm:GetParameterHistory`.
13 *
14 * Bind this operation to a `Parameter` inside a function runtime to get a
15 * callable that retrieves the change history (all versions, labels, and
16 * metadata) of the bound parameter. The binding also grants `kms:Decrypt`
17 * on the parameter's encryption key so `WithDecryption: true` works on
18 * `SecureString` parameters.
19 * ### Reading Parameter History
20 * **Example:** List All Versions of a Parameter
21 * ```typescript
22 * const getHistory = yield* SSM.GetParameterHistory(config);
23 *
24 * const result = yield* getHistory();
25 * for (const version of result.Parameters ?? []) {
26 * yield* Effect.log(`v${version.Version}: ${version.Value}`);
27 * }
28 * ```
29 *
30 * @binding
31 */
32export interface GetParameterHistory extends Binding.Service<
33 GetParameterHistory,
34 "AWS.SSM.GetParameterHistory",
35 <P extends Parameter>(
36 parameter: P,
37 ) => Effect.Effect<
38 (
39 request?: GetParameterHistoryRequest,
40 ) => Effect.Effect<
41 SSM.GetParameterHistoryResult,
42 SSM.GetParameterHistoryError
43 >
44 >
45> {}
46export const GetParameterHistory = Binding.Service<GetParameterHistory>(
47 "AWS.SSM.GetParameterHistory",
48);