1import type * as qapps from "@distilled.cloud/aws/qapps";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { QApp } from "./QApp.ts";
5
6/**
7 * Request for {@link UpdateQAppPermissions} — `instanceId` and `appId` are injected from the bound Q App.
8 */
9export interface UpdateQAppPermissionsRequest extends Omit<
10 qapps.UpdateQAppPermissionsInput,
11 "instanceId" | "appId"
12> {}
13
14/**
15 * Runtime binding for `qapps:UpdateQAppPermissions`.
16 *
17 * Grants or revokes read/edit permissions on the bound Q App for Identity Center principals. Provide the implementation with
18 * `Effect.provide(AWS.QApps.UpdateQAppPermissionsHttp)`.
19 * ### Permissions
20 * **Example:** Grant Read Access
21 * ```typescript
22 * // init — bind the operation to the Q App
23 * const updateQAppPermissions = yield* AWS.QApps.UpdateQAppPermissions(app);
24 *
25 * // runtime
26 * yield* updateQAppPermissions({
27 * grantPermissions: [{ action: "read", principal: userId }],
28 * });
29 * ```
30 *
31 * @binding
32 */
33export interface UpdateQAppPermissions extends Binding.Service<
34 UpdateQAppPermissions,
35 "AWS.QApps.UpdateQAppPermissions",
36 (
37 app: QApp,
38 ) => Effect.Effect<
39 (
40 request?: UpdateQAppPermissionsRequest,
41 ) => Effect.Effect<
42 qapps.UpdateQAppPermissionsOutput,
43 qapps.UpdateQAppPermissionsError
44 >
45 >
46> {}
47
48export const UpdateQAppPermissions = Binding.Service<UpdateQAppPermissions>(
49 "AWS.QApps.UpdateQAppPermissions",
50);