---
title: "Test webhooks"
method: POST
path: "/YOUR-WEBHOOK-URL"
tags: ["Webhook Payload Object"]
---

# Test webhooks

`POST /YOUR-WEBHOOK-URL`

Sends a payload to sample URL for webhooks testing.

## Headers

- `YCloud-Signature` string

## Request body

- Event — Represents a webhook event payload. Every event contains certain common properties: `id`, `type`, `apiVersion`, `createTime`. Each event may also contain some properties unique to the event. For example, `sms` is returned when `type` is `sms.message.updated`.
  - `id` string, required — Unique ID for the event.
  - `type` 'contact.attributes_changed' | 'contact.created' | 'contact.deleted' | 'contact.unsubscribe.created' | 'contact.unsubscribe.deleted' | 'email.delivery.updated' | 'sms.message.updated' | 'sms.inbound.received' | 'voice.message.updated' | 'whatsapp.business_account.deleted' | 'whatsapp.business_account.reviewed' | 'whatsapp.business_account.updated' | 'whatsapp.inbound_message.received' | 'whatsapp.message.updated' | 'whatsapp.group.lifecycle_update' | 'whatsapp.group.participants_update' | 'whatsapp.group.settings_update' | 'whatsapp.group.status_update' | 'whatsapp.phone_number.deleted' | 'whatsapp.phone_number.name_updated' | 'whatsapp.phone_number.quality_updated' | 'whatsapp.phone_number.business_username_updated' | 'whatsapp.template.category_updated' | 'whatsapp.template.quality_updated' | 'whatsapp.template.reviewed' | 'whatsapp.call.connect' | 'whatsapp.call.terminate' | 'whatsapp.call.status.updated' | 'whatsapp.flow.status_change' | 'whatsapp.payment.updated' | 'whatsapp.user.preferences', required — Type of event.
  - `apiVersion` string, required — The API version used to render this event.
  - `createTime` string, date-time, required — The time at which this event was created, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
  - `contactAttributesChanged` ContactAttributesChanged — Represents a contact attributes changed event. Contains information about which contact attributes were modified and their old/new values.
    - `id` string, required — The ID of the contact whose attributes were changed.
    - `updateTime` string, date-time, required — The time at which the contact attributes were updated, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
    - `changedAttributes` object, required — An object containing the changed attributes. Each key represents the name of the changed attribute, and the value contains the old value, new value, and change actions.
  - `contactCreated` ContactCreated — Represents a contact created event. Contains the full contact information that was created.
    - `id` string, required — Unique ID for the object.
    - `nickName` string — Contact's nickname.
    - `realName` string — Contact's real name.
    - `phoneNumber` string — Unique Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `countryCode` string — Two-letter country abbreviation. See [ISO 3166-1 alpha-2 country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
    - `countryName` string — Full country name.
    - `email` string — The contact's email address. If present, the email address must be unique.
    - `sourceType` string — The source type where the contact was created.
    - `sourceId` string — The source ID where the contact was created.
    - `sourceUrl` string — The source URL where the contact was created.
    - `lastSeen` string, date-time — The time at which the contact last sent a message to your business, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
    - `lastConnectedNumber` string — The business phone number that the contact last connected to.
    - `ownerEmail` string — The email address of the contact's owner.
    - `tags` string[] — Contact's tags.
    - `createTime` string, date-time — The time at which the contact was created, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
    - `updateTime` string, date-time — The time at which the contact was last updated, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
    - `blocked` boolean — Whether the contact is blocked.
    - `customAttributes` object — Contact's custom attributes as key-value pairs.
  - `contactDeleted` ContactDeleted — Represents a contact deleted event. Contains the contact information that was deleted.
    - `id` string, required — Contact ID
    - `nickName` string — Contact's nickname.
    - `phoneNumber` string — Unique Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `updateTime` string, date-time — The time at which the contact was last updated, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
  - `contactUnsubscribeCreated` ContactUnsubscribeCreated — Represents a customer initiates an unsubscribe event.
    - `phoneNumber` string — Unique Customer Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `source` 'Whatsapp' | 'Inbox' | 'Chatbot' | 'API' | 'Manual' — The source from which a customer initiates an unsubscribe. - `Whatsapp`: The customer initiated an unsubscribe on the whatsapp client. - `Inbox`:You added a customer to the unsubscribe list on the Inbox page of YCloud. - `Chatbot`: The message sent by the customer triggered the unsubscribe keyword configured by the Chatbot. - `API`: You add customers to the unsubscribe list through YCloud's OpenAPI. - `Manual`: You added a customer to the unsubscribe list on the Contact page of YCloud.
    - `updateTime` string, date-time — The time when a customer initiates an unsubscribe, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
  - `contactUnsubscribeDeleted` ContactUnsubscribeDeleted — Represents a customer resumed their subscription event.
    - `phoneNumber` string — Unique Customer Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `source` 'Whatsapp' | 'API' | 'Manual' — The source from which a customer resumed their subscription - `Whatsapp`: The customer resumed their subscription on the whatsapp client - `API`: You remove the customer from the unsubscribe list through the OpenAPI of YCloud - `Manual`: You remove the customer from the unsubscribe list on the Contact page of YCloud.
    - `updateTime` string, date-time — The time when customers cancel unsubscribe, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
  - `emailDelivery` EmailDelivery — Represents an email delivery report.
    - `emailId` string, required — Unique ID for the related email you've previously sent.
    - `recipientAddress` string, required — A recipient's email address.
    - `status` 'sending' | 'failed' | 'sent' | 'delivered' | 'undelivered' — Delivery status of the email to the specific recipient address. - `sending`: The messaging request is accepted by our system. - `failed`: The message failed to be sent from our system. - `sent`: The message has been sent from our system. - `delivered`: Our system has received a delivery receipt indicating that message is delivered. - `undelivered`: Our system has received a delivery receipt indicating that message is not delivered.
    - `errorCode` string — Error code when the email is undeliverable.
    - `errorMessage` string — Error message when the email is undeliverable.
    - `externalId` string — The `externalId` you set when you sent the email.
    - `bizType` string — This can be either empty or one of `email`, or `verify`. Defaults to `email`. - `email`: Indicates that the message is sent via the **Email** product. - `verify`: Indicates that the message is sent via the **Verify** product.
    - `verificationId` string — The verification ID. Included only when `bizType` is `verify`.
  - `sms` Sms
    - `id` string, required — Unique ID for the object.
    - `to` string, required — The recipient's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `text` string — The text of this message.
    - `senderId` string — Sender ID to be used.
    - `regionCode` string — [ISO 3166-1 alpha-2 country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
    - `totalSegments` integer — Number of message segments. See [SMS character encoding](https://helpdocs.ycloud.com/help-center/integrations/channels/global-sms/sms-basic-principles#sms-encoding) for more info.
    - `totalPrice` number, double — Total price of this message.
    - `currency` string — Price currency. [ISO 4217 currency code](https://en.wikipedia.org/wiki/ISO_4217).
    - `status` 'accepted' | 'failed' | 'sent' | 'delivered' | 'undelivered' — Delivery status. One of `accepted`, `sent`, `delivered`, `undelivered`, or `failed`. - `accepted`: The messaging request is accepted by our system. - `failed`: The message failed to be sent from our system. - `sent`: The message has been sent from our system. - `delivered`: Our system has received a delivery receipt indicating that message is delivered. - `undelivered`: Our system has received a delivery receipt indicating that message is not delivered.
    - `errorCode` string — Error code when the message is undeliverable.
    - `createTime` string, date-time — The time at which this message was created, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-03-01T12:00:00.000Z`.
    - `updateTime` string, date-time — The time at which the delivery report for this message was updated, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-03-01T12:00:00.000Z`.
    - `externalId` string — A unique (recommended) string to reference the object. This can be an order number or similar, and can be used to reconcile the object with your internal systems.
    - `callbackUrl` string — Delivery report URL. You can provide a URL, and we will push the updated status report to your server in time. e.g., https://httpbin.org/anything?tag=api. Note: We recommend configuring Webhook Endpoints instead.
    - `bizType` string — This can be either empty or one of `sms`, or `verify`. Defaults to `sms`. - `sms`: Indicates that the message is sent via the **SMS** product. - `verify`: Indicates that the message is sent via the **Verify** product.
    - `verificationId` string — The verification ID. Included only when `bizType` is `verify`.
  - `smsInbound` SmsInbound — Represents an inbound SMS message, which means a user replies to your message.
    - `id` string — Unique ID of the message.
    - `from` string — The user's phone number who sent the message to your registered sender ID, formatted in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `to` string — The receiver's phone number, which is one of your registered Sender IDs.
    - `text` string — The text of this message.
    - `sendTime` string, date-time — The time at which this message was sent, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
  - `voice` Voice
    - `id` string, required — Unique ID for the object.
    - `to` string, required — The recipient's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `verificationCode` string — The verification code to be sent, 4 to 6 digits.
    - `language` string — [ISO 639 Language Code](https://www.iso.org/iso-639-language-codes.html).
    - `regionCode` string — [ISO 3166-1 alpha-2 country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
    - `totalSegments` integer — Number of message segments. It's always 1 for voice calls.
    - `totalPrice` number, double — Total price of this message.
    - `currency` string — Price currency. [ISO 4217 currency code](https://en.wikipedia.org/wiki/ISO_4217).
    - `status` 'accepted' | 'failed' | 'sent' | 'delivered' | 'undelivered' — Delivery status. One of `accepted`, `sent`, `delivered`, `undelivered`, or `failed`. - `accepted`: The messaging request is accepted by our system. - `failed`: The message failed to be sent from our system. - `sent`: The message has been sent from our system. - `delivered`: Our system has received a delivery receipt indicating that message is delivered. - `undelivered`: Our system has received a delivery receipt indicating that message is not delivered.
    - `errorCode` string — Error code when the message is undeliverable.
    - `createTime` string, date-time — The time at which this message was created, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-03-01T12:00:00.000Z`.
    - `updateTime` string, date-time — The time at which the delivery report for this message was updated, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-03-01T12:00:00.000Z`.
    - `externalId` string — A unique (recommended) string to reference the object. This can be an order number or similar, and can be used to reconcile the object with your internal systems.
    - `callbackUrl` string — Delivery report URL. You can provide a URL, and we will push the updated status report to your server in time. e.g., https://httpbin.org/anything?tag=api. Note: We recommend configuring Webhook Endpoints instead.
    - `bizType` string — This can be either empty or one of `voice`, or `verify`. Defaults to `voice`. - `voice`: Indicates that the message is sent via the **Voice** product. - `verify`: Indicates that the message is sent via **Verify** product.
    - `verificationId` string — The verification ID. Included only when `bizType` is `verify`.
  - `whatsappBusinessAccount` WhatsappBusinessAccount — Represents a specific [WhatsApp Business Account (WABA)](https://developers.facebook.com/docs/whatsapp/overview/business-accounts).
    - `id` string — WhatApp Business Account ID.
    - `name` string — User-friendly name to differentiate WhatsApp Business Accounts.
    - `currency` string — The currency in which the payment transactions for the WhatsApp Business Account will be processed.
    - `messageTemplateNamespace` string — Namespace string for the message templates that belong to the WhatsApp Business Account.
    - `accountReviewStatus` 'PENDING' | 'APPROVED' | 'REJECTED' — WhatsApp Business Account review status.
    - `businessVerificationStatus` 'expired' | 'failed' | 'ineligible' | 'not_verified' | 'pending' | 'pending_need_more_info' | 'pending_submission' | 'rejected' | 'revoked' | 'verified' — Current status of business verification of Meta Business Account which owns this WhatsApp Business Account.
    - `country` string — Country of the WhatsApp Business Account's owning Meta Business account.
    - `ownershipType` string — Ownership type of the WhatsApp Business Account.
    - `paymentMethodAttached` boolean — Whether we have attached a payment method to the WhatsApp Business Account.
    - `primaryFundingId` string — Primary funding ID for the WhatsApp Business Account paid service.
    - `purchaseOrderNumber` string — The purchase order number supplied by the business for payment management purposes.
    - `timezoneId` string — The timezone ID of the WhatsApp Business Account. See [Timezone IDs](https://developers.facebook.com/docs/marketing-api/reference/ad-account/timezone-ids).
    - `decision` 'APPROVED' | 'REJECTED' — Used if a decision about WhatsApp accounts or phone numbers has been made.
    - `updateEvent` 'DISABLED_UPDATE' | 'ACCOUNT_RESTRICTION' | 'ACCOUNT_VIOLATION' | 'PARTNER_REMOVED' | 'PARTNER_APP_UNINSTALLED' | 'AUTH_INTL_PRICE_ELIGIBILITY_UPDATE' | 'BUSINESS_PRIMARY_LOCATION_COUNTRY_UPDATE' — Indicates the update event type of the WABA when a notification is sent to you to report a [policy violation](https://developers.facebook.com/docs/whatsapp/overview/policy-enforcement), a WABA has been banned and more. - `DISABLED_UPDATE`: WhatsApp Business Account Banned. - `ACCOUNT_RESTRICTION`: WhatsApp Business Account Restricted Due To Policy Violations. - `ACCOUNT_VIOLATION`: WhatsApp Business Account Violates Policy. - `PARTNER_REMOVED`: WhatsApp Business Account was removed from the partner connection. - `PARTNER_APP_UNINSTALLED`: WhatsApp Business Account partner app was uninstalled. - `AUTH_INTL_PRICE_ELIGIBILITY_UPDATE`: WhatsApp Business Account is eligible for the [authentication-international rate](https://developers.facebook.com/docs/whatsapp/pricing/authentication-international-rates). - `BUSINESS_PRIMARY_LOCATION_COUNTRY_UPDATE`: Business's [primary business location](https://developers.facebook.com/docs/whatsapp/pricing/authentication-international-rates#primary-business-location) is set.
    - `banState` 'SCHEDULE_FOR_DISABLE' | 'DISABLE' | 'REINSTATE' — The ban state of the WhatsApp Business Account.
    - `banDate` string — The date when the WABA is banned.
    - `violationType` string — Used to report violations imposed on the WABA. See also [WhatsApp Business Platform Policy Violations](https://developers.facebook.com/docs/whatsapp/overview/policy-enforcement/violations).
    - `restrictions` WhatsappBusinessAccountRestrictionInfo[] — Used to report restrictions imposed on the WABA, when that WABA violates [WhatsApp Business Platform policies](https://developers.facebook.com/docs/whatsapp/overview/policy-enforcement).
      - `restrictionType` 'RESTRICTED_ADD_PHONE_NUMBER_ACTION' | 'RESTRICTED_BIZ_INITIATED_MESSAGING' | 'RESTRICTED_CUSTOMER_INITIATED_MESSAGING' — Restriction type.
      - `expiration` string, date-time — The time at which this restriction expires, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
    - `authIntlRateEligibilityCountries` WhatsappAuthIntlRateEligibilityCountry[] — Starting June 1, 2024, we are updating our authentication rate card and introducing a new authentication-international rate. This rate will apply in the the following countries: - June 1, 2024 – Indonesia (country calling code +62, country code `ID`) - July 1, 2024 – India (country calling code +91, country code `IN`) See also [Authentication-International Rates](https://developers.facebook.com/docs/whatsapp/pricing/authentication-international-rates).
      - `countryCode` string — [ISO 3166-1 alpha-2 country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
      - `startTime` string, date-time — Date when newly-opened authentication conversations are subject to authentication-international rates, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2024-07-01T00:00:00.000Z`.
    - `primaryBusinessLocation` string — Your primary business location is the country where your business is based. It will appear in the Business Manager under the Primary Business Location field starting May 1, 2024. [ISO 3166-1 alpha-2 country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
    - `removedReason` string — Raw reason from the WhatsApp Business Account deletion event. Known values include: - `ACCOUNT_DISCONNECTED`: The account was disconnected due to enforcement or because the WhatsApp account was explicitly deleted. - `BUSINESS_DOWNGRADE`: The phone number was registered with the consumer WhatsApp app. - `CHANGE_NUMBER`: The WhatsApp phone number was changed. - `COMPANION_INACTIVITY`: A companion device was inactive for approximately 30 days. - `PRIMARY_INACTIVITY`: A primary device was inactive for approximately 30 days. - `USER_RE_REGISTERED`: WhatsApp was re-registered on a new device. Unknown values are returned as received.
    - `removedInitiatedBy` string — Raw initiator from the WhatsApp Business Account deletion event. Known values include: - `USER`: The removal was initiated by the WhatsApp user. - `SYSTEM`: The removal was initiated by the Meta system. Unknown values are returned as received.
    - `removedTime` string, date-time — The time when the WhatsApp Business Account deletion event was received, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2026-05-19T12:00:00.000Z`.
  - `whatsappInboundMessage` WhatsappInboundMessage — WhatsApp inbound message object.
    - `id` string, required — Unique ID for the object.
    - `wamid` string — The original message ID on WhatsApp's platform.
    - `wabaId` string — WhatsApp Business Account ID.
    - `from` string — The customer's phone number who sent the message to the business, formatted in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `fromUserId` string — The customer's WhatsApp Business-scoped user ID (BSUID).
    - `fromParentUserId` string — The customer's parent WhatsApp Business-scoped user ID.
    - `customerProfile` WhatsappProfile — Represents the profile of a WhatsApp account.
      - `name` string — Name of the WhatsApp account.
      - `username` string — WhatsApp username.
    - `to` string — The recipient's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `sendTime` string, date-time — The time at which this message is sent, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
    - `type` 'text' | 'image' | 'video' | 'audio' | 'document' | 'sticker' | 'contacts' | 'location' | 'interactive' | 'button' | 'reaction' | 'request_welcome' | 'order' | 'system' | 'unsupported' — WhatsApp inbound message type. See also [WhatsApp webhook messages object](https://developers.facebook.com/docs/whatsapp/cloud-api/webhooks/components#messages-object).
    - `text` WhatsappInboundMessageText — When the notification describes a text message, the text object provides the body of the text message.
      - `body` string — Message text.
    - `image` WhatsappInboundMessageMedia — When a message with media (`image` | `document` | `audio` | `video` | `sticker`) is received, the WhatsApp Business API client will download the media. Once the media is downloaded, a notification is sent to your Webhook. This message contains information that identifies the media object and enables you to find and download the object.
      - `id` string — ID of the media. Can be used to delete the media if stored locally on the client.
      - `link` string — The url to download the media file. Note that This link can be directly accessed in a few minutes for the convenience of the consumer, but you should always include an `X-API-Key` header to download this file within a month.
      - `caption` string — The provided caption for the media. Only present if specified.
      - `filename` string — Filename on the sender's device. This will only be present in `document` media messages.
      - `metadata` object — Metadata pertaining to `sticker` media.
      - `mime_type` string — Mime type of the media.
      - `sha256` string — Checksum.
    - `video` WhatsappInboundMessageMedia — When a message with media (`image` | `document` | `audio` | `video` | `sticker`) is received, the WhatsApp Business API client will download the media. Once the media is downloaded, a notification is sent to your Webhook. This message contains information that identifies the media object and enables you to find and download the object.
      - `id` string — ID of the media. Can be used to delete the media if stored locally on the client.
      - `link` string — The url to download the media file. Note that This link can be directly accessed in a few minutes for the convenience of the consumer, but you should always include an `X-API-Key` header to download this file within a month.
      - `caption` string — The provided caption for the media. Only present if specified.
      - `filename` string — Filename on the sender's device. This will only be present in `document` media messages.
      - `metadata` object — Metadata pertaining to `sticker` media.
      - `mime_type` string — Mime type of the media.
      - `sha256` string — Checksum.
    - `audio` WhatsappInboundMessageMedia — When a message with media (`image` | `document` | `audio` | `video` | `sticker`) is received, the WhatsApp Business API client will download the media. Once the media is downloaded, a notification is sent to your Webhook. This message contains information that identifies the media object and enables you to find and download the object.
      - `id` string — ID of the media. Can be used to delete the media if stored locally on the client.
      - `link` string — The url to download the media file. Note that This link can be directly accessed in a few minutes for the convenience of the consumer, but you should always include an `X-API-Key` header to download this file within a month.
      - `caption` string — The provided caption for the media. Only present if specified.
      - `filename` string — Filename on the sender's device. This will only be present in `document` media messages.
      - `metadata` object — Metadata pertaining to `sticker` media.
      - `mime_type` string — Mime type of the media.
      - `sha256` string — Checksum.
    - `document` WhatsappInboundMessageMedia — When a message with media (`image` | `document` | `audio` | `video` | `sticker`) is received, the WhatsApp Business API client will download the media. Once the media is downloaded, a notification is sent to your Webhook. This message contains information that identifies the media object and enables you to find and download the object.
      - `id` string — ID of the media. Can be used to delete the media if stored locally on the client.
      - `link` string — The url to download the media file. Note that This link can be directly accessed in a few minutes for the convenience of the consumer, but you should always include an `X-API-Key` header to download this file within a month.
      - `caption` string — The provided caption for the media. Only present if specified.
      - `filename` string — Filename on the sender's device. This will only be present in `document` media messages.
      - `metadata` object — Metadata pertaining to `sticker` media.
      - `mime_type` string — Mime type of the media.
      - `sha256` string — Checksum.
    - `sticker` WhatsappInboundMessageMedia — When a message with media (`image` | `document` | `audio` | `video` | `sticker`) is received, the WhatsApp Business API client will download the media. Once the media is downloaded, a notification is sent to your Webhook. This message contains information that identifies the media object and enables you to find and download the object.
      - `id` string — ID of the media. Can be used to delete the media if stored locally on the client.
      - `link` string — The url to download the media file. Note that This link can be directly accessed in a few minutes for the convenience of the consumer, but you should always include an `X-API-Key` header to download this file within a month.
      - `caption` string — The provided caption for the media. Only present if specified.
      - `filename` string — Filename on the sender's device. This will only be present in `document` media messages.
      - `metadata` object — Metadata pertaining to `sticker` media.
      - `mime_type` string — Mime type of the media.
      - `sha256` string — Checksum.
    - `interactive` WhatsappInboundMessageInteractive — When a customer has interacted with your message, this object is included in the message object.
      - `type` 'button_reply' | 'list_reply' | 'nfm_reply' | 'call_permission_reply' — The type of interactive message received. - `button_reply`: Sent when a customer clicks a button. - `list_reply`: Sent when a customer selects an item from a list. - `nfm_reply`: Sent when a customer responds to a WhatsApp Flow (Next Feature Messaging). - `call_permission_reply`: Sent when a customer responds to a call permission request.
      - `button_reply` object — Sent when a customer clicks a button. Returned when `type` is `button_reply`.
        - `id` string — Unique ID of the clicked button.
        - `title` string — Title of a button.
      - `list_reply` object — Sent when a customer selects an item from a list. Returned when `type` is `list_reply`.
        - `id` string — Unique ID of the selected list item.
        - `title` string — Title of the selected list item.
        - `description` string — Description of the selected row.
      - `nfm_reply` object — Sent when a customer responds to a WhatsApp Flow (Next Feature Messaging). Returned when `type` is `nfm_reply`.
        - `name` string — The name of the flow or form being replied to.
        - `response_json` string — JSON string containing the user's responses to the flow. Contains form field values and flow token.
        - `body` string — The body content of the flow reply message.
      - `call_permission_reply` object — Sent when a customer responds to a call permission request. Returned when `type` is `call_permission_reply`. This occurs when WhatsApp prompts users to grant callback permissions after they call your business.
        - `response` 'accept' | 'reject' — The customer's response to the call permission request. - `accept`: User granted permission for business to call back - `reject`: User rejected permission for business to call back
        - `expiration_timestamp` integer — The timestamp (in seconds) when the call permission expires. Only present when response is "accept" and is_permanent is false.
        - `is_permanent` boolean — Whether the permission is permanent or temporary. - `true`: Permanent authorization (no expiration) - `false`: Temporary authorization (expires at expiration_timestamp)
    - `location` WhatsappInboundMessageLocation — When you receive a notification of a user's static location, the location object provides the details of the location.
      - `latitude` number, double — Latitude of location being sent.
      - `longitude` number, double — Longitude of location being sent.
      - `address` string — Address of the location.
      - `name` string — Name of the location.
      - `url` string — URL for the website where the user downloaded the location information.
    - `button` WhatsappInboundMessageButton — When the message type field is set to `button`, this object is included in the message object.
      - `payload` string — The payload for a button set up by the business that a customer clicked as part of an interactive message.
      - `text` string — Button text.
    - `contacts` WhatsappMessageContact[]
      - `addresses` WhatsappMessageContactAddress[]
        - `street` string — Street number and name.
        - `city` string — City name.
        - `state` string — State abbreviation.
        - `zip` string — ZIP code.
        - `country` string — Full country name.
        - `country_code` string — Two-letter country abbreviation.
        - `type` string — Standard values are `HOME` and `WORK`.
      - `birthday` string — `YYYY-MM-DD` formatted string.
      - `emails` WhatsappMessageContactEmail[]
        - `email` string — Email address.
        - `type` string — Standard values are `HOME` and `WORK`.
      - `name` WhatsappMessageContactName, required — Full contact name formatted as a name object.
        - `formatted_name` string, required — Full name, as it normally appears.
        - `first_name` string — First name.
        - `last_name` string — Last name.
        - `middle_name` string — Middle name.
        - `suffix` string — Name suffix.
        - `prefix` string — Name prefix.
      - `org` WhatsappMessageContactOrg — Contact organization information formatted as an org object.
        - `company` string — Name of the contact's company.
        - `department` string — Name of the contact's department.
        - `title` string — Contact's business title.
      - `phones` WhatsappMessageContactPhone[] — Contact phone number(s) formatted as a phone object.
        - `phone` string — Automatically populated with the `wa_id` value as a formatted phone number.
        - `type` string — Standard Values are `CELL`, `MAIN`, `IPHONE`, `HOME`, and `WORK`.
        - `wa_id` string — WhatsApp ID.
      - `urls` WhatsappMessageContactUrl[] — Contact URL(s) formatted as a urls object.
        - `url` string — URL.
        - `type` string — Standard values are `HOME` and `WORK`.
    - `reaction` WhatsappMessageReaction — When a user reacts to messages with an emoji, the message type is set to `reaction`, and this field is included.
      - `message_id` string, required — Specifies the `wamid` of the message received that contained the reaction.
      - `emoji` string — **Required** when you send a `reaction` message. Set it to `""` if you want to remove the emoji. **Optional** when you received a message from a user. This field is included when a user reacts to messages with an emoji. Otherwise, it indicates a user removed the emoji.
    - `order` WhatsappInboundMessageOrder — When a customer places an order, the message type is set to `order`, and this field is included.
      - `catalog_id` string — The catalog ID.
      - `product_items` WhatsappInboundMessageOrderProductItem[]
        - `product_retailer_id` string — The product SKU identifier.
        - `quantity` integer — Number of item.
        - `item_price` number, double — Unitary price of item.
        - `currency` string — Price currency. [ISO 4217 currency code](https://en.wikipedia.org/wiki/ISO_4217).
      - `text` string — Text message sent along with the order.
    - `system` WhatsappInboundMessageSystem — When the message type is set to `system`, this field is included. This object is added to Webhooks if a user has changed their phone number and if a user’s identity has potentially changed on WhatsApp.
      - `body` string — Describes the system message event. Supported use cases are: - Phone number update: for when a user changes from an old number to a new number. - Identity update: for when a user identity has changed.
      - `new_wa_id` string — **Added to Webhooks for phone number updates.** New WhatsApp ID of the customer.
      - `type` string — Supported types are: - `user_changed_number`: for a user changed number notification. - `user_identity_changed`: for user identity changed notification.
      - `user` string — **Added to Webhooks for identity updates.** The new WhatsApp user ID of the customer.
    - `errors` WhatsappInboundMessageError[]
      - `code` string — The error code.
      - `title` string — The error title.
      - `message` string — The error message.
      - `error_data` object — An error data object with the following properties: - `details`: A string describing the reason for the error. Example: `Message type is currently not supported.`.
    - `context` WhatsappInboundMessageContext — Message context.
      - `forwarded` boolean — **Added to Webhooks if message was forwarded.** Set to `true` if the received message has been forwarded.
      - `frequently_forwarded` boolean — **Added to Webhooks if message has been frequently forwarded.** Set to `true` if the received message has been forwarded more than five times.
      - `from` string — **Added to Webhooks if message is an inbound reply to a sent message.** The WhatsApp ID (a phone number without the '+' prefix) of the sender of the sent message.
      - `id` string — **Optional.** The `wamid` for the sent message for an inbound reply. `wamid` is the original message ID on WhatsApp’s platform.
      - `referred_product` WhatsappInboundMessageReferredProduct — A Product Inquiry Message is received when a user is asking for more information about a specific product. These can be received as in two scenarios: 1. When a customer replies to Single or Multi-Product Messages. 2. When a customer accesses a business’ catalog through another entry point, navigates to a Product Details Page, and clicks Message Business about this Product.
        - `catalog_id` string — The catalog ID.
        - `product_retailer_id` string — The product SKU identifier.
    - `referral` WhatsappInboundMessageReferral — When a user messages businesses using call-to-actions buttons on [Ads that Click to WhatsApp](https://www.facebook.com/business/help/447934475640650) or a [Facebook Page call-to-action buttons](https://www.facebook.com/help/977869848936797), this field is included as an attachment.
      - `source_url` string — Specifies the URL that leads to the ad or post clicked by the user. Opening this URL takes you to the ad viewed by your user.
      - `source_type` string — Specifies the type of the ad's source. Supported values are "ad" or "post".
      - `source_id` string — Specifies the Meta ID for an ad or post.
      - `headline` string — Specifies the headline used in the ad or post that generated the message.
      - `body` string — The description, or body, from the ad or post that generated the message.
      - `media_type` string — Media present in the ad or post the user clicked. Supported values are "image" or "video".
      - `image_url` string — **Added if media_type is "image".** Contains a URL to the raw image.
      - `video_url` string — **Added if media_type is "video".** Contains a URL to the video.
      - `thumbnail_url` string — **Added if media_type is "video".** Contains a URL to the thumbnail image of the clicked video.
      - `ctwa_clid` string — Click ID generated by Meta for ads that click to WhatsApp.
    - `groupId` string — WhatsApp group ID. This field is included when the inbound message is sent in a WhatsApp group.
  - `whatsappMessage` WhatsappMessage — WhatsApp outbound message object.
    - `id` string, required — Unique ID of the message.
    - `wamid` string — The original message ID on WhatsApp's platform.
    - `wabaId` string, required — WhatsApp Business Account ID.
    - `from` string, required — The sender's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `to` string — The recipient's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `recipient` string — The recipient value submitted in the request when a BSUID or parent BSUID was used.
    - `recipientUserId` string — The recipient's WhatsApp Business-scoped user ID (BSUID).
    - `toUserId` string — Alias of `recipientUserId` kept for compatibility.
    - `parentRecipientUserId` string — The recipient's parent WhatsApp Business-scoped user ID.
    - `toParentUserId` string — Alias of `parentRecipientUserId` kept for compatibility.
    - `customerProfile` WhatsappProfile — Represents the profile of a WhatsApp account.
      - `name` string — Name of the WhatsApp account.
      - `username` string — WhatsApp username.
    - `conversation` WhatsappConversation — WhatsApp defines a conversation as a 24-hour session of messaging between a person and a business. See also [Conversation-Based Pricing](https://developers.facebook.com/docs/whatsapp/pricing).
      - `id` string — Unique ID for the object.
      - `type` 'FREE_ENTRY' | 'FREE_TIER' | 'REGULAR' — Conversation type. There is a charge when the first business message of this conversation is delivered, initiating the 24-hour conversation session. As such, the conversation type can be `null` before the first message is delivered. - `FREE_ENTRY`: Conversations originating from a [free entry point](https://developers.facebook.com/docs/whatsapp/pricing#free-entry-point-conversations). - `FREE_TIER`: Conversations within the monthly [free tier](https://developers.facebook.com/docs/whatsapp/pricing#free-tier-conversations). - `REGULAR`: Any conversations that did not originate from a [free entry point](https://developers.facebook.com/docs/whatsapp/pricing#free-entry-point-conversations) or are above the monthly [free tier](https://developers.facebook.com/docs/whatsapp/pricing#free-tier-conversations) allotment.
      - `originType` 'referral_conversion' | 'authentication' | 'marketing' | 'utility' | 'service' — Indicates [conversation category](https://developers.facebook.com/docs/whatsapp/pricing#conversation-categories). This can also be referred to as a conversation entry point. - `referral_conversion`: Indicates a [free entry point conversation](https://developers.facebook.com/docs/whatsapp/pricing#free-entry-point-conversations). - `authentication`: Indicates the conversation was opened by a business sending template categorized as `AUTHENTICATION` to the customer. This applies any time it has been more than 24 hours since the last customer message. - `marketing`: Indicates the conversation was opened by a business sending template categorized as `MARKETING` to the customer. This applies any time it has been more than 24 hours since the last customer message. - `utility`: Indicates the conversation was opened by a business sending template categorized as `UTILITY` to the customer. This applies any time it has been more than 24 hours since the last customer message. - `service`: Indicates that the conversation opened by a business replying to a customer within a [customer service window](https://developers.facebook.com/docs/whatsapp/pricing#customer-service-windows).
      - `expireTime` string, date-time — Date when the conversation expires, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
    - `type` 'template' | 'text' | 'image' | 'audio' | 'video' | 'document' | 'sticker' | 'location' | 'interactive' | 'contacts' | 'reaction' — WhatsApp outbound message type. See also [WhatsApp messages](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/messages).
    - `template` WhatsappMessageTemplate — Use for sending a WhatsApp `template` message.
      - `name` string, required — Name of the template.
      - `language` object, required — Contains a language object. Specifies the language the template may be rendered in.
        - `code` string, required — The code of the language or locale to use. Accepts both language and language_locale formats (e.g., en and en_US). See [Supported Languages](https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/supported-languages) for all codes.
        - `policy` string — The language policy the message should follow. Default (and only supported option): `deterministic`, which means that WhatsApp delivers the message template in exactly the language and locale asked for.
      - `components` WhatsappMessageTemplateComponent[] — **Required when the specified template contains variables or media.** Array of component objects containing the parameters of the message.
        - `type` 'header' | 'body' | 'button' | 'limited_time_offer' | 'carousel' | 'order_status', required — Component type.
        - `sub_type` 'quick_reply' | 'url' | 'copy_code' | 'catalog' | 'mpm' | 'flow' | 'order_details' — **Required when type is `button`.** Type of button. - `quick_reply`: Refers to a previously created quick reply button that allows for the customer to return a predefined message. - `url`: Refers to a previously created url button that allows the customer to visit the URL generated by appending the text parameter to the predefined prefix URL in the template. - `copy_code`: Refers to a previously created copy code button that allows the customer to copy a text string (defined when the template is sent in a template message) to the device's clipboard when tapped by the app user. - `catalog`: Refers to a previously created catalog button that allows the customer to view your product catalog. - `mpm`: Refers to a previously created MPM (multi-product message) button that allows the customer to browser products and sections. - `flow`: Refers to a previously created flow button that allows the customer to interact with a [flow](https://developers.facebook.com/docs/whatsapp/flows). - `order_details`: Refers to a previously created order details button that allows the customer to view the details of an order.
        - `index` integer — **Required when `type` = `button`. Not used for the other types.** Indicates order in which button should appear, if the template uses multiple buttons. Buttons are zero-indexed, so setting value to 0 will cause the button to appear first, and another button with an index of 1 will appear next, etc.
        - `parameters` WhatsappMessageTemplateComponentParameter[] — **Required when `type` = `button`, or there are variables in the corresponding template component, or the template `HEADER` format is media (`IMAGE`, `VIDEO`, or `DOCUMENT`).** Array of parameter objects with the content of the message.
          - `type` 'text' | 'image' | 'gif' | 'video' | 'document' | 'payload' | 'coupon_code' | 'limited_time_offer' | 'action' | 'order_status' | 'location' — **Required.** Component parameter type. - `text`: Used when the template component type is `BODY`, or the `HEADER` component format is `TEXT`. - `image`: Used when the template `HEADER` component is `IMAGE`. - `gif`: Used when the template `HEADER` component is `GIF`. - `video`: Used when the template `HEADER` component is `VIDEO`. - `document`: Used when the template `HEADER` component is `DOCUMENT`. - `payload`: Used when the template component button type is `QUICK_REPLY`. - `coupon_code`: Used when the template component button type is `COPY_CODE`. - `limited_time_offer`: Used when the template component type is `LIMITED_TIME_OFFER`. - `action`: Used when the template component button type is `CATALOG`, `MPM`, `FLOW`, or `ORDER_DETAILS`. - `order_status`: Used when the template subcategory is `ORDER_STATUS`. - `location`: Used when the template `HEADER` component is `LOCATION`.
          - `text` string — **Required when `type` = `text`.** The message's text. For the header component, the character limit is 60 characters. For the body component, the character limit is 1024 characters. For url buttons, it indicates the developer-provided suffix that is appended to the predefined prefix URL in the template.
          - `payload` string — Required for `quick_reply` buttons. Developer-defined payload that is returned when the button is clicked in addition to the display text on the button.
          - `coupon_code` string — **Required when `type` = `coupon_code`.** The coupon code to be copied when the customer taps the button.
          - `image` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
            - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
            - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
            - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
            - `filename` string — Describes the filename for the specific document. Use only with `document` media.
          - `gif` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
            - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
            - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
            - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
            - `filename` string — Describes the filename for the specific document. Use only with `document` media.
          - `video` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
            - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
            - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
            - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
            - `filename` string — Describes the filename for the specific document. Use only with `document` media.
          - `document` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
            - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
            - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
            - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
            - `filename` string — Describes the filename for the specific document. Use only with `document` media.
          - `limited_time_offer` WhatsappMessageTemplateComponentParameterLimitedTimeOffer — Required if template uses offer expiration details.
            - `expiration_time_ms` integer — **Required.** Offer code expiration time as a UNIX timestamp in milliseconds.
          - `action` WhatsappMessageTemplateComponentParameterAction — Required if template uses catalog or MPM (multi-product message) buttons.
            - `thumbnail_product_retailer_id` string — **Optional.** Use for catalog and MPM template messages. Item SKU number. Labeled as Content ID in the Commerce Manager. The thumbnail of this item will be used as the message's header image. If the `parameters` object is omitted, the product image of the first item in your catalog will be used.
            - `sections` WhatsappMessageTemplateComponentParameterActionSection[] — Use for MPM templates. Product sections. You can define up to 10 sections.
              - …
            - `flow_token` string — Use for `FLOW` buttons. Flow token that is generated by the business to serve as an identifier. Defaults to `unused`.
            - `flow_action_data` object — Use for `FLOW` buttons. JSON object with the data payload for the first screen.
            - `order_details` WhatsappMessageOrderDetails — Contains the order details when sending a template message with a `order_details` button.
              - …
          - `order_status` WhatsappMessageOrderStatus
            - `reference_id` string — Unique identifier for the order provided by the business.
            - `order` WhatsappMessageOrderInfo — Order info.
              - …
          - `location` WhatsappMessageLocation — Use for `location` messages.
            - `latitude` number, double, required — Latitude of the location.
            - `longitude` number, double, required — Longitude of the location.
            - `name` string — Name of the location.
            - `address` string — Address of the location. Only displayed if `name` is present.
        - `cards` WhatsappMessageTemplateComponentCard[] — Use for `carousel` components. Provides card components containing the parameters of the message.
          - `card_index` integer — **Required.** Zero-indexed order in which card appears within the card carousel. 0 indicates first card, 1 indicates second card, etc.
          - `components` WhatsappMessageTemplateComponentCardComponent[] — Card component.
            - `type` 'header' | 'body' | 'button', required — Component type.
            - `sub_type` 'quick_reply' | 'url' — **Required when type is `button`.** Type of button. - `quick_reply`: Refers to a previously created quick reply button that allows for the customer to return a predefined message. - `url`: Refers to a previously created url button that allows the customer to visit the URL generated by appending the text parameter to the predefined prefix URL in the template.
            - `index` integer — **Required when `type` = `button`. Not used for the other types.** Indicates order in which button should appear, if the template uses multiple buttons. Buttons are zero-indexed, so setting value to 0 will cause the button to appear first, and another button with an index of 1 will appear next, etc.
            - `parameters` WhatsappMessageTemplateComponentParameter[] — **Required when `type` = `button`, or there are variables in the corresponding template component, or the card component `HEADER` format is media (`IMAGE`, `VIDEO`).** Array of parameter objects with the content of the message.
              - …
    - `text` WhatsappMessageText — WhatsApp Message Text Object.
      - `body` string, required — Required for text messages. The text of the text message which can contain URLs which begin with http:// or https:// and formatting. See available formatting options here. If you include URLs in your text and want to include a preview box in text messages (preview_url: true), make sure the URL starts with http:// or https:// — https:// URLs are preferred. You must include a hostname, since IP addresses will not be matched. Maximum length: 4096 characters.
      - `preview_url` boolean — By default, WhatsApp recognizes URLs and makes them clickable, but you can also include a preview box with more information about the link. Set this field to true if you want to include a URL preview box. The majority of the time, the receiver will see a URL they can click on when you send an URL, set preview_url to true, and provide a body object with a http or https link. URL previews are only rendered after one of the following has happened: - The business has sent a message template to the user. - The user initiates a conversation with a "click to chat" link. - The user adds the business phone number to their address book and initiates a conversation. Default: `false`.
    - `image` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
      - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
      - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
      - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
      - `filename` string — Describes the filename for the specific document. Use only with `document` media.
    - `video` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
      - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
      - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
      - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
      - `filename` string — Describes the filename for the specific document. Use only with `document` media.
    - `audio` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
      - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
      - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
      - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
      - `filename` string — Describes the filename for the specific document. Use only with `document` media.
    - `document` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
      - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
      - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
      - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
      - `filename` string — Describes the filename for the specific document. Use only with `document` media.
    - `sticker` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
      - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
      - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
      - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
      - `filename` string — Describes the filename for the specific document. Use only with `document` media.
    - `location` WhatsappMessageLocation — Use for `location` messages.
      - `latitude` number, double, required — Latitude of the location.
      - `longitude` number, double, required — Longitude of the location.
      - `name` string — Name of the location.
      - `address` string — Address of the location. Only displayed if `name` is present.
    - `interactive` WhatsappMessageInteractive — Use for `interactive` messages.
      - `type` 'button' | 'list' | 'cta_url' | 'product' | 'product_list' | 'catalog_message' | 'location_request_message' | 'order_details' | 'order_status' | 'voice_call' | 'flow' — **Required.** The type of interactive message you want to send. - `button`: Use for Reply Buttons. - `list`: Use for List Messages. - `cta_url`: Use for Call-To-Action (CTA) URL Button Messages. - `product`: Use for Single Product Messages. - `product_list`: Use for Multi-Product Messages. - `catalog_message`: Use for Catalog Messages. - `location_request_message`: Use for Location Request Messages. - `order_details`: Use for Order Details Messages. - `order_status`: Use for Order Status Messages. - `voice_call`: Use for Voice Call Messages. - `flow`: Use for Flow Messages.
      - `action` WhatsappMessageInteractiveAction — **Required.** Action you want the user to perform after reading the `interactive` message.
        - `buttons` WhatsappMessageInteractiveActionButton[] — Required for Reply Buttons. You can have up to 3 buttons.
          - `type` 'reply' — Only supported type is `reply` (for Reply Button).
          - `reply` object
            - `title` string — Button title. It cannot be an empty string and must be unique within the message. Emojis are supported, markdown is not. Maximum length: 20 characters.
            - `id` string — Unique identifier for your button. This ID is returned in the webhook when the button is clicked by the user. Maximum length: 256 characters. You cannot have leading or trailing spaces when setting the ID.
        - `button` string — Required for List Messages. Button content. It cannot be an empty string and must be unique within the message. Emojis are supported, markdown is not. Maximum length: 20 characters.
        - `catalog_id` string — Required for Single Product Messages and Multi-Product Messages. Unique identifier of the Facebook catalog linked to your WhatsApp Business Account. This ID can be retrieved via the [Meta Commerce Manager](https://business.facebook.com/commerce).
        - `product_retailer_id` string — Required for Single Product Messages and Multi-Product Messages. Unique identifier of the product in a catalog.
        - `sections` WhatsappMessageInteractiveActionSection[] — Required for List Messages and Multi-Product Messages. Array of section objects. Minimum of 1, maximum of 10.
          - `title` string — **Required if the message has more than one section.** Title of the section. Maximum length: 24 characters.
          - `rows` WhatsappMessageInteractiveActionSectionRow[] — Contains a list of rows. You can have a total of 10 rows across your sections. Each row must have a title (Maximum length: 24 characters) and an ID (Maximum length: 200 characters). You can add a description (Maximum length: 72 characters), but it is optional.
            - `id` string — Unique row ID. Maximum length: 200 characters.
            - `title` string — Row title content. Maximum length: 24 characters.
            - `description` string — Row description content. Maximum length: 72 characters.
          - `product_items` WhatsappMessageInteractiveActionSectionProductItem[] — Required for Multi-Product Messages. Array of product objects. There is a minimum of 1 product per section and a maximum of 30 products across all sections.
            - `product_retailer_id` string — Required for Multi-Product Messages. Unique identifier of the product in a catalog.
        - `name` 'cta_url' | 'send_location' | 'flow' | 'review_and_pay' | 'review_order' | 'voice_call' — Action name. Required for Call-To-Action (CTA) buttons. - `cta_url`: Use for Call-To-Action (CTA) URL buttons. - `send_location`: Use for Location Request buttons. - `flow`: Use for Flow buttons. - `review_and_pay`: Use for Order Details buttons. - `review_order`: Use for Order Status buttons. - `voice_call`: Use for Voice Call buttons.
        - `parameters` WhatsappMessageInteractiveActionParameters — Action parameters. Required for Call-To-Action (CTA) buttons.
          - `display_text` string — Text of the CTA URL button. Maximum length: 20 bytes.
          - `url` string — URL of the CTA URL button.
          - `thumbnail_product_retailer_id` string — Item SKU number. Labeled as **Content ID** in the [Commerce Manager](https://business.facebook.com/commerce). The thumbnail of this item will be used as the message's header image.
          - `flow_message_version` string — Use for `flow` buttons. Value must be "3".
          - `flow_token` string — Use for `flow` buttons. Flow token that is generated by the business to serve as an identifier. Defaults to `unused`.
          - `flow_id` string — Conditionally required for `flow` buttons. Unique ID of the Flow provided by WhatsApp. Cannot be used with the `flow_name` parameter.
          - `flow_name` string — Conditionally required for `flow` buttons. The name of the Flow that you created. Cannot be used with the `flow_id` parameter. Changing the Flow name will require updating this parameter to match the new name.
          - `flow_cta` string — Required for `flow` buttons. Text on the CTA button. For example: "Open flow!". Maximum length: 20 characters.
          - `flow_action` string — Use for `flow` buttons. Either `navigate` or `data_exchange`. Defaults to `navigate`.
          - `flow_action_payload` object — Required if `flow_action` is `navigate`. Should be omitted otherwise.
            - `screen` string — The ID of the screen displayed first. It needs to be an **entry** screen.
            - `data` object — Optional input data for the first screen of the Flow. If provided, this must be a non-empty object.
          - `reference_id` string — Required for `review_and_pay` buttons. Unique identifier for the order provided by the business. It is case sensitive and cannot be an empty string and can only contain English letters, numbers, underscores, dashes, or dots, and should not exceed 35 characters. The `reference_id` must be unique for each order_details message for a given business. If there is a need to send multiple order_details messages for the same order, it is recommended to include a sequence number in the reference_id (for example, "BM345A-12") to ensure reference_id uniqueness.
          - `type` string — Required for `review_and_pay` buttons. The type of goods being paid for in this order. Current supported options are `digital-goods` and `physical-goods`.
          - `beneficiaries` WhatsappMessageOrderBeneficiary[] — Required for `review_and_pay` buttons. An array of beneficiaries for this order. A beneficiary is an intended recipient for shipping the physical goods in the order. Beneficiary information isn't shown to users but is needed for legal and compliance reasons.
            - `name` string, required — Name of the individual or business receiving the physical goods. Cannot exceed 200 characters.
            - `address_line1` string, required — Shipping address (Door/Tower Number, Street Name etc.). Cannot exceed 100 characters.
            - `address_line2` string — Shipping address (Landmark, Area, etc.). Cannot exceed 100 characters.
            - `city` string, required — Name of the city.
            - `state` string, required — Name of the state.
            - `country` string, required — Name of the country. Currently the only supported value is `India`.
            - `postal_code` string, required — 6-digit zipcode of shipping address.
          - `currency` string — Required for `review_and_pay` buttons. The currency for this order. Currently the only supported value is `INR`.
          - `total_amount` WhatsappMessageOrderAmount — Represents the amount of an order.
            - `offset` integer, required — Must be `100` for `INR`.
            - `value` integer, required — Positive integer representing the amount value multiplied by offset. For example, ₹12.34 has value 1234.
            - `description` string — Use only for `tax`, `shipping`, or `discount`. Description of the amount. Max character limit is 60 characters.
            - `discount_program_name` string — Use only for `discount`. Text used for defining incentivised orders. If order is incentivised, the merchant needs to define this information. Max character limit is 60 characters.
          - `order` WhatsappMessageOrderInfo — Order info.
            - `status` 'pending' | 'processing' | 'partially_shipped' | 'shipped' | 'completed' | 'canceled' — Only supported value in the `order_details` message is `pending`. In an `order_status` message, `status` can be: `pending`, `processing`, `partially_shipped`, `shipped`, `completed`, or `canceled`.
            - `type` string — Only supported value is `quick_pay`. When this field is passed in we hide the "Review and Pay" button and only show the "Pay Now" button in the order details bubble.
            - `catalog_id` string — Unique identifier of the Facebook catalog being used by the business. If you do not provide this field, you must provide the following fields inside the items object: `country_of_origin`, `importer_name`, and `importer_address`.
            - `items` WhatsappMessageOrderItem[] — Array of items in the order.
              - …
            - `subtotal` WhatsappMessageOrderAmount — Represents the amount of an order.
              - …
            - `tax` WhatsappMessageOrderAmount — Represents the amount of an order.
              - …
            - `shipping` WhatsappMessageOrderAmount — Represents the amount of an order.
              - …
            - `discount` WhatsappMessageOrderAmount — Represents the amount of an order.
              - …
            - `expiration` WhatsappMessageOrderExpiration — Expiration for this order.
              - …
            - `description` string — **Optional.** Text for sharing status related information. Could be useful while sending cancellation. Max character limit is 120 characters.
          - `payment_settings` WhatsappMessageOrderPaymentSetting[] — Required for `review_and_pay` buttons. Payment settings for the order.
            - `type` string, required — Must be set to `payment_gateway`.
            - `payment_gateway` WhatsappMessageOrderPaymentGateway, required — An object that describes payment account information.
              - …
      - `body` WhatsappMessageInteractiveBody — Optional for type `product`. Required for other message types.
        - `text` string — The body content of the message. Emojis and markdown are supported. Maximum length: 1024 characters.
      - `header` WhatsappMessageInteractiveHeader — Required for type `product_list`. Optional for other types.
        - `type` 'text' | 'image' | 'video' | 'document' — **Required.** The header type you would like to use. - `text`: Used for List Messages, Reply Buttons, and Multi-Product Messages. - `video`: Used for Reply Buttons. - `image`: Used for Reply Buttons. - `document`: Used for Reply Buttons.
        - `text` string — Text for the header. Formatting allows emojis, but not markdown.
        - `image` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
          - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
          - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
          - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
          - `filename` string — Describes the filename for the specific document. Use only with `document` media.
        - `video` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
          - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
          - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
          - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
          - `filename` string — Describes the filename for the specific document. Use only with `document` media.
        - `document` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
          - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
          - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
          - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
          - `filename` string — Describes the filename for the specific document. Use only with `document` media.
      - `footer` WhatsappMessageInteractiveFooter — Optional. An object with the footer of the message.
        - `text` string — The footer content. Emojis and markdown are supported. Links are supported. Maximum length: 60 characters.
    - `contacts` WhatsappMessageContact[]
      - `addresses` WhatsappMessageContactAddress[]
        - `street` string — Street number and name.
        - `city` string — City name.
        - `state` string — State abbreviation.
        - `zip` string — ZIP code.
        - `country` string — Full country name.
        - `country_code` string — Two-letter country abbreviation.
        - `type` string — Standard values are `HOME` and `WORK`.
      - `birthday` string — `YYYY-MM-DD` formatted string.
      - `emails` WhatsappMessageContactEmail[]
        - `email` string — Email address.
        - `type` string — Standard values are `HOME` and `WORK`.
      - `name` WhatsappMessageContactName, required — Full contact name formatted as a name object.
        - `formatted_name` string, required — Full name, as it normally appears.
        - `first_name` string — First name.
        - `last_name` string — Last name.
        - `middle_name` string — Middle name.
        - `suffix` string — Name suffix.
        - `prefix` string — Name prefix.
      - `org` WhatsappMessageContactOrg — Contact organization information formatted as an org object.
        - `company` string — Name of the contact's company.
        - `department` string — Name of the contact's department.
        - `title` string — Contact's business title.
      - `phones` WhatsappMessageContactPhone[] — Contact phone number(s) formatted as a phone object.
        - `phone` string — Automatically populated with the `wa_id` value as a formatted phone number.
        - `type` string — Standard Values are `CELL`, `MAIN`, `IPHONE`, `HOME`, and `WORK`.
        - `wa_id` string — WhatsApp ID.
      - `urls` WhatsappMessageContactUrl[] — Contact URL(s) formatted as a urls object.
        - `url` string — URL.
        - `type` string — Standard values are `HOME` and `WORK`.
    - `reaction` WhatsappMessageReaction — When a user reacts to messages with an emoji, the message type is set to `reaction`, and this field is included.
      - `message_id` string, required — Specifies the `wamid` of the message received that contained the reaction.
      - `emoji` string — **Required** when you send a `reaction` message. Set it to `""` if you want to remove the emoji. **Optional** when you received a message from a user. This field is included when a user reacts to messages with an emoji. Otherwise, it indicates a user removed the emoji.
    - `context` WhatsappMessageContext — Used to mention a specific message you are replying to. The reply can be any message type.
      - `message_id` string — Specifies the `wamid` of the message your are replying to. `wamid` is the original message ID on WhatsApp’s platform.
    - `externalId` string — A unique (recommended) string to reference the object. This can be an order number or similar, and can be used to reconcile the object with your internal systems.
    - `status` 'accepted' | 'failed' | 'sent' | 'delivered' | 'read' — WhatsApp message status. One of `accepted`, `failed`, `sent`, `delivered`, `read`. - `accepted`: The messaging request is accepted by our system. - `failed`: A message sent by your business failed to send. - `sent`: A message sent by your business is in transit within WhatsApp's systems. - `delivered`: A message sent by your business was delivered to the user's device. - `read`: A message sent by your business was read by the user.
    - `errorCode` string — Error code when the message status is `failed`.
    - `errorMessage` string — Error message when the message status is `failed`.
    - `createTime` string, date-time — The time at which this message is created, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
    - `updateTime` string, date-time — The time at which this message is updated, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
    - `sendTime` string, date-time — The time at which this message `status` changed to `sent`, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
    - `deliverTime` string, date-time — The time at which this message `status` changed to `delivered`, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
    - `readTime` string, date-time — The time at which this message `status` changed to `read`, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
    - `totalPrice` number, double — Total price of this message. **Note: It's only an estimated price when the `status` is `accepted` or `sent`. It becomes the final price after the message is delivered, i.e., the `status` is `delivered` or `read`.**
    - `currency` string — Price currency. [ISO 4217 currency code](https://en.wikipedia.org/wiki/ISO_4217).
    - `regionCode` string — The [region code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) of the recipient phone number.
    - `pricingCategory` 'referral_conversion' | 'authentication' | 'authentication_international' | 'marketing' | 'marketing_lite' | 'utility' | 'service' — WhatsApp pricing category. - `referral_conversion`: Indicates a [free entry point conversation](https://developers.facebook.com/docs/whatsapp/pricing#free-entry-point-conversations). - `authentication`: Indicates the conversation was billed at authentication rate. - `authentication_international`: Indicates the conversation was conversation was billed at the [authentication-international rate](https://developers.facebook.com/docs/whatsapp/pricing/authentication-international-rates). - `marketing`: Indicates the conversation was billed at authentication rate. - `marketing_lite`: Indicates the conversation was billed at marketing-lite rate. - `utility`: Indicates the conversation was billed at utility rate. - `service`: Indicates the conversation was billed at service rate. See also [Conversation-Based Pricing](https://developers.facebook.com/docs/whatsapp/pricing).
    - `pricingModel` 'PMP' | 'CBP' — WhatsApp pricing model. - `PMP`: Per-message pricing applies. - `CBP`: Conversation-based pricing applies.
    - `pricingType` 'regular' | 'free_customer_service' | 'free_entry_point' — WhatsApp pricing type. This field is only available in PMP (Per-Message Pricing) mode. - `regular`: Indicates the message is billable. - `free_customer_service`: Indicates the message is free because it was either a utility template message or non-template message sent within a customer service window. - `free_entry_point`: Indicates the message is free because it is part of a free-entry point conversation.
    - `whatsappApiError` WhatsappApiError — The original error object returned by WhatsApp. See [Handling Errors](https://developers.facebook.com/docs/graph-api/guides/error-handling), [Cloud API Error Codes](https://developers.facebook.com/docs/whatsapp/cloud-api/support/error-codes).
      - `message` string, required — A human-readable description of the error.
      - `code` string, required — An error code.
      - `type` string — Error type.
      - `error_subcode` string — Additional code about the error.
      - `error_user_msg` string — The message to display to the user. The language of the message is based on the locale of the API request.
      - `error_user_title` string — The title of the dialog, if shown. The language of the message is based on the locale of the API request.
      - `fbtrace_id` string — Internal support identifier. When reporting a bug related to a Graph API call, include the fbtrace_id to help us find log data for debugging.
      - `error_data` object — Additional data about the error. A string or map. - For template APIs, this field is a string describing the reason for the error. - For message APIs, this field is a map with property `details` describing the reason for the error.
    - `bizType` string — This can be either empty or one of `whatsapp`, or `verify`. Defaults to `whatsapp`. - `whatsapp`: Indicates that the message is sent via the **WhatsApp** product. - `verify`: Indicates that the message is sent via the **Verify** product.
    - `verificationId` string — The verification ID. Included only when `bizType` is `verify`.
  - `whatsappGroup` WhatsappGroupWebhook — WhatsApp group webhook payload.
    - `wabaId` string — WhatsApp Business Account ID.
    - `displayPhoneNumber` string — The display phone number from WhatsApp webhook metadata.
    - `phoneNumberId` string — WhatsApp phone number ID.
    - `field` 'group_lifecycle_update' | 'group_participants_update' | 'group_settings_update' | 'group_status_update' | 'messages' — WhatsApp webhook field that produced the group event.
    - `type` 'group_create' | 'group_delete' | 'group_participants_add' | 'group_participants_remove' | 'group_join_request_created' | 'group_join_request_revoked' | 'group_settings_update' | 'group_suspend' | 'group_suspend_cleared' | 'message_status' — Specific WhatsApp group event type.
    - `requestId` string — The request ID returned by an asynchronous group API operation.
    - `status` 'created' | 'failed' | 'deleted' | 'added' | 'removed' | 'left' | 'requested' | 'revoked' | 'updated' | 'suspended' | 'suspend_cleared' | 'sent' | 'delivered' | 'read' — WhatsApp group webhook status.
    - `groupId` string — WhatsApp group ID.
    - `inviteLink` string — The group invite link.
    - `reason` string — The reason for a participant, join request, or removal event.
    - `initiatedBy` 'business' | 'participant' — Indicates who initiated a participant removal event.
    - `joinRequestId` string — The join request ID.
    - `waId` string — WhatsApp user ID for a single participant event.
    - `recipientUserId` string — Business-scoped user ID for a single participant event.
    - `parentRecipientUserId` string — Parent business-scoped user ID for a single participant event.
    - `customerProfile` WhatsappGroupCustomerProfile — WhatsApp customer profile information.
      - `name` string — WhatsApp profile name.
      - `username` string — WhatsApp username.
    - `subject` string — The group subject.
    - `description` string — The group description.
    - `joinApprovalMode` 'approval_required' | 'auto_approve' — WhatsApp group join approval mode. - `approval_required`: New members must be approved before joining. - `auto_approve`: New members can join without approval.
    - `addedParticipants` WhatsappGroupWebhookParticipant[] — Participants added to the group.
      - `input` string — The original participant input.
      - `waId` string — WhatsApp user ID.
      - `recipientUserId` string — Business-scoped user ID.
      - `parentRecipientUserId` string — Parent business-scoped user ID.
      - `customerProfile` WhatsappGroupCustomerProfile — WhatsApp customer profile information.
        - `name` string — WhatsApp profile name.
        - `username` string — WhatsApp username.
      - `errors` object[] — Errors returned by WhatsApp for this participant.
    - `removedParticipants` WhatsappGroupWebhookParticipant[] — Participants removed from the group.
      - `input` string — The original participant input.
      - `waId` string — WhatsApp user ID.
      - `recipientUserId` string — Business-scoped user ID.
      - `parentRecipientUserId` string — Parent business-scoped user ID.
      - `customerProfile` WhatsappGroupCustomerProfile — WhatsApp customer profile information.
        - `name` string — WhatsApp profile name.
        - `username` string — WhatsApp username.
      - `errors` object[] — Errors returned by WhatsApp for this participant.
    - `failedParticipants` WhatsappGroupWebhookParticipant[] — Participants that failed to be added or removed.
      - `input` string — The original participant input.
      - `waId` string — WhatsApp user ID.
      - `recipientUserId` string — Business-scoped user ID.
      - `parentRecipientUserId` string — Parent business-scoped user ID.
      - `customerProfile` WhatsappGroupCustomerProfile — WhatsApp customer profile information.
        - `name` string — WhatsApp profile name.
        - `username` string — WhatsApp username.
      - `errors` object[] — Errors returned by WhatsApp for this participant.
    - `settings` WhatsappGroupWebhookSetting[] — Group setting update details.
      - `name` 'profile_picture' | 'group_subject' | 'group_description' — Setting name.
      - `text` string — Text value for subject or description updates.
      - `updateSuccessful` boolean — Whether the setting update succeeded.
      - `mimeType` string — MIME type for profile picture updates.
      - `sha256` string — SHA-256 hash for profile picture updates.
      - `errors` object[] — Errors returned by WhatsApp for this setting.
    - `errors` object[] — Errors returned by WhatsApp.
    - `contacts` WhatsappGroupWebhookStatusContact[] — Contacts included in group message status webhooks.
      - `customerProfile` WhatsappGroupCustomerProfile — WhatsApp customer profile information.
        - `name` string — WhatsApp profile name.
        - `username` string — WhatsApp username.
      - `waId` string — WhatsApp user ID.
      - `recipientUserId` string — Business-scoped user ID.
      - `parentRecipientUserId` string — Parent business-scoped user ID.
    - `statuses` WhatsappGroupWebhookMessageStatus[] — Group message status details.
      - `id` string — WhatsApp message ID.
      - `status` string — Message status.
      - `timestamp` integer — Unix timestamp indicating when the message status was updated.
      - `recipientId` string — Recipient group ID.
      - `recipientType` 'group' — Recipient type.
      - `recipientParticipantId` string — WhatsApp user ID of the recipient participant.
      - `recipientUserId` string — Business-scoped user ID of the recipient participant.
      - `parentRecipientUserId` string — Parent business-scoped user ID of the recipient participant.
      - `conversation` WhatsappGroupWebhookConversation — WhatsApp conversation object included in group message status webhooks.
        - `id` string — Conversation ID.
        - `expirationTimestamp` integer — Unix timestamp indicating when the conversation expires.
        - `origin` WhatsappGroupWebhookConversationOrigin
          - `type` string — Conversation origin type.
      - `pricing` WhatsappGroupWebhookPricing — Pricing information included in group message status webhooks.
        - `billable` boolean — Whether the message is billable.
        - `pricingModel` string — Pricing model.
        - `type` string — Pricing type.
        - `category` string — Pricing category.
      - `errors` object[] — Errors returned by WhatsApp.
    - `webhookTime` string, date-time — The time at which WhatsApp triggered this webhook.
    - `dedupeKey` string — Idempotency key for deduplicating group webhook events.
  - `whatsappPhoneNumber` WhatsappPhoneNumber — See [WhatsApp Business Phone Number](https://developers.facebook.com/docs/whatsapp/cloud-api/phone-numbers)
    - `id` string — Phone number ID.
    - `phoneNumber` string — Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `displayPhoneNumber` string — Display phone number.
    - `wabaId` string — WhatsApp Business Account ID.
    - `businessUsername` string — Active Business Username for this phone number. The value is a plain username without `@`.
    - `businessUsernameStatus` 'not_set' | 'active' | 'pending_review' | 'reserved' — Business Username state for a WhatsApp business phone number. - `not_set`: No active or pending Business Username exists. - `active`: A Business Username is active. - `reserved`: A requested Business Username is reserved by Meta and may still be under review. - `pending_review`: Legacy compatibility value for an under-review request. New writes use `reserved`. If an active username exists while a new request is reserved or under review, `businessUsernameStatus` is `reserved`, `businessUsername` contains the still-active username, and `requestedBusinessUsername` contains the requested username.
    - `requestedBusinessUsername` string — Last requested Business Username that is still under review. This value can coexist with an active `businessUsername` while the new request is pending.
    - `businessUsernameUpdatedAt` string, date-time — The time when the Business Username state was last updated.
    - `qualityRating` 'GREEN' | 'YELLOW' | 'RED' | 'UNKNOWN' — Quality rating. One of `GREEN`, `YELLOW`, `RED`, or `UNKNOWN`. See also [Phone Number Quality Rating](https://www.facebook.com/business/help/896873687365001). - `GREEN`: High quality. - `YELLOW`: Medium quality. - `RED`: Low quality. - `UNKNOWN`: Unknown quality.
    - `messagingLimit` string — Messaging limits determine the maximum number of business-initiated conversations each phone number can start in a rolling 24-hour period. See also [Messaging Limits](https://developers.facebook.com/docs/whatsapp/messaging-limits). - `TIER_NOT_SET`: Unknown limit. - `TIER_50`: 50 business-initiated conversations in a rolling 24-hour period. - `TIER_250`: 250 business-initiated conversations in a rolling 24-hour period. - `TIER_1K`: 1K business-initiated conversations with unique customers in a rolling 24-hour period. - `TIER_10K`: 10K business-initiated conversations with unique customers in a rolling 24-hour period. - `TIER_100K`: 100K business-initiated conversations with unique customers in a rolling 24-hour period. - `TIER_UNLIMITED`: An unlimited number of business-initiated conversations in a rolling 24-hour period.
    - `whatsappBusinessManagerMessagingLimit` string — The owning business portfolio's messaging limit. Starting October 7, 2025, messaging limits will instead be calculated and set on a business portfolio basis, and will be shared by all business phone numbers within each portfolio. See also [phone_number_quality_update webhook reference](https://developers.facebook.com/docs/whatsapp/cloud-api/webhooks/reference/phone_number_quality_update). - `TIER_NOT_SET`: The business phone number has not been used to send a message yet. - `TIER_50`: Messaging limit of 50 business-initiated conversations in a rolling 24-hour period. - `TIER_250`: Messaging limit of 250 business-initiated conversations in a rolling 24-hour period. - `TIER_2K`: Messaging limit of 2,000 business-initiated conversations in a rolling 24-hour period. - `TIER_10K`: Messaging limit of 10,000 business-initiated conversations in a rolling 24-hour period. - `TIER_100K`: Messaging limit of 100,000 business-initiated conversations in a rolling 24-hour period. - `TIER_UNLIMITED`: The business phone number has higher throughput with unlimited business-initiated conversations.
    - `verifiedName` string — Verified name.
    - `codeVerificationStatus` 'VERIFIED' | 'NOT_VERIFIED' | 'EXPIRED' — To see if a phone number has been verified via OTP (one-time password).
    - `isOfficialBusinessAccount` boolean — Whether this phone number is an official business account or not. An official business account has a green checkmark badge in its profile and chat thread headers. See [Official Business Account](https://developers.facebook.com/docs/whatsapp/overview/business-accounts#official-business-account) for more information.
    - `status` 'PENDING' | 'UNVERIFIED' | 'MANUAL_REVIEW' | 'DISCONNECTED' | 'CONNECTED' | 'FLAGGED' | 'WARNED' | 'RATE_LIMITED' | 'BANNED' | 'RESTRICTED' | 'BLOCKED' | 'MIGRATED' | 'UNKNOWN' — The status of a WhatsApp business phone number. - `PENDING`: Pending. Phone number is newly added. Verify and register this phone number so it can be connected to your account. - `UNVERIFIED`: Unverified. Verify this phone number to start sending messages. - `MANUAL_REVIEW`: Being reviewed. Phone number is currently being reviewed for connection to your account. - `DISCONNECTED`: Offline. Phone number is currently not reachable by WhatsApp servers. - `CONNECTED`: Connected. Phone number is associated with this account and working properly. - `FLAGGED`: Flagged. This phone number has been flagged due to low quality messages. - `WARNED`: Warned. A warning has been issued for this number, potentially due to spam reports. - `RATE_LIMITED`: Rate limited. The number of messages you can send from this phone number may be restricted. - `BANNED`: Banned. Phone number cannot be used with a WhatsApp account. - `RESTRICTED`: Restricted. This phone number has reached its 24-hour messaging limit and can no longer send messages to customers. Please wait until the messaging limit is reset to send messages. - `BLOCKED`: Message limit reached. The limit has been reached for this 24-hour period. - `MIGRATED`: Transferred. This phone number has been transferred to another WhatsApp Business account. - `UNKNOWN`: Unavailable. The status of this phone number can't be determined right now.
    - `nameStatus` 'APPROVED' | 'AVAILABLE_WITHOUT_REVIEW' | 'DECLINED' | 'EXPIRED' | 'PENDING_REVIEW' | 'NONE' — The review status of the current display name request. See also [Get Display Name Status](https://developers.facebook.com/docs/whatsapp/business-management-api/manage-phone-numbers#get-display-name-status--beta-). - `APPROVED`: The name has been approved. You can download your certificate now. - `AVAILABLE_WITHOUT_REVIEW`: The certificate for the phone is available and display name is ready to use without review. - `DECLINED`: The name has not been approved. You cannot download your certificate. - `EXPIRED`: Your certificate has expire and can no longer be downloaded. - `PENDING_REVIEW`: Your name request is under review. You cannot download your certificate. - `NONE`: No certificate is available.
    - `newNameStatus` 'APPROVED' | 'AVAILABLE_WITHOUT_REVIEW' | 'DECLINED' | 'EXPIRED' | 'PENDING_REVIEW' | 'NONE' — The review status of the current display name request. See also [Get Display Name Status](https://developers.facebook.com/docs/whatsapp/business-management-api/manage-phone-numbers#get-display-name-status--beta-). - `APPROVED`: The name has been approved. You can download your certificate now. - `AVAILABLE_WITHOUT_REVIEW`: The certificate for the phone is available and display name is ready to use without review. - `DECLINED`: The name has not been approved. You cannot download your certificate. - `EXPIRED`: Your certificate has expire and can no longer be downloaded. - `PENDING_REVIEW`: Your name request is under review. You cannot download your certificate. - `NONE`: No certificate is available.
    - `decision` 'APPROVED' | 'REJECTED' — Used if a decision about WhatsApp accounts or phone numbers has been made.
    - `requestedVerifiedName` string — Last requested verified name.
    - `rejectionReason` string — Rejection reason.
    - `qualityUpdateEvent` 'ONBOARDING' | 'UPGRADE' | 'DOWNGRADE' | 'FLAGGED' | 'UNFLAGGED' — Indicates the update event type of WhatsApp phone number quality when a notification is sent to you. - `ONBOARDING`: Typically when the messaging limit changes from `TIER_NOT_SET` to another tier. - `UPGRADE`: Messaging limit tier upgraded. - `DOWNGRADE`: Messaging limit tier downgraded. - `FLAGGED`: Flagged status occurs when the quality rating reaches a low state. If the message quality improves to a high or medium state and maintains this for 7 days, your status will return to Connected. If the quality rating doesn't improve, your status will still return to Connected, but you'll be placed in a lower messaging limit tier. Learn more on [Phone Number Quality Rating](https://www.facebook.com/business/help/896873687365001) docs. - `UNFLAGGED`: Phone number status changes from `FLAGGED` to `CONNECTED`.
    - `updateEvent` 'ACCOUNT_RECONNECTED' | 'ACCOUNT_OFFBOARDED' — Account update event that triggered this phone number status change.
    - `throughputLevel` 'STANDARD' | 'HIGH' | 'NOT_APPLICABLE' — Current Meta throughput level of the WhatsApp phone number. - `STANDARD`: Default Cloud API throughput level, currently up to 80 messages per second. - `HIGH`: Upgraded Cloud API throughput level, currently up to 1,000 messages per second, subject to Meta's current Cloud API throughput rules. - `NOT_APPLICABLE`: Throughput level is not applicable to this phone number.
  - `whatsappPayment` WhatsappPayment — Represents a payment object. Businesses receive updates via webhooks when the status of the user-initiated transaction changes.
    - `wabaId` string, required — WhatsApp Business Account ID.
    - `referenceId` string, required — Unique identifier for the payment provided by the business. It is case sensitive and cannot be an empty string and can only contain English letters, numbers, underscores, dashes, or dots, and should not exceed 35 characters.
    - `status` 'captured' | 'pending', required — Status of this payment. - `captured`: Indicates the payment is successfully completed. - `pending`: Indicates the user attempted but yet to receive success transactions signal.
    - `transactions` WhatsappPaymentTransaction[] — Contains the latest transaction attempt for this payment.
      - `id` string, required — Transaction ID.
      - `type` 'billdesk' | 'razorpay' | 'payu' | 'zaakpay', required — The payment type for this transactions. One of `billdesk`, `razorpay`, `payu`, or `zaakpay`.
      - `status` 'pending' | 'success' | 'failed', required — The status of the transaction. One of `pending`, `success` or `failed`.
      - `createdTimestamp` integer, required — Time when transaction was created in epoch milliseconds.
      - `updatedTimestamp` integer, required — Time when transaction was last updated in epoch milliseconds.
      - `amount` WhatsappMessageOrderAmount, required — Represents the amount of an order.
        - `offset` integer, required — Must be `100` for `INR`.
        - `value` integer, required — Positive integer representing the amount value multiplied by offset. For example, ₹12.34 has value 1234.
        - `description` string — Use only for `tax`, `shipping`, or `discount`. Description of the amount. Max character limit is 60 characters.
        - `discount_program_name` string — Use only for `discount`. Text used for defining incentivised orders. If order is incentivised, the merchant needs to define this information. Max character limit is 60 characters.
      - `currency` string, required — The currency for this payment. Currently the only supported value is `INR`.
      - `methodType` string — Describes the type of payment method used by consumer to pay for the order. Can be one of `upi`, `card`, `wallet`, or `netbanking`. The payment method information might not be available for failed payments.
      - `error` object — The payment error details might not be available for all payments attempts.
        - `code` string, required — Describes the payment failure reason that generated by payment gateway and Meta transmits this to partners.
        - `reason` string, required — Describes the payment failure reason in plain text that is generated by payment gateway and Meta transmits this to partners.
  - `whatsappTemplate` WhatsappTemplate — See [WhatsApp Templates](https://developers.facebook.com/docs/whatsapp/business-management-api/message-templates).
    - `officialTemplateId` string — Official template ID assigned by WhatsApp. This ID is used to identify the template in WhatsApp's system.
    - `wabaId` string, required — WhatsApp Business Account ID.
    - `name` string, required — Name of the template.
    - `language` string, required — Language code of the template. See [Supported Languages](https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/supported-languages) for all codes.
    - `category` 'AUTHENTICATION' | 'MARKETING' | 'UTILITY' — Category of WhatsApp templates. - `AUTHENTICATION`: Enable businesses to authenticate users with one-time passcodes, potentially at multiple steps in the login process (e.g., account verification, account recovery, integrity challenges). - `MARKETING`: Include promotions or offers, informational updates, or invitations for customers to respond / take action. Any conversation that does not qualify as utility or authentication is a marketing conversation. - `UTILITY`: Facilitate a specific, agreed-upon request or transaction or update to a customer about an ongoing transaction, including post-purchase notifications and recurring billing statements.
    - `subCategory` 'ORDER_STATUS' — Subcategory of WhatsApp templates. - ORDER_STATUS: Order status template is categorized as `UTILITY` template and apart from name and language of choice, it has general template components such as `BODY`, `FOOTER` and additionally subcategory as `ORDER_STATUS`.
    - `previousCategory` string — This field indicates the template's previous category (or `null`, for newly created templates after April 1, 2023). Compare this value to the template's `category` field value, which indicates the template's current category.
    - `messageSendTtlSeconds` integer — If we are unable to deliver a message for an amount of time that exceeds its time-to-live, we will stop retrying and drop the message. By default, messages that use an authentication template have a default TTL of **10 minutes**, and messages that use a utility or marketing template have a default TTL of **30 days**. Set its value between `30` and `900` seconds (i.e., 30 seconds to 15 minutes) for authentication templates, or `30` and `43200` seconds (i.e., 30 seconds to 12 hours) for utility templates, or `43200` and `2592000` seconds (i.e., 12 hours to 30 days) for marketing templates. Alternatively, you can set this value to `-1`, which will set a custom TTL of 30 days for either type of template. We encourage you to set a time-to-live for all of your authentication templates, preferably equal to or less than your code expiration time, to ensure your customers only get a message when a code is still usable. Authentication templates created before October 23, 2024, have a default TTL of 30 days.
    - `components` WhatsappTemplateComponent[] — Template components. A template consists of `HEADER`, `BODY`, `FOOTER`, and `BUTTONS` components. `BODY` component is required, the other types are optional.
      - `type` 'BODY' | 'HEADER' | 'FOOTER' | 'BUTTONS' | 'LIMITED_TIME_OFFER' | 'CAROUSEL' — **Required.** Template component type. - `BODY`: Body components are text-only components and are required by all templates. Templates are limited to one body component. - `HEADER`: Headers are optional components that appear at the top of template messages. Headers support text, media (images, gif, videos, documents). Templates are limited to one header component. - `FOOTER`: Footers are optional text-only components that appear immediately after the body component. Templates are limited to one footer component. - `BUTTONS`: Buttons are optional interactive components that perform specific actions when tapped. - `LIMITED_TIME_OFFER`: Use for limited-time offer templates. The delivered message can display an offer expiration details section with a heading, an optional expiration timer, and the offer code itself. - `CAROUSEL`: Carousel templates allow you to send a single text message (1), accompanied by a set of up to 10 carousel cards (2) in a horizontally scrollable view.
      - `format` 'TEXT' | 'IMAGE' | 'GIF' | 'VIDEO' | 'DOCUMENT' | 'LOCATION' — **Required for type `HEADER`.**
      - `text` string — For body text (type = `BODY`), maximum 1024 characters. For header text (type = `HEADER`, format = `TEXT`), maximum 60 characters. For footer text (type = `FOOTER`), maximum 60 characters. For card body text (`CAROUSEL` card component type = `BODY`), maximum 160 characters.
      - `buttons` WhatsappTemplateComponentButton[] — **Required for type `BUTTONS`.** Buttons are optional interactive components that perform specific actions when tapped. Templates can have a mixture of up to 10 button components total, although there are limits to individual buttons of the same type as well as combination limits. If a template has more than three buttons, two buttons will appear in the delivered message and the remaining buttons will be replaced with a **See all options** button. Tapping the **See all options** button reveals the remaining buttons.
        - `type` 'PHONE_NUMBER' | 'URL' | 'QUICK_REPLY' | 'COPY_CODE' | 'OTP' | 'CATALOG' | 'MPM' | 'FLOW' | 'ORDER_DETAILS' | 'VOICE_CALL', required — Button type. - `PHONE_NUMBER`: Phone number buttons call the specified business phone number when tapped by the app user. Templates are limited to one phone number button. - `URL`: URL buttons load the specified URL in the device's default web browser when tapped by the app user. Templates are limited to two URL buttons. - `QUICK_REPLY`: Quick reply buttons are custom text-only buttons that immediately message you with the specified text string when tapped by the app user. Templates are limited to 10 quick reply buttons. If using quick reply buttons with other buttons, buttons must be organized into two groups: quick reply buttons and non-quick reply buttons. - `COPY_CODE`: Copy code buttons copy a text string (defined when the template is sent in a template message) to the device's clipboard when tapped by the app user. Templates are limited to one copy code button. - `OTP`: One-time password (OTP) buttons are a special type of URL button component used with authentication templates. - `CATALOG`: When a customer taps the **View catalog** button in a catalog template message, your product catalog appears within WhatsApp. - `MPM`: Customers can browse products and sections by tapping the **View items** button in a multi-product template message. - `FLOW`: Use this type to specify the [Flow](https://developers.facebook.com/docs/whatsapp/flows) to be sent with the template message. - `ORDER_DETAILS`: Provides a order details button with `Review and Pay` text. - `VOICE_CALL`: Triggers a WhatsApp call, when clicked by a WhatsApp customer.
        - `text` string — **Required for button type `PHONE_NUMBER` or `URL`.** Button text. For `CODE_CODE` buttons, the text is a pre-set value and cannot be customized. For `OTP` buttons, if omitted, the text will default to a pre-set value localized to the template's language. For example, `Copy Code` for English (US). If your template is using a one-tap autofill button and you supply this value, the authentication template message will display a copy code button with this text if we are unable to validate your [handshake](https://developers.facebook.com/docs/whatsapp/business-management-api/authentication-templates/autofill-button-authentication-templates#handshake). Maximum 25 characters.
        - `url` string — **Required for button type `URL`.** URL of website. There can be at most 1 variable at the end of the URL. Example: `https://www.luckyshrub.com/shop?promo={{1}}`. 2000 characters maximum.
        - `phone_number` string — **Required for button type `PHONE_NUMBER`.** Alphanumeric string. Business phone number to be (display phone number) called when the user taps the button. 20 characters maximum.
        - `otp_type` 'COPY_CODE' | 'ONE_TAP' | 'ZERO_TAP' — Indicates button OTP type. Set to `COPY_CODE` if you want the template to use a copy code button, `ONE_TAP` to have it use a one-tap autofill button, or `ZERO_TAP` to have no button at all.
        - `autofill_text` string — **One-tap and zero-tap buttons only.** One-tap button text. Maximum 25 characters.
        - `package_name` string — **One-tap and zero-tap buttons only.** Your Android app's package name.
        - `signature_hash` string — **One-tap and zero-tap buttons only.** Your app signing key hash. See [App Signing Key Hash](https://developers.facebook.com/docs/whatsapp/business-management-api/authentication-templates/zero-tap-authentication-templates#app-signing-key-hash).
        - `zero_tap_terms_accepted` boolean — **Zero-tap buttons only.** Set to `true` to indicate that you understand that your use of zero-tap authentication is subject to the WhatsApp Business Terms of Service, and that it's your responsibility to ensure your customers expect that the code will be automatically filled in on their behalf when they choose to receive the zero-tap code through WhatsApp. If set to `false`, the template will not be created as you need to accept zero-tap terms before creating zero-tap enabled message templates.
        - `example` string[] — Sample full URL for a `URL` button with a variable.
        - `flow_id` string — **Conditionally required for button type `FLOW`.** The unique ID of the Flow. Cannot be used if `flow_name` or `flow_json` parameters are provided. Only one of these parameters is allowed.
        - `flow_name` string — **Conditionally required for button type `FLOW`.** The name of the Flow. Cannot be used if `flow_id` or `flow_json` parameters are provided. Only one of these parameters is allowed. The Flow ID is stored in the message template, not the name, so changing the Flow name will not affect existing message templates.
        - `flow_json` string — **Conditionally required for button type `FLOW`.** The Flow JSON encoded as string with escaping. The Flow JSON specifies the content of the Flow. Cannot be used if `flow_id` or `flow_name` parameters are provided. Only one of these parameters is allowed.
        - `flow_action` string — **Use for button type `FLOW`.** Either `navigate` or `data_exchange`. Defaults to `navigate`.
        - `navigate_screen` string — **Required if `flow_action` is `navigate`.** The unique ID of the Screen in the Flow.
      - `add_security_recommendation` boolean — **Optional. Only applicable in the `BODY` component of an AUTHENTICATION template.** Set to `true` if you want the template to include the string, *For your security, do not share this code.* Set to `false` to exclude the string.
      - `code_expiration_minutes` integer — **Optional. Only applicable in the `FOOTER` component of an AUTHENTICATION template.** Indicates number of minutes the password or code is valid. If omitted, the code expiration warning will not be displayed in the delivered message. Minimum 1, maximum 90.
      - `limited_time_offer` WhatsappTemplateComponentLimitedTimeOffer — Use for `LIMITED_TIME_OFFER` components.
        - `text` string — **Required.** Offer details text. Maximum 16 characters.
        - `has_expiration` boolean — **Optional.** Set to `true` to have the [offer expiration details](https://developers.facebook.com/docs/whatsapp/business-management-api/message-templates/limited-time-offer-templates#offer-expiration-details) appear in the delivered message. If set to `true`, the copy code button component must be included in the `buttons` array, and must appear first in the array. If set to `false`, offer expiration details will not appear in the delivered message and the copy code button component is optional. If including the copy code button, it must appear first in the `buttons` array.
      - `example` WhatsappTemplateComponentExample — **Required** when: - `type` is `HEADER`, and `format` is one of `IMAGE`, `GIF`, `VIDEO`, or `DOCUMENT`. Provide a sample media URL in `header_url`. - `type` is `HEADER`, `format` is `TEXT`, and a variable is used in `text`. Provide a sample value for that variable in `header_text`. There can be at most 1 variable in `HEADER` text. - `type` is `BODY`, and variables are used in `text`. Provide sample values for those variables in `body_text`.
        - `body_text` array[] — Sample values for variables in `text` of a `BODY` component.
          - string[]
        - `header_text` string[] — Sample value for the variable in `text` of a `HEADER` component.
        - `header_url` string[] — Sample media URL for a `HEADER` component whose format is one of `IMAGE`, `GIF`, `VIDEO`, or `DOCUMENT`. Supported types: - For `IMAGE`, the URL must end with one of `.jpg`, `.jpeg`, or `.png`, size limit is 5MB. - For `GIF`, the URL must end with `.mp4`, size limit is 3.5MB. - For `VIDEO`, the URL must end with `.mp4`, size limit is 16MB. - For `DOCUMENT`, the URL must end with `.pdf`, size limit is 100MB.
      - `cards` WhatsappTemplateComponentCard[] — **Required for type `CAROUSEL`.** Carousel templates support up to 10 carousel cards.
        - `components` WhatsappTemplateComponentCardComponent[] — **Required.** Card components.
          - `type` 'BODY' | 'HEADER' | 'BUTTONS' — **Required.** Card component type. - `BODY`: Body components are text-only components. Cards must have body text. - `HEADER`: Cards must have a media header (image or video). - `BUTTONS`: Buttons are interactive components that perform specific actions when tapped. Cards must have at least one button, up to 2 buttons.
          - `format` 'IMAGE' | 'VIDEO' — **Required for type `HEADER`.** Cards must have a media header (image or video).
          - `text` string — **Required for type `BODY`.** Card body text supports variables. Maximum 160 characters.
          - `buttons` WhatsappTemplateComponentButton[] — **Required for type `BUTTONS`.** Cards must have at least one button. Supports 2 buttons. Buttons can be the same or a mix of quick reply buttons, phone number buttons, or URL buttons.
            - `type` 'PHONE_NUMBER' | 'URL' | 'QUICK_REPLY' | 'COPY_CODE' | 'OTP' | 'CATALOG' | 'MPM' | 'FLOW' | 'ORDER_DETAILS' | 'VOICE_CALL', required — Button type. - `PHONE_NUMBER`: Phone number buttons call the specified business phone number when tapped by the app user. Templates are limited to one phone number button. - `URL`: URL buttons load the specified URL in the device's default web browser when tapped by the app user. Templates are limited to two URL buttons. - `QUICK_REPLY`: Quick reply buttons are custom text-only buttons that immediately message you with the specified text string when tapped by the app user. Templates are limited to 10 quick reply buttons. If using quick reply buttons with other buttons, buttons must be organized into two groups: quick reply buttons and non-quick reply buttons. - `COPY_CODE`: Copy code buttons copy a text string (defined when the template is sent in a template message) to the device's clipboard when tapped by the app user. Templates are limited to one copy code button. - `OTP`: One-time password (OTP) buttons are a special type of URL button component used with authentication templates. - `CATALOG`: When a customer taps the **View catalog** button in a catalog template message, your product catalog appears within WhatsApp. - `MPM`: Customers can browse products and sections by tapping the **View items** button in a multi-product template message. - `FLOW`: Use this type to specify the [Flow](https://developers.facebook.com/docs/whatsapp/flows) to be sent with the template message. - `ORDER_DETAILS`: Provides a order details button with `Review and Pay` text. - `VOICE_CALL`: Triggers a WhatsApp call, when clicked by a WhatsApp customer.
            - `text` string — **Required for button type `PHONE_NUMBER` or `URL`.** Button text. For `CODE_CODE` buttons, the text is a pre-set value and cannot be customized. For `OTP` buttons, if omitted, the text will default to a pre-set value localized to the template's language. For example, `Copy Code` for English (US). If your template is using a one-tap autofill button and you supply this value, the authentication template message will display a copy code button with this text if we are unable to validate your [handshake](https://developers.facebook.com/docs/whatsapp/business-management-api/authentication-templates/autofill-button-authentication-templates#handshake). Maximum 25 characters.
            - `url` string — **Required for button type `URL`.** URL of website. There can be at most 1 variable at the end of the URL. Example: `https://www.luckyshrub.com/shop?promo={{1}}`. 2000 characters maximum.
            - `phone_number` string — **Required for button type `PHONE_NUMBER`.** Alphanumeric string. Business phone number to be (display phone number) called when the user taps the button. 20 characters maximum.
            - `otp_type` 'COPY_CODE' | 'ONE_TAP' | 'ZERO_TAP' — Indicates button OTP type. Set to `COPY_CODE` if you want the template to use a copy code button, `ONE_TAP` to have it use a one-tap autofill button, or `ZERO_TAP` to have no button at all.
            - `autofill_text` string — **One-tap and zero-tap buttons only.** One-tap button text. Maximum 25 characters.
            - `package_name` string — **One-tap and zero-tap buttons only.** Your Android app's package name.
            - `signature_hash` string — **One-tap and zero-tap buttons only.** Your app signing key hash. See [App Signing Key Hash](https://developers.facebook.com/docs/whatsapp/business-management-api/authentication-templates/zero-tap-authentication-templates#app-signing-key-hash).
            - `zero_tap_terms_accepted` boolean — **Zero-tap buttons only.** Set to `true` to indicate that you understand that your use of zero-tap authentication is subject to the WhatsApp Business Terms of Service, and that it's your responsibility to ensure your customers expect that the code will be automatically filled in on their behalf when they choose to receive the zero-tap code through WhatsApp. If set to `false`, the template will not be created as you need to accept zero-tap terms before creating zero-tap enabled message templates.
            - `example` string[] — Sample full URL for a `URL` button with a variable.
            - `flow_id` string — **Conditionally required for button type `FLOW`.** The unique ID of the Flow. Cannot be used if `flow_name` or `flow_json` parameters are provided. Only one of these parameters is allowed.
            - `flow_name` string — **Conditionally required for button type `FLOW`.** The name of the Flow. Cannot be used if `flow_id` or `flow_json` parameters are provided. Only one of these parameters is allowed. The Flow ID is stored in the message template, not the name, so changing the Flow name will not affect existing message templates.
            - `flow_json` string — **Conditionally required for button type `FLOW`.** The Flow JSON encoded as string with escaping. The Flow JSON specifies the content of the Flow. Cannot be used if `flow_id` or `flow_name` parameters are provided. Only one of these parameters is allowed.
            - `flow_action` string — **Use for button type `FLOW`.** Either `navigate` or `data_exchange`. Defaults to `navigate`.
            - `navigate_screen` string — **Required if `flow_action` is `navigate`.** The unique ID of the Screen in the Flow.
          - `example` WhatsappTemplateComponentExample — **Required** when: - `type` is `HEADER`, and `format` is one of `IMAGE`, `GIF`, `VIDEO`, or `DOCUMENT`. Provide a sample media URL in `header_url`. - `type` is `HEADER`, `format` is `TEXT`, and a variable is used in `text`. Provide a sample value for that variable in `header_text`. There can be at most 1 variable in `HEADER` text. - `type` is `BODY`, and variables are used in `text`. Provide sample values for those variables in `body_text`.
            - `body_text` array[] — Sample values for variables in `text` of a `BODY` component.
              - …
            - `header_text` string[] — Sample value for the variable in `text` of a `HEADER` component.
            - `header_url` string[] — Sample media URL for a `HEADER` component whose format is one of `IMAGE`, `GIF`, `VIDEO`, or `DOCUMENT`. Supported types: - For `IMAGE`, the URL must end with one of `.jpg`, `.jpeg`, or `.png`, size limit is 5MB. - For `GIF`, the URL must end with `.mp4`, size limit is 3.5MB. - For `VIDEO`, the URL must end with `.mp4`, size limit is 16MB. - For `DOCUMENT`, the URL must end with `.pdf`, size limit is 100MB.
    - `status` 'PENDING' | 'REJECTED' | 'APPROVED' | 'PAUSED' | 'DISABLED' | 'ARCHIVED' | 'IN_APPEAL' | 'DELETED' — The status of a WhatsApp template. - `PENDING`: The template is still under review. Review can take up to 24 hours. - `REJECTED`: The template has been rejected during review process. - `APPROVED`: The template is approved, and you may begin sending it to customers. - `PAUSED`: The template has been paused due to recurring negative feedback from customers. Message templates with this status cannot be sent to customers. See [Template Pausing](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines#template-pausing). - `DISABLED`: The template has been disabled due to recurring negative feedback from customers or for violating one or more of our policies. Message templates with this status cannot be sent to customers. You may be able to edit a disabled message template and request an appeal. See [Appeals](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines#appeals). - `ARCHIVED`: The template has been archived. Archived templates cannot be sent or edited. - `IN_APPEAL`: The template is in appeal. See also [Template Appeals](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines#appeals). - `DELETED`: The template is deleted.
    - `qualityRating` 'GREEN' | 'YELLOW' | 'RED' | 'UNKNOWN' — Quality rating of WhatsApp template. One of `GREEN`, `YELLOW`, `RED`, or `UNKNOWN`. See also [Template Quality Rating](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines/#quality-rating). - `GREEN`: High quality. - `YELLOW`: Medium quality. - `RED`: Low quality. - `UNKNOWN`: Unknown quality.
    - `reason` string — The reason why the template is rejected.
    - `createTime` string, date-time — The time at which this object is created, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
    - `updateTime` string, date-time — The time at which this object is updated, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
    - `statusUpdateEvent` 'PENDING' | 'APPROVED' | 'REJECTED' | 'IN_APPEAL' | 'PAUSED' | 'FLAGGED' | 'DISABLED' | 'ARCHIVED' | 'UNARCHIVED' | 'REINSTATED' | 'PENDING_DELETION' — Used when an event happened on WhatsApp template status updates. - `PENDING`: Pending. - `APPROVED`: Approved. - `REJECTED`: Rejected. - `IN_APPEAL`: In appeal. See also [Template Appeals](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines#appeals). - `PAUSED`: Paused. See also [Template Pausing](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines#template-pausing). - `FLAGGED`: Flagged. The template is scheduled for disabling. - `DISABLED`: Disabled. See also [Template Pausing](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines#template-pausing). - `ARCHIVED`: Archived. The template status is updated to `ARCHIVED`. - `UNARCHIVED`: Unarchived. The template status is restored to the current status returned by Meta. If the status is `APPROVED`, this event still does not represent a new approval review. - `REINSTATED`: Reinstated. - `PENDING_DELETION`: Pending deletion.
    - `disableDate` string — The date at which the template will be disabled. When a WhatsApp template `FLAGGED` event is received, this field is set.
    - `whatsappApiError` WhatsappApiError — The original error object returned by WhatsApp. See [Handling Errors](https://developers.facebook.com/docs/graph-api/guides/error-handling), [Cloud API Error Codes](https://developers.facebook.com/docs/whatsapp/cloud-api/support/error-codes).
      - `message` string, required — A human-readable description of the error.
      - `code` string, required — An error code.
      - `type` string — Error type.
      - `error_subcode` string — Additional code about the error.
      - `error_user_msg` string — The message to display to the user. The language of the message is based on the locale of the API request.
      - `error_user_title` string — The title of the dialog, if shown. The language of the message is based on the locale of the API request.
      - `fbtrace_id` string — Internal support identifier. When reporting a bug related to a Graph API call, include the fbtrace_id to help us find log data for debugging.
      - `error_data` object — Additional data about the error. A string or map. - For template APIs, this field is a string describing the reason for the error. - For message APIs, this field is a map with property `details` describing the reason for the error.
  - `callingConnect` CallingConnect — Represents a WhatsApp call connect event. Contains information about the call connection including SDP details and participant information.
    - `id` string, required — Unique ID for the call event.
    - `wacid` string, required — The WhatsApp call ID. This ID uniquely identifies the call session.
    - `phoneId` string — The WhatsApp Business phone number ID.
    - `from` string — The caller's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `fromUserId` string — The caller's WhatsApp Business-scoped user ID (BSUID) for customer-initiated calls.
    - `fromParentUserId` string — The caller's parent WhatsApp Business-scoped user ID for customer-initiated calls.
    - `to` string — The callee's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `toUserId` string — The callee's WhatsApp Business-scoped user ID (BSUID) for business-initiated calls.
    - `toParentUserId` string — The callee's parent WhatsApp Business-scoped user ID for business-initiated calls.
    - `customerProfile` WhatsappProfile — Represents the profile of a WhatsApp account.
      - `name` string — Name of the WhatsApp account.
      - `username` string — WhatsApp username.
    - `direction` 'USER_INITIATED' | 'BUSINESS_INITIATED' — The direction of the call. - `USER_INITIATED`: Call initiated by the customer to the business. - `BUSINESS_INITIATED`: Call initiated by the business to the customer.
    - `sdpType` 'offer' | 'answer' — The SDP type for the WebRTC connection.
    - `sdp` string — The Session Description Protocol (SDP) information compliant with [RFC 8866](https://datatracker.ietf.org/doc/html/rfc8866). Contains media session parameters for the WebRTC connection.
    - `dialTime` integer — The time when the call was dialed, in Unix timestamp milliseconds.
  - `callingTerminate` CallingTerminate — Represents a WhatsApp call terminate event. Contains information about the call termination including duration and status.
    - `id` string, required — Unique ID for the call event.
    - `wacid` string, required — The WhatsApp call ID. This ID uniquely identifies the call session.
    - `phoneId` string — The WhatsApp Business phone number ID.
    - `from` string — The caller's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `fromUserId` string — The caller's WhatsApp Business-scoped user ID (BSUID) for customer-initiated calls.
    - `fromParentUserId` string — The caller's parent WhatsApp Business-scoped user ID for customer-initiated calls.
    - `to` string — The callee's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `toUserId` string — The callee's WhatsApp Business-scoped user ID (BSUID) for business-initiated calls.
    - `toParentUserId` string — The callee's parent WhatsApp Business-scoped user ID for business-initiated calls.
    - `customerProfile` WhatsappProfile — Represents the profile of a WhatsApp account.
      - `name` string — Name of the WhatsApp account.
      - `username` string — WhatsApp username.
    - `direction` 'USER_INITIATED' | 'BUSINESS_INITIATED' — The direction of the call. - `USER_INITIATED`: Call initiated by the customer to the business. - `BUSINESS_INITIATED`: Call initiated by the business to the customer.
    - `startTime` integer — The time when the call started, in Unix timestamp milliseconds.
    - `endTime` integer — The time when the call ended, in Unix timestamp milliseconds.
    - `duration` integer — The duration of the call in seconds.
    - `status` 'COMPLETED' | 'FAILED' — The final status of the call. - `COMPLETED`: The call was successfully completed. - `FAILED`: The call failed due to an error.
    - `errorCode` string — Error code when the call status is `FAILED`. Numeric string representing the error.
  - `callingStatusUpdated` CallingStatusUpdated — Represents a WhatsApp call status update event. Contains information about status changes during the call lifecycle.
    - `id` string — Unique ID for the call event (optional field, may not be present).
    - `wabaId` string — WhatsApp Business Account ID.
    - `wacid` string, required — The WhatsApp call ID. This ID uniquely identifies the call session.
    - `phoneId` string — The WhatsApp Business phone number ID (optional field, may not be present).
    - `status` 'RINGING' | 'ACCEPTED' | 'REJECTED', required — The current status of the call. - `RINGING`: Business initiated call is ringing the user. - `ACCEPTED`: Business initiated call is accepted by the user. - `REJECTED`: Business initiated call is rejected by the user.
    - `recipientPhone` string — The recipient's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `recipientUserId` string — The recipient's WhatsApp Business-scoped user ID (BSUID).
    - `parentRecipientUserId` string — The recipient's parent WhatsApp Business-scoped user ID.
    - `customerProfile` WhatsappProfile — Represents the profile of a WhatsApp account.
      - `name` string — Name of the WhatsApp account.
      - `username` string — WhatsApp username.
  - `flowChanges` WhatsappFlowStatusChange — Represents a WhatsApp flow status change event. Contains information about the flow status change including the flow ID and the new status.
    - `flowId` string, required — The unique ID of the Flow.
    - `wabaId` string, required — WhatsApp Business Account ID.
    - `message` string — The message ID of the flow status change.
    - `oldStatus` string — The old status of the flow.
    - `newStatus` string, required — The new status of the flow.
  - `whatsappUserPreference` WhatsappUserPreference
    - `wabaId` string — WhatsApp Business Account ID.
    - `businessPhoneNumber` string — Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `businessPhoneId` string — Phone number ID.
    - `contactName` string — WhatsApp user name.
    - `contactPhoneNumber` string — WhatsApp user phone number. Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `detail` string — Description of marketing message preference.
    - `category` string
    - `value` string — Marketing message preference.
    - `timestamp` string — Unix timestamp indicating when the webhook was triggered.

## Response `200`

The request is successfully accepted.

---

[API](https://skmtc.dev/ycloud/apis/ycloud-api.md) · [All operations](https://skmtc.dev/ycloud/apis/ycloud-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ycloud/ycloud-api/revisions/4e13d3ca9df8/schema)
