| 1 | import type * as iam from "@distilled.cloud/aws/iam"; |
| 2 | import type * as Effect from "effect/Effect"; |
| 3 | import * 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 | */ |
| 31 | export 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 | > {} |
| 43 | export const GetAccountAuthorizationDetails = |
| 44 | Binding.Service<GetAccountAuthorizationDetails>( |
| 45 | "AWS.IAM.GetAccountAuthorizationDetails", |
| 46 | ); |