1import type * as identitystore from "@distilled.cloud/aws/identitystore";
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 `UpdateUser` operation (IAM action
8 * `identitystore:UpdateUser`), scoped to one {@link Instance}.
9 *
10 * Applies attribute patch operations to a user in the bound instance's identity store (display name, emails, addresses, ...). The instance's
11 * `IdentityStoreId` is injected from the binding. Provide the implementation with
12 * `Effect.provide(AWS.IdentityCenter.UpdateUserHttp)`.
13 * ### Managing Users
14 * **Example:** Update a User's Display Name
15 * ```typescript
16 * // init — bind the operation to the Identity Center instance
17 * const updateUser = yield* AWS.IdentityCenter.UpdateUser(instance);
18 *
19 * // runtime
20 * yield* updateUser({
21 * UserId: userId,
22 * Operations: [
23 * { AttributePath: "displayName", AttributeValue: "Jane A. Doe" },
24 * ],
25 * });
26 * ```
27 *
28 * @binding
29 */
30export interface UpdateUser extends Binding.Service<
31 UpdateUser,
32 "AWS.IdentityCenter.UpdateUser",
33 (
34 instance: Instance,
35 ) => Effect.Effect<
36 (
37 request: Omit<identitystore.UpdateUserRequest, "IdentityStoreId">,
38 ) => Effect.Effect<
39 identitystore.UpdateUserResponse,
40 identitystore.UpdateUserError
41 >
42 >
43> {}
44export const UpdateUser = Binding.Service<UpdateUser>(
45 "AWS.IdentityCenter.UpdateUser",
46);