1import type * as iam from "@distilled.cloud/aws/iam";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Runtime binding for `iam:GetAccountAuthorizationDetails` — snapshot every
7 * IAM user, group, role, and policy in the account together with their
8 * relationships. The single-call foundation for permission-graph analyzers
9 * and drift detectors.
10 *
11 * Account-singleton operation: the binding takes no arguments and grants
12 * `iam:GetAccountAuthorizationDetails` on `*`. Provide the implementation
13 * with `Effect.provide(AWS.IAM.GetAccountAuthorizationDetailsHttp)`.
14 *
15 * ### Account Auditing
16 * **Example:** Snapshot Roles and Their Policies
17 * ```typescript
18 * // init
19 * const getAuthorizationDetails = yield* IAM.GetAccountAuthorizationDetails();
20 *
21 * // runtime — paginate with the Marker until IsTruncated is false
22 * const page = yield* getAuthorizationDetails({
23 * Filter: ["Role"],
24 * MaxItems: 100,
25 * });
26 * const roles = page.RoleDetailList ?? [];
27 * ```
28 *
29 * @binding
30 */
31export interface GetAccountAuthorizationDetails extends Binding.Service<
32 GetAccountAuthorizationDetails,
33 "AWS.IAM.GetAccountAuthorizationDetails",
34 () => Effect.Effect<
35 (
36 request?: iam.GetAccountAuthorizationDetailsRequest,
37 ) => Effect.Effect<
38 iam.GetAccountAuthorizationDetailsResponse,
39 iam.GetAccountAuthorizationDetailsError
40 >
41 >
42> {}
43export const GetAccountAuthorizationDetails =
44 Binding.Service<GetAccountAuthorizationDetails>(
45 "AWS.IAM.GetAccountAuthorizationDetails",
46 );