1import type * as ECS from "@distilled.cloud/aws/ecs";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Service } from "./Service.ts";
5
6export interface DescribeServiceRevisionsRequest
7 extends ECS.DescribeServiceRevisionsRequest {}
8
9/**
10 * Runtime binding for `ecs:DescribeServiceRevisions`.
11 *
12 * Bind this operation to a `Service` inside a function runtime to get a
13 * callable that describes the bound service's revisions — the immutable
14 * task-definition + configuration snapshots that deployments roll between.
15 * The host is granted `ecs:DescribeServiceRevisions` on the service's
16 * revisions (revision ARNs come from deployment describe/list responses).
17 * ### Service Deployments
18 * **Example:** Inspect a Target Revision
19 * ```typescript
20 * const describeServiceRevisions =
21 * yield* AWS.ECS.DescribeServiceRevisions(service);
22 *
23 * const response = yield* describeServiceRevisions({
24 * serviceRevisionArns: [revisionArn],
25 * });
26 * const taskDefinition = response.serviceRevisions?.[0]?.taskDefinition;
27 * ```
28 *
29 * @binding
30 */
31export interface DescribeServiceRevisions extends Binding.Service<
32 DescribeServiceRevisions,
33 "AWS.ECS.DescribeServiceRevisions",
34 (
35 service: Service,
36 ) => Effect.Effect<
37 (
38 request: DescribeServiceRevisionsRequest,
39 ) => Effect.Effect<
40 ECS.DescribeServiceRevisionsResponse,
41 ECS.DescribeServiceRevisionsError
42 >
43 >
44> {}
45export const DescribeServiceRevisions =
46 Binding.Service<DescribeServiceRevisions>("AWS.ECS.DescribeServiceRevisions");