1import type * as ssoAdmin from "@distilled.cloud/aws/sso-admin";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Instance } from "./Instance.ts";
5
6/**
7 * Runtime binding for the `DescribePermissionSet` operation (IAM action
8 * `sso:DescribePermissionSet`), scoped to one {@link Instance}.
9 *
10 * Reads a permission set's details (name, description, session duration, relay state) from the bound Identity Center instance. The instance's
11 * `InstanceArn` is injected from the binding. Provide the implementation with
12 * `Effect.provide(AWS.IdentityCenter.DescribePermissionSetHttp)`.
13 * ### Reading Permission Sets
14 * **Example:** Read a Permission Set
15 * ```typescript
16 * // init — bind the operation to the Identity Center instance
17 * const describePermissionSet = yield* AWS.IdentityCenter.DescribePermissionSet(instance);
18 *
19 * // runtime
20 * const { PermissionSet } = yield* describePermissionSet({
21 * PermissionSetArn: permissionSetArn,
22 * });
23 * console.log(PermissionSet?.Name, PermissionSet?.SessionDuration);
24 * ```
25 *
26 * @binding
27 */
28export interface DescribePermissionSet extends Binding.Service<
29 DescribePermissionSet,
30 "AWS.IdentityCenter.DescribePermissionSet",
31 (
32 instance: Instance,
33 ) => Effect.Effect<
34 (
35 request: Omit<ssoAdmin.DescribePermissionSetRequest, "InstanceArn">,
36 ) => Effect.Effect<
37 ssoAdmin.DescribePermissionSetResponse,
38 ssoAdmin.DescribePermissionSetError
39 >
40 >
41> {}
42export const DescribePermissionSet = Binding.Service<DescribePermissionSet>(
43 "AWS.IdentityCenter.DescribePermissionSet",
44);