1import type * as kendra from "@distilled.cloud/aws/kendra";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Index } from "./SearchIndex.ts";
5
6/**
7 * `UpdateAccessControlConfiguration` request with `IndexId` injected from the bound index.
8 */
9export interface UpdateAccessControlConfigurationRequest extends Omit<
10 kendra.UpdateAccessControlConfigurationRequest,
11 "IndexId"
12> {}
13
14/**
15 * Runtime binding for the `UpdateAccessControlConfiguration` operation (IAM action
16 * `kendra:UpdateAccessControlConfiguration`), scoped to one {@link Index}.
17 *
18 * Updates an access-control configuration's name, description, or
19 * user/group ACLs.
20 * Provide the implementation with
21 * `Effect.provide(AWS.Kendra.UpdateAccessControlConfigurationHttp)`.
22 *
23 * ### Access Control Configurations
24 * **Example:** Update a Runtime ACL
25 * ```typescript
26 * const updateAcl =
27 * yield* AWS.Kendra.UpdateAccessControlConfiguration(index);
28 *
29 * yield* updateAcl({
30 * Id: configurationId,
31 * AccessControlList: [{ Name: "sam", Type: "USER", Access: "ALLOW" }],
32 * });
33 * ```
34 *
35 * @binding
36 */
37export interface UpdateAccessControlConfiguration extends Binding.Service<
38 UpdateAccessControlConfiguration,
39 "AWS.Kendra.UpdateAccessControlConfiguration",
40 (
41 index: Index,
42 ) => Effect.Effect<
43 (
44 request: UpdateAccessControlConfigurationRequest,
45 ) => Effect.Effect<
46 kendra.UpdateAccessControlConfigurationResponse,
47 kendra.UpdateAccessControlConfigurationError
48 >
49 >
50> {}
51export const UpdateAccessControlConfiguration =
52 Binding.Service<UpdateAccessControlConfiguration>(
53 "AWS.Kendra.UpdateAccessControlConfiguration",
54 );