1import type * as aas from "@distilled.cloud/aws/application-auto-scaling";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { ScalableTarget } from "./ScalableTarget.ts";
5
6/**
7 * `DescribeScalingActivities` request with the scalable target's identity
8 * triple (`ServiceNamespace`/`ResourceId`/`ScalableDimension`) injected from
9 * the bound {@link ScalableTarget}.
10 */
11export interface DescribeScalingActivitiesRequest extends Omit<
12 aas.DescribeScalingActivitiesRequest,
13 "ServiceNamespace" | "ResourceId" | "ScalableDimension"
14> {}
15
16/**
17 * Runtime binding for the `DescribeScalingActivities` operation (IAM action
18 * `application-autoscaling:DescribeScalingActivities`).
19 *
20 * Returns the scalable target's scaling activities from the previous six
21 * weeks — what scaled, when, why, and whether it succeeded — including
22 * not-scaled reasons when `IncludeNotScaledActivities` is set. Provide the
23 * implementation with
24 * `Effect.provide(AWS.ApplicationAutoScaling.DescribeScalingActivitiesHttp)`.
25 * ### Observing Scaling Activity
26 * **Example:** List Recent Scaling Activities
27 * ```typescript
28 * // init — bind the operation to the scalable target
29 * const describeScalingActivities =
30 * yield* AWS.ApplicationAutoScaling.DescribeScalingActivities(target);
31 *
32 * // runtime — page through the target's recent activities
33 * const page = yield* describeScalingActivities({ MaxResults: 50 });
34 * for (const activity of page.ScalingActivities ?? []) {
35 * yield* Effect.log(`${activity.StatusCode}: ${activity.Description}`);
36 * }
37 * ```
38 *
39 * **Example:** Include Not-Scaled Reasons
40 * ```typescript
41 * const page = yield* describeScalingActivities({
42 * IncludeNotScaledActivities: true,
43 * });
44 * ```
45 *
46 * @binding
47 */
48export interface DescribeScalingActivities extends Binding.Service<
49 DescribeScalingActivities,
50 "AWS.ApplicationAutoScaling.DescribeScalingActivities",
51 (
52 target: ScalableTarget,
53 ) => Effect.Effect<
54 (
55 request?: DescribeScalingActivitiesRequest,
56 ) => Effect.Effect<
57 aas.DescribeScalingActivitiesResponse,
58 aas.DescribeScalingActivitiesError
59 >
60 >
61> {}
62
63export const DescribeScalingActivities =
64 Binding.Service<DescribeScalingActivities>(
65 "AWS.ApplicationAutoScaling.DescribeScalingActivities",
66 );