1import type * as socialmessaging from "@distilled.cloud/aws/socialmessaging";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { LinkedWhatsAppBusinessAccount } from "./LinkedWhatsAppBusinessAccount.ts";
5
6/**
7 * Request for {@link GetWhatsAppFlow}. The linked WABA `id` is injected by
8 * the binding from the bound {@link LinkedWhatsAppBusinessAccount}.
9 */
10export interface GetWhatsAppFlowRequest extends Omit<
11 socialmessaging.GetWhatsAppFlowInput,
12 "id"
13> {}
14
15/**
16 * Runtime binding for `social-messaging:GetWhatsAppFlow`.
17 *
18 * Retrieves a WhatsApp Flow's details — status, categories, validation
19 * errors, health status — from the bound account.
20 *
21 * The deploy-time half grants `social-messaging:GetWhatsAppFlow` on the
22 * bound WABA's ARN and the runtime half injects the linked account id
23 * into every request.
24 * Provide the implementation with
25 * `Effect.provide(AWS.SocialMessaging.GetWhatsAppFlowHttp)`.
26 * ### Managing WhatsApp Flows
27 * **Example:** Read a Flow
28 * ```typescript
29 * // init — bind the operation to the linked WABA
30 * const getFlow = yield* AWS.SocialMessaging.GetWhatsAppFlow(account);
31 *
32 * // runtime
33 * const flow = yield* getFlow({ flowId: "1234567890" });
34 * const publishable = flow.validationErrors?.length === 0;
35 * ```
36 *
37 * @binding
38 */
39export interface GetWhatsAppFlow extends Binding.Service<
40 GetWhatsAppFlow,
41 "AWS.SocialMessaging.GetWhatsAppFlow",
42 (
43 account: LinkedWhatsAppBusinessAccount,
44 ) => Effect.Effect<
45 (
46 request: GetWhatsAppFlowRequest,
47 ) => Effect.Effect<
48 socialmessaging.GetWhatsAppFlowOutput,
49 socialmessaging.GetWhatsAppFlowError
50 >
51 >
52> {}
53export const GetWhatsAppFlow = Binding.Service<GetWhatsAppFlow>(
54 "AWS.SocialMessaging.GetWhatsAppFlow",
55);