1import type * as repostspace from "@distilled.cloud/aws/repostspace";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Space } from "./Space.ts";
5
6export interface BatchRemoveChannelRoleFromAccessorsRequest extends Omit<
7 repostspace.BatchRemoveChannelRoleFromAccessorsInput,
8 "spaceId"
9> {}
10
11/**
12 * Runtime binding for the `BatchRemoveChannelRoleFromAccessors` operation
13 * (IAM action `repostspace:BatchRemoveChannelRoleFromAccessors` on the
14 * space ARN).
15 *
16 * Removes a channel-level role from up to 100 users or groups in a channel
17 * of the bound {@link Space}. Per-accessor failures are reported in the
18 * output's `errors` list rather than failing the whole call.
19 * Provide the implementation with
20 * `Effect.provide(AWS.RePostSpace.BatchRemoveChannelRoleFromAccessorsHttp)`.
21 * ### Managing Roles
22 * **Example:** Remove a channel role from users
23 * ```typescript
24 * const removeChannelRole =
25 * yield* AWS.RePostSpace.BatchRemoveChannelRoleFromAccessors(space);
26 *
27 * const result = yield* removeChannelRole({
28 * channelId,
29 * accessorIds: ["94682c8d-1234-5678-9abc-e001c76e2c44"],
30 * channelRole: "EXPERT",
31 * });
32 * ```
33 *
34 * @binding
35 */
36export interface BatchRemoveChannelRoleFromAccessors extends Binding.Service<
37 BatchRemoveChannelRoleFromAccessors,
38 "AWS.RePostSpace.BatchRemoveChannelRoleFromAccessors",
39 (
40 space: Space,
41 ) => Effect.Effect<
42 (
43 request: BatchRemoveChannelRoleFromAccessorsRequest,
44 ) => Effect.Effect<
45 repostspace.BatchRemoveChannelRoleFromAccessorsOutput,
46 repostspace.BatchRemoveChannelRoleFromAccessorsError
47 >
48 >
49> {}
50export const BatchRemoveChannelRoleFromAccessors =
51 Binding.Service<BatchRemoveChannelRoleFromAccessors>(
52 "AWS.RePostSpace.BatchRemoveChannelRoleFromAccessors",
53 );