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 CreateWhatsAppMessageTemplateMedia}. The linked WABA `id` is injected by
8 * the binding from the bound {@link LinkedWhatsAppBusinessAccount}.
9 */
10export interface CreateWhatsAppMessageTemplateMediaRequest extends Omit<
11 socialmessaging.CreateWhatsAppMessageTemplateMediaInput,
12 "id"
13> {}
14
15/**
16 * Runtime binding for `social-messaging:CreateWhatsAppMessageTemplateMedia`.
17 *
18 * Uploads media (from S3) for use in a WhatsApp message template header and
19 * returns the Meta header handle to reference from the template definition.
20 *
21 * The deploy-time half grants `social-messaging:CreateWhatsAppMessageTemplateMedia` 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.CreateWhatsAppMessageTemplateMediaHttp)`.
26 * ### Managing Message Templates
27 * **Example:** Upload Template Header Media
28 * ```typescript
29 * // init — bind the operation to the linked WABA
30 * const uploadTemplateMedia = yield* AWS.SocialMessaging.CreateWhatsAppMessageTemplateMedia(account);
31 *
32 * // runtime
33 * const { metaHeaderHandle } = yield* uploadTemplateMedia({
34 * sourceS3File: { bucketName: "my-assets", key: "header.png" },
35 * });
36 * ```
37 *
38 * @binding
39 */
40export interface CreateWhatsAppMessageTemplateMedia extends Binding.Service<
41 CreateWhatsAppMessageTemplateMedia,
42 "AWS.SocialMessaging.CreateWhatsAppMessageTemplateMedia",
43 (
44 account: LinkedWhatsAppBusinessAccount,
45 ) => Effect.Effect<
46 (
47 request: CreateWhatsAppMessageTemplateMediaRequest,
48 ) => Effect.Effect<
49 socialmessaging.CreateWhatsAppMessageTemplateMediaOutput,
50 socialmessaging.CreateWhatsAppMessageTemplateMediaError
51 >
52 >
53> {}
54export const CreateWhatsAppMessageTemplateMedia =
55 Binding.Service<CreateWhatsAppMessageTemplateMedia>(
56 "AWS.SocialMessaging.CreateWhatsAppMessageTemplateMedia",
57 );