# Update a template in project

Updates a template DRAFT.
    
    Note that it is not possible to update all fields for a template,
    if you want to update a field that is not supported you will need to delete the draft and create a new one.

    Update a template REJECTED / APPROVED / PAUSED / DISABLED

    It is possible to update templates that have been rejected, approved, paused or disabled, we will automatically set the status to draft when update a rejected template.

Endpoint: PATCH /v1/projects/{projectId}/whatsapp/templates/{templateName}/languages/{languageCode}
Version: 1.2.91
Security: BasicAuth, BearerAuth, OAuth2Production

## Security:

  - `BasicAuth` (unknown)
    http basic

  - `BearerAuth` (unknown)
    http bearer JWT

  - `OAuth2Production` (unknown)
    oauth2

## Path parameters:

  - `projectId` (string, required)
    The unique ID of the project. You can find this on the Sinch Dashboard.

  - `templateName` (string, required)
    The unique name of the template.

  - `languageCode` (string, required)
    The language code of the specific template.

## Request body:

  - `application/json` (unknown)
    Supported template fields to update.

## Request fields (application/json):

  - `status` (string)
    Create as draft or submit. Defaults to draft.
    Enum: "DRAFT", "SUBMIT"

  - `category` (string)
    Works if status template is DRAFT or it was rejected with INCORRECT_CATEGORY.
    Enum: "AUTHENTICATION", "MARKETING", "UTILITY"

  - `allowCategoryChange` (boolean)
    Works if status template is DRAFT or it was rejected with INCORRECT_CATEGORY True if Meta should be allowed to change the category if they determine the category is wrong. If false, Meta might reject the template if they determine the category is wrong based on the template contents. Defaults to false.

  - `details` (object)
    'Template input details and information.' Not required for draft.

  - `details.components` (array)
    List of components in the template. Must contain a BODY component and can only have one entry of each type. Not required for draft. Field 'type' must have unique values across items.

  - `details.components.type` (string, required)
    Enum: "HEADER"

  - `details.components.format` (string, required)
    Enum: "LOCATION"

  - `details.components.format` (string, required)
    Enum: "TEXT"

  - `details.components.text` (string, required)
    Text to show in the header. Can contain one header variable. Not required for draft.

  - `details.components.example` (string)
    Example for the header variable. Required if there is a variable in the text header.

  - `details.components.format` (string, required)
    Enum: "DOCUMENT", "IMAGE", "VIDEO"

  - `details.components.example` (object, required)
    Not required for draft.

  - `details.components.example.url` (string, required)
    File Requirements
1) Image

- Images must be 8-bit, RGB or RGBA
- supported mime types:
`image/jpeg`
 or
`image/png`
- max file size:
`5MB`

1) Video

- Only H.264 video codec and AAC audio codec is supported.
- We support videos with a single audio stream or no audio stream.
- supported mime types:
`video/3gp`
 or
`video/mp4`
- max file size:
`16MB`

1) Document

- supported mime types:
`application/pdf`
- max file size:
`100MB`

Not required for draft.

  - `details.components.example.mimeType` (string)
    Optional mime type of file if it can not be determined by the file contents.
    Enum: "IMAGE/JPEG", "IMAGE/PNG", "APPLICATION/PDF", "VIDEO/3GP", "VIDEO/MP4"

  - `details.components.type` (string, required)
    Enum: "BODY"

  - `details.components.text` (string)

  - `details.components.examples` (array)
    Examples for the body variables. Requires one example for each variable in the body text. If no variables are used, the examples are optional.

  - `details.components.addSecurityRecommendation` (boolean)
    Only valid if template category is AUTHENTICATION. If true, adds a security recommendation to the body. Defaults to false.

  - `details.components.type` (string, required)
    Enum: "FOOTER"

  - `details.components.codeExpirationMinutes` (number)
    Only valid if template category is AUTHENTICATION. If set will add a text detailing the expiration time.

  - `details.components.type` (string, required)
    Enum: "BUTTONS"

  - `details.components.buttons` (array, required)
    Not required for draft. Each field in (value, text) must have unique values across items.

  - `details.components.buttons.type` (string, required)
    Enum: "FLOW"

  - `details.components.buttons.text` (string, required)
    Text to display on the Flow button. Not required for draft.

  - `details.components.buttons.flowId` (string, required)
    Flow ID to launch when button is pressed. Not required for draft.

  - `details.components.buttons.flowAction` (string, required)
    Flow action. Not required for draft.
    Enum: "DATA_EXCHANGE", "NAVIGATE"

  - `details.components.buttons.navigateScreen` (string)
    The unique ID of the first screen. Required for Navigate action.

  - `details.components.buttons.type` (string, required)
    Enum: "OTP"

  - `details.components.buttons.otpType` (string, required)
    Enum: "COPY_CODE", "ONE_TAP", "ZERO_TAP"

  - `details.components.buttons.text` (string, required)
    Not required for draft.

  - `details.components.buttons.autofillText` (string)
    One-tap autofill button label text.

  - `details.components.buttons.packageName` (string)
    Your Android app's package name.

  - `details.components.buttons.signatureHash` (string)
    Your app signing key hash.

  - `details.components.buttons.supportedApps` (array)
    List of supported apps for the OTP button.

  - `details.components.buttons.supportedApps.packageName` (string, required)
    Your Android app's package name.

  - `details.components.buttons.supportedApps.signatureHash` (string, required)
    Your app signing key hash.

  - `details.components.buttons.zeroTapTermsAccepted` (boolean)
    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.

  - `details.components.buttons.type` (string, required)
    Enum: "PHONE_NUMBER"

  - `details.components.buttons.phoneNumber` (string, required)
    Not required for draft.

  - `details.components.buttons.type` (string, required)
    Enum: "QUICK_REPLY"

  - `details.components.buttons.type` (string, required)
    Enum: "REQUEST_CONTACT_INFO"

  - `details.components.buttons.type` (string, required)
    Enum: "URL"

  - `details.components.buttons.url` (string, required)
    The url address. To make it dynamic you can add '{{1}}' to the end of the url eg,
https://www.my-website.com?name={{1}}, and not
https://www.my-{{1}}.com.
Restricted domains: `wa.me` or `whatsapp.com`
Not required for draft.

  - `details.components.buttons.example` (string)
    Example of the full url together with the dynamic value. Required if there is a {{1}} in the URL field, eg
If the 'url' field is 'https://www.my-website.com?name={{1}}', then example can have the following value
'example' = 'https://www.my-website.com?name=john'
Not required for draft.

  - `details.components.type` (string, required)
    Enum: "CAROUSEL"

  - `details.components.cards` (array, required)
    Media cards.
All cards defined on a template must have the same components.
It is only necessary to define two product cards upon template creation. 
An approved template with two product cards can be used to send up to 10 cards in a template message.
Not required for draft.

  - `details.components.cards.components` (array, required)
    List of components in the cards.
Each card in the template has an image or video header asset, card body text, and up to two buttons.
All cards defined on a template must have the same components.
Not required for draft.

Field 'type' must have unique values across items.

  - `details.components.cards.components.type` (string, required)
    Enum: "HEADER"

  - `details.components.cards.components.format` (string, required)
    Card header format.
    Enum: "IMAGE", "VIDEO"

  - `details.components.cards.components.example` (object, required)
    Uploaded media asset handle.
Media assets are automatically cropped to a wide ratio based on the WhatsApp user's device.
Not required for draft.

  - `details.components.cards.components.example.url` (string, required)
    File Requirements
1) Image

- Images must be 8-bit, RGB or RGBA
- supported mime types:
`image/jpeg`
 or
`image/png`
- max file size:
`5MB`

1) Video

- Only H.264 video codec and AAC audio codec is supported.
- We support videos with a single audio stream or no audio stream.
- supported mime types:
`video/3gp`
 or
`video/mp4`
- max file size:
`16MB`

Not required for draft.

  - `details.components.cards.components.example.mimeType` (string)
    Optional mime type of file if it can not be determined by the file contents.
    Enum: "IMAGE/JPEG", "IMAGE/PNG", "APPLICATION/PDF", "VIDEO/3GP", "VIDEO/MP4"

  - `details.components.cards.components.type` (string, required)
    Enum: "BODY"

  - `details.components.cards.components.examples` (array)
    Examples for the body variables. Requires one example for each variable in the body text. If no variables are used, the examples are optional.

  - `details.components.cards.components.text` (string, required)
    Card body text. Supports variables. Not required for draft.

  - `details.components.cards.components.type` (string, required)
    Enum: "BUTTONS"

  - `details.components.cards.components.buttons` (array, required)
    Card buttons.
Button combinations can be a mix of quick reply buttons, phone number buttons, and URL buttons.
Not required for draft.

Fields (type, text) must not all share the same value across items.

  - `details.messageSendTtlSeconds` (number)
    Template message delivery retry time-to-live (TTL) override value. If unable to deliver the template message, it will be periodically retry for this period of time. If it is unable to deliver the message for this period of time, the message will be dropped.
|  | AUTHENTICATION | MARKETING | UTILITY |
|  --- | --- | --- | --- |
| Default | 10 minutes | 30 days | 30 days |
| Customizable range | 10 seconds to 15 minutes | 12 hours to 30 days | 30 seconds to 12 hours |
| Valid values | 10 to 900 seconds | 43200 to 2592000 seconds | 30 to 43200 seconds |

Please note that authentication templates created before October 23, 2024, have a default TTL of 30 days.

## Request examples:

  - `Body request` (unknown)
    Example body request to update a template.

## Response 200:

  - `200` (unknown)
    Updated template draft

## Response 200 fields (application/json):

  - `whatsappId` (string)

  - `state` (string)
    Enum: "APPROVED", "DISABLED", "PAUSED", "REJECTED"

  - `name` (string, required)

  - `language` (string, required)
    Enum: "AF", "AR", "AZ", "BG", "BN", "CA", "CS", "DA", "DE", "EL", "EN", "EN_GB", "EN_US", "ES", "ES_AR", "ES_ES", "ES_MX", "ES_UY", "ET", "FA", "FI", "FIL", "FR", "GA", "GU", "HA", "HE", "HI", "HR", "HU", "ID", "IT", "JA", "KA", "KK", "KN", "KO", "KY_KG", "LO", "LT", "LV", "MK", "ML", "MR", "MS", "NB", "NL", "PA", "PL", "PT_BR", "PT_PT", "RO", "RU", "RW_RW", "SK", "SL", "SQ", "SR", "SV", "SW", "TA", "TE", "TH", "TR", "UK", "UR", "UZ", "VI", "ZH_CN", "ZH_HK", "ZH_TW", "ZU", "UNRECOGNIZED"

  - `category` (string, required)
    Enum: "AUTHENTICATION", "MARKETING", "UTILITY", "UNRECOGNIZED"

  - `rejectionCode` (string)
    Rejection code if template is in status 'REJECTED'
    Enum: "ABUSIVE_CONTENT", "INCORRECT_CATEGORY", "INVALID_FORMAT", "NONE", "SCAM", "UNRECOGNIZED"

  - `qualityScore` (string)
    Quality score of the HSM.
    Enum: "QUALITY_SCORE_GREEN", "QUALITY_SCORE_RED", "QUALITY_SCORE_YELLOW", "QUALITY_SCORE_UNKNOWN", "UNRECOGNIZED"

  - `changes` (object)
    Object containing changes on the template. If empty the changes has been approved and applied to the template.

  - `changes.status` (string, required)
    The current status of the changes.
`DRAFT`: The changes has not been submitted.
`IN_PROGRESS`: The changes has been submitted.
    Enum: "DRAFT", "IN_PROGRESS", "REJECTED"

  - `changes.allowCategoryChange` (boolean)
    True if Meta should be allowed to change the category if they determine the category is wrong. If false, Meta might reject the template if they determine the category is wrong based on the template contents. Defaults to false.

  - `changes.details` (any)
    Template details and information.

  - `changes.details.components` (array, required)
    List of components in the template. Must contain a BODY component and can only have one entry of each type.

  - `changes.details.components.type` (string, required)
    Enum: "HEADER"

  - `changes.details.components.format` (string, required)
    Enum: "TEXT"

  - `changes.details.components.text` (string)
    Text to show in the header

  - `changes.details.components.example` (string)
    Example for the header variable.

  - `changes.details.components.format` (string, required)
    Enum: "DOCUMENT", "IMAGE", "VIDEO"

  - `changes.details.components.example` (object)

  - `changes.details.components.example.url` (string)

  - `changes.details.components.type` (string, required)
    Enum: "BODY"

  - `changes.details.components.text` (string)

  - `changes.details.components.examples` (array)
    Examples for the body variables.

  - `changes.details.components.addSecurityRecommendation` (boolean)

  - `changes.details.components.type` (string, required)
    Enum: "FOOTER"

  - `changes.details.components.codeExpirationMinutes` (number)

  - `changes.details.components.type` (string, required)
    Enum: "BUTTONS"

  - `changes.details.components.buttons` (array, required)

  - `changes.details.components.buttons.type` (string, required)
    Enum: "PHONE_NUMBER"

  - `changes.details.components.buttons.text` (string)

  - `changes.details.components.buttons.phoneNumber` (string)

  - `changes.details.components.buttons.type` (string, required)
    Enum: "URL"

  - `changes.details.components.buttons.url` (string)

  - `changes.details.components.buttons.example` (string)

  - `changes.details.components.buttons.type` (string, required)
    Enum: "QUICK_REPLY"

  - `changes.details.components.buttons.type` (string, required)
    Enum: "OTP"

  - `changes.details.components.buttons.otpType` (string, required)
    Enum: "COPY_CODE", "ONE_TAP", "ZERO_TAP", "UNRECOGNIZED"

  - `changes.details.components.buttons.autofillText` (string)

  - `changes.details.components.buttons.packageName` (string)

  - `changes.details.components.buttons.signatureHash` (string)

  - `changes.details.components.buttons.supportedApps` (array)

  - `changes.details.components.buttons.zeroTapTermsAccepted` (boolean)

  - `changes.details.components.buttons.type` (string, required)
    Enum: "FLOW"

  - `changes.details.components.buttons.text` (string)
    Text to display on the Flow button

  - `changes.details.components.buttons.flowId` (string)
    Flow ID to launch when button is pressed

  - `changes.details.components.buttons.flowAction` (string)
    Flow action
    Enum: "DATA_EXCHANGE", "NAVIGATE", "UNKNOWN", "UNRECOGNIZED"

  - `changes.details.components.buttons.navigateScreen` (string)
    The unique ID of the first screen. Required for Navigate action.

  - `changes.details.components.buttons.type` (string, required)
    Enum: "REQUEST_CONTACT_INFO"

  - `changes.details.components.format` (string, required)
    Enum: "LOCATION"

  - `changes.details.components.type` (string, required)
    Enum: "CAROUSEL"

  - `changes.details.components.cards` (array, required)
    Media cards.

  - `changes.details.components.cards.components` (array, required)
    List of components in the cards.

  - `changes.details.messageSendTtlSeconds` (number)
    Template message delivery retry time-to-live (TTL) override value. If unable to deliver the template message, it will be periodically retry for this period of time. If it is unable to deliver the message for this period of time, the message will be dropped.
|  | AUTHENTICATION | MARKETING | UTILITY |
|  --- | --- | --- | --- |
| Default | 10 minutes | 30 days | 30 days |
| Customizable range | 10 seconds to 15 minutes | 12 hours to 30 days | 30 seconds to 12 hours |
| Valid values | 10 to 900 seconds | 43200 to 2592000 seconds | 30 to 43200 seconds |

Please note that authentication templates created before October 23, 2024, have a default TTL of 30 days.

  - `changes.details.components` (array)
    The current status of the changes.
`DRAFT`: The changes has not been submitted.
`IN_PROGRESS`: The changes has been submitted.

  - `details` (object)
    Template details and information.

  - `analytics` (array, required)
    Template analytics.

  - `analytics.sent` (number, required)
    Number of times template has been sent.

  - `analytics.delivered` (number, required)
    Number of times template has been delivered.

  - `analytics.read` (number, required)
    Number of times template has been read.

  - `analytics.start` (string, required)
    The UTC Date Time in ISO 8601 for start of date range.

  - `analytics.end` (string, required)
    The UTC Date Time in ISO 8601 for end of date range.

  - `analytics.buttons` (array, required)
    Number of times buttons in the template has been clicked.

  - `analytics.buttons.type` (string, required)
    Type of button.
    Enum: "QUICK_REPLY", "UNIQUE_URL", "URL", "UNRECOGNIZED"

  - `analytics.buttons.content` (string, required)
    Content of the button.

  - `analytics.buttons.clicks` (number, required)
    Number of times the button has been clicked.

  - `isMetaGenerated` (boolean, required)
    Indicates if the template was auto-generated by Meta.

## Response 400:

  - `400` (unknown)
    BadRequest

## Response 400 fields (application/json):

  - `errorCode` (string)
    Error code allows to programmatically handle errors.
    Example: project_not_initialized

  - `message` (string)
    Human readable message.
    Example: Project not initialized for WhatsApp.

  - `resolution` (string)
    Human readable message with an explanation of how to solve the error.
    Example: Verify that the project ID is correct and that it has been onboarded for WhatsApp.

  - `additionalInformation` (object)
    Additional information for error.
    Example: {"supportedCodes":"AF, AR, AZ, BG, BN, CA, CS, DA, DE, EL, EN, EN_GB, EN_US, ES, ES_AR, ES_ES, ES_MX, ES_UY, ET, FA, FI, FIL, FR, GA, GU, HA, HE, HI, HR, HU, ID, IT, JA, KA, KK, KN, KO, KY_KG, LO, LT,…

## Response 401:

  - `401` (unknown)
    Unauthorized

## Response 401 fields (application/json):

  - `errorCode` (string)
    Error code allows to programmatically handle errors.
    Example: unauthorized_error

  - `message` (string)
    Human readable message.
    Example: Unauthorized error.

  - `resolution` (string)
    Human readable message with an explanation of how to solve the error.
    Example: Verify that projectId is correct.

## Response 404:

  - `404` (unknown)
    NotFound

## Response 404 fields (application/json):

  - `errorCode` (string)
    Error code allows to programmatically handle errors.
    Example: template_not_found

  - `message` (string)
    Human readable message.
    Example: Template not found.

  - `resolution` (string)
    Human readable message with an explanation of how to solve the error.
    Example: Verify that the parameters are correct.

## Response 409:

  - `409` (unknown)
    Conflict

## Response 409 fields (application/json):

  - `errorCode` (string)
    Error code allows to programmatically handle errors.
    Example: template_not_updatable

  - `message` (string)
    Human readable message.
    Example: Template is not updatable.

  - `resolution` (string)
    Human readable message with an explanation of how to solve the error.
    Example: Updates are only supported by templates with state: APPROVED, DISABLED, PAUSED, REJECTED.

## Response 424:

  - `424` (unknown)
    FailedDependency

## Response 424 fields (application/json):

  - `errorCode` (string)
    Error code allows to programmatically handle errors.
    Example: template_limit_reached

  - `message` (string)
    Human readable message.
    Example: Number of templates has reached the limit.

  - `resolution` (string)
    Human readable message with an explanation of how to solve the error.
    Example: Delete some templates or reach out to support to increase the template limit. If template is saved as draft, try to submit the template again. If option "saveDraftOnFailure" is specified as "false", t…

  - `additionalInformation` (object)
    Additional information for error.
    Example: {"metaError":{"code":"123","subcode":"123456","message":"Invalid parameter","description":"Character Limit Exceeded","reason":"field 'name' can't have more than 1,024 characters"}}

## Response 429:

  - `429` (unknown)
    TooManyRequests

## Response 429 fields (application/json):

  - `errorCode` (string)
    Error code allows to programmatically handle errors.
    Example: whatsapp_business_api_request_limit_exceeded

  - `message` (string)
    Human readable message.
    Example: WhatsApp business api request limit reached.

  - `resolution` (string)
    Human readable message with an explanation of how to solve the error.
    Example: WhatsApp business API request limits reached. Please try again later.

## Response 500:

  - `500` (unknown)
    InternalServerError

## Response 500 fields (application/json):

  - `errorCode` (string)
    Error code allows to programmatically handle errors.
    Example: template_start_session_for_uploading_media

  - `message` (string)
    Human readable message.
    Example: Failed to start session for uploading template media example.

  - `resolution` (string)
    Human readable message with an explanation of how to solve the error.
    Example: Please try again later. If template is saved as draft, try to submit the template again. If option "saveDraftOnFailure" is specified as "false", try the request again.

## Response 200 examples:

  - `Update response` (unknown)
    Response when successfully update a template.

## Callback:

  - `Comment` (unknown)
    WhatsApp Template received a comment 
      Callback sent when a comment is placed on a template.

  - `Approved` (unknown)
    WhatsApp Template approved 
        Callback sent when a template is approved.

  - `Rejected` (unknown)
    WhatsApp Template rejected 
        Callback sent when a template is rejected.

  - `StatusUpdated` (unknown)
    WhatsApp Template status updated Callback sent when a template status in changed to `ARCHIVED`, `DISABLED`, `FLAGGED`, `PAUSED`, `REINSTATED` or `UNPAUSED`.

  - `Deleted` (unknown)
    WhatsApp Template deleted Callback sent when a template is deleted.

  - `QualityScoreUpdated` (unknown)
    WhatsApp Template quality score updated 
        Callback sent when a template quality score changed.

  - `CategoryUpdated` (unknown)
    WhatsApp Template category updated 
        Callback sent when a templates category is changed.

  - `FutureCategoryUpdate` (unknown)
    WhatsApp Template category coming update 
        Callback sent when a templates category coming to be changed.

## Callback header parameters:

  - `x-sinch-webhook-signature` (string)

  - `x-sinch-webhook-signature-algorithm` (string)

  - `x-sinch-webhook-signature-nonce` (string)

  - `x-sinch-webhook-signature-timestamp` (string)

  - `x-sinch-webhook-signature` (string)

  - `x-sinch-webhook-signature-algorithm` (string)

  - `x-sinch-webhook-signature-nonce` (string)

  - `x-sinch-webhook-signature-timestamp` (string)

  - `x-sinch-webhook-signature` (string)

  - `x-sinch-webhook-signature-algorithm` (string)

  - `x-sinch-webhook-signature-nonce` (string)

  - `x-sinch-webhook-signature-timestamp` (string)

  - `x-sinch-webhook-signature` (string)

  - `x-sinch-webhook-signature-algorithm` (string)

  - `x-sinch-webhook-signature-nonce` (string)

  - `x-sinch-webhook-signature-timestamp` (string)

  - `x-sinch-webhook-signature` (string)

  - `x-sinch-webhook-signature-algorithm` (string)

  - `x-sinch-webhook-signature-nonce` (string)

  - `x-sinch-webhook-signature-timestamp` (string)

  - `x-sinch-webhook-signature` (string)

  - `x-sinch-webhook-signature-algorithm` (string)

  - `x-sinch-webhook-signature-nonce` (string)

  - `x-sinch-webhook-signature-timestamp` (string)

  - `x-sinch-webhook-signature` (string)

  - `x-sinch-webhook-signature-algorithm` (string)

  - `x-sinch-webhook-signature-nonce` (string)

  - `x-sinch-webhook-signature-timestamp` (string)

  - `x-sinch-webhook-signature` (string)

  - `x-sinch-webhook-signature-algorithm` (string)

  - `x-sinch-webhook-signature-nonce` (string)

  - `x-sinch-webhook-signature-timestamp` (string)

## Callback request fields (application/json):

  - `type` (string, required)
    Type of event, in this case `WHATSAPP_TEMPLATE_COMMENT_ADDED`.

  - `payload` (object, required)
    Template at time of callback.

  - `payload.whatsappId` (string)

  - `payload.state` (string)
    Enum: "APPROVED", "DISABLED", "PAUSED", "REJECTED"

  - `payload.name` (string, required)

  - `payload.language` (string, required)
    Enum: "AF", "AR", "AZ", "BG", "BN", "CA", "CS", "DA", "DE", "EL", "EN", "EN_GB", "EN_US", "ES", "ES_AR", "ES_ES", "ES_MX", "ES_UY", "ET", "FA", "FI", "FIL", "FR", "GA", "GU", "HA", "HE", "HI", "HR", "HU", "ID", "IT", "JA", "KA", "KK", "KN", "KO", "KY_KG", "LO", "LT", "LV", "MK", "ML", "MR", "MS", "NB", "NL", "PA", "PL", "PT_BR", "PT_PT", "RO", "RU", "RW_RW", "SK", "SL", "SQ", "SR", "SV", "SW", "TA", "TE", "TH", "TR", "UK", "UR", "UZ", "VI", "ZH_CN", "ZH_HK", "ZH_TW", "ZU", "UNRECOGNIZED"

  - `payload.category` (string, required)
    Enum: "AUTHENTICATION", "MARKETING", "UTILITY", "UNRECOGNIZED"

  - `payload.rejectionCode` (string)
    Rejection code if template is in status 'REJECTED'
    Enum: "ABUSIVE_CONTENT", "INCORRECT_CATEGORY", "INVALID_FORMAT", "NONE", "SCAM", "UNRECOGNIZED"

  - `payload.qualityScore` (string)
    Quality score of the HSM.
    Enum: "QUALITY_SCORE_GREEN", "QUALITY_SCORE_RED", "QUALITY_SCORE_YELLOW", "QUALITY_SCORE_UNKNOWN", "UNRECOGNIZED"

  - `payload.changes` (object)
    Object containing changes on the template. If empty the changes has been approved and applied to the template.

  - `payload.changes.status` (string, required)
    The current status of the changes.
`DRAFT`: The changes has not been submitted.
`IN_PROGRESS`: The changes has been submitted.
    Enum: "DRAFT", "IN_PROGRESS", "REJECTED"

  - `payload.changes.allowCategoryChange` (boolean)
    True if Meta should be allowed to change the category if they determine the category is wrong. If false, Meta might reject the template if they determine the category is wrong based on the template contents. Defaults to false.

  - `payload.changes.details` (any)
    Template details and information.

  - `payload.changes.details.components` (array, required)
    List of components in the template. Must contain a BODY component and can only have one entry of each type.

  - `payload.changes.details.components.type` (string, required)
    Enum: "HEADER"

  - `payload.changes.details.components.format` (string, required)
    Enum: "TEXT"

  - `payload.changes.details.components.text` (string)
    Text to show in the header

  - `payload.changes.details.components.example` (string)
    Example for the header variable.

  - `payload.changes.details.components.format` (string, required)
    Enum: "DOCUMENT", "IMAGE", "VIDEO"

  - `payload.changes.details.components.example` (object)

  - `payload.changes.details.components.example.url` (string)

  - `payload.changes.details.components.type` (string, required)
    Enum: "BODY"

  - `payload.changes.details.components.text` (string)

  - `payload.changes.details.components.examples` (array)
    Examples for the body variables.

  - `payload.changes.details.components.addSecurityRecommendation` (boolean)

  - `payload.changes.details.components.type` (string, required)
    Enum: "FOOTER"

  - `payload.changes.details.components.codeExpirationMinutes` (number)

  - `payload.changes.details.components.type` (string, required)
    Enum: "BUTTONS"

  - `payload.changes.details.components.buttons` (array, required)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "PHONE_NUMBER"

  - `payload.changes.details.components.buttons.text` (string)

  - `payload.changes.details.components.buttons.phoneNumber` (string)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "URL"

  - `payload.changes.details.components.buttons.url` (string)

  - `payload.changes.details.components.buttons.example` (string)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "QUICK_REPLY"

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "OTP"

  - `payload.changes.details.components.buttons.otpType` (string, required)
    Enum: "COPY_CODE", "ONE_TAP", "ZERO_TAP", "UNRECOGNIZED"

  - `payload.changes.details.components.buttons.autofillText` (string)

  - `payload.changes.details.components.buttons.packageName` (string)

  - `payload.changes.details.components.buttons.signatureHash` (string)

  - `payload.changes.details.components.buttons.supportedApps` (array)

  - `payload.changes.details.components.buttons.zeroTapTermsAccepted` (boolean)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "FLOW"

  - `payload.changes.details.components.buttons.text` (string)
    Text to display on the Flow button

  - `payload.changes.details.components.buttons.flowId` (string)
    Flow ID to launch when button is pressed

  - `payload.changes.details.components.buttons.flowAction` (string)
    Flow action
    Enum: "DATA_EXCHANGE", "NAVIGATE", "UNKNOWN", "UNRECOGNIZED"

  - `payload.changes.details.components.buttons.navigateScreen` (string)
    The unique ID of the first screen. Required for Navigate action.

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "REQUEST_CONTACT_INFO"

  - `payload.changes.details.components.format` (string, required)
    Enum: "LOCATION"

  - `payload.changes.details.components.type` (string, required)
    Enum: "CAROUSEL"

  - `payload.changes.details.components.cards` (array, required)
    Media cards.

  - `payload.changes.details.components.cards.components` (array, required)
    List of components in the cards.

  - `payload.changes.details.messageSendTtlSeconds` (number)
    Template message delivery retry time-to-live (TTL) override value. If unable to deliver the template message, it will be periodically retry for this period of time. If it is unable to deliver the message for this period of time, the message will be dropped.
|  | AUTHENTICATION | MARKETING | UTILITY |
|  --- | --- | --- | --- |
| Default | 10 minutes | 30 days | 30 days |
| Customizable range | 10 seconds to 15 minutes | 12 hours to 30 days | 30 seconds to 12 hours |
| Valid values | 10 to 900 seconds | 43200 to 2592000 seconds | 30 to 43200 seconds |

Please note that authentication templates created before October 23, 2024, have a default TTL of 30 days.

  - `payload.changes.details.components` (array)
    The current status of the changes.
`DRAFT`: The changes has not been submitted.
`IN_PROGRESS`: The changes has been submitted.

  - `payload.details` (object)
    Template details and information.

  - `payload.analytics` (array, required)
    Template analytics.

  - `payload.analytics.sent` (number, required)
    Number of times template has been sent.

  - `payload.analytics.delivered` (number, required)
    Number of times template has been delivered.

  - `payload.analytics.read` (number, required)
    Number of times template has been read.

  - `payload.analytics.start` (string, required)
    The UTC Date Time in ISO 8601 for start of date range.

  - `payload.analytics.end` (string, required)
    The UTC Date Time in ISO 8601 for end of date range.

  - `payload.analytics.buttons` (array, required)
    Number of times buttons in the template has been clicked.

  - `payload.analytics.buttons.type` (string, required)
    Type of button.
    Enum: "QUICK_REPLY", "UNIQUE_URL", "URL", "UNRECOGNIZED"

  - `payload.analytics.buttons.content` (string, required)
    Content of the button.

  - `payload.analytics.buttons.clicks` (number, required)
    Number of times the button has been clicked.

  - `payload.isMetaGenerated` (boolean, required)
    Indicates if the template was auto-generated by Meta.

  - `comment` (string)
    Comment for template.

  - `type` (string, required)
    Type of event, in this case `WHATSAPP_TEMPLATE_APPROVED`.

  - `payload` (object, required)
    Template at time of callback.

  - `payload.whatsappId` (string)

  - `payload.state` (string)
    Enum: "APPROVED", "DISABLED", "PAUSED", "REJECTED"

  - `payload.name` (string, required)

  - `payload.language` (string, required)
    Enum: "AF", "AR", "AZ", "BG", "BN", "CA", "CS", "DA", "DE", "EL", "EN", "EN_GB", "EN_US", "ES", "ES_AR", "ES_ES", "ES_MX", "ES_UY", "ET", "FA", "FI", "FIL", "FR", "GA", "GU", "HA", "HE", "HI", "HR", "HU", "ID", "IT", "JA", "KA", "KK", "KN", "KO", "KY_KG", "LO", "LT", "LV", "MK", "ML", "MR", "MS", "NB", "NL", "PA", "PL", "PT_BR", "PT_PT", "RO", "RU", "RW_RW", "SK", "SL", "SQ", "SR", "SV", "SW", "TA", "TE", "TH", "TR", "UK", "UR", "UZ", "VI", "ZH_CN", "ZH_HK", "ZH_TW", "ZU", "UNRECOGNIZED"

  - `payload.category` (string, required)
    Enum: "AUTHENTICATION", "MARKETING", "UTILITY", "UNRECOGNIZED"

  - `payload.rejectionCode` (string)
    Rejection code if template is in status 'REJECTED'
    Enum: "ABUSIVE_CONTENT", "INCORRECT_CATEGORY", "INVALID_FORMAT", "NONE", "SCAM", "UNRECOGNIZED"

  - `payload.qualityScore` (string)
    Quality score of the HSM.
    Enum: "QUALITY_SCORE_GREEN", "QUALITY_SCORE_RED", "QUALITY_SCORE_YELLOW", "QUALITY_SCORE_UNKNOWN", "UNRECOGNIZED"

  - `payload.changes` (object)
    Object containing changes on the template. If empty the changes has been approved and applied to the template.

  - `payload.changes.status` (string, required)
    The current status of the changes.
`DRAFT`: The changes has not been submitted.
`IN_PROGRESS`: The changes has been submitted.
    Enum: "DRAFT", "IN_PROGRESS", "REJECTED"

  - `payload.changes.allowCategoryChange` (boolean)
    True if Meta should be allowed to change the category if they determine the category is wrong. If false, Meta might reject the template if they determine the category is wrong based on the template contents. Defaults to false.

  - `payload.changes.details` (any)
    Template details and information.

  - `payload.changes.details.components` (array, required)
    List of components in the template. Must contain a BODY component and can only have one entry of each type.

  - `payload.changes.details.components.type` (string, required)
    Enum: "HEADER"

  - `payload.changes.details.components.format` (string, required)
    Enum: "TEXT"

  - `payload.changes.details.components.text` (string)
    Text to show in the header

  - `payload.changes.details.components.example` (string)
    Example for the header variable.

  - `payload.changes.details.components.format` (string, required)
    Enum: "DOCUMENT", "IMAGE", "VIDEO"

  - `payload.changes.details.components.example` (object)

  - `payload.changes.details.components.example.url` (string)

  - `payload.changes.details.components.type` (string, required)
    Enum: "BODY"

  - `payload.changes.details.components.text` (string)

  - `payload.changes.details.components.examples` (array)
    Examples for the body variables.

  - `payload.changes.details.components.addSecurityRecommendation` (boolean)

  - `payload.changes.details.components.type` (string, required)
    Enum: "FOOTER"

  - `payload.changes.details.components.codeExpirationMinutes` (number)

  - `payload.changes.details.components.type` (string, required)
    Enum: "BUTTONS"

  - `payload.changes.details.components.buttons` (array, required)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "PHONE_NUMBER"

  - `payload.changes.details.components.buttons.text` (string)

  - `payload.changes.details.components.buttons.phoneNumber` (string)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "URL"

  - `payload.changes.details.components.buttons.url` (string)

  - `payload.changes.details.components.buttons.example` (string)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "QUICK_REPLY"

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "OTP"

  - `payload.changes.details.components.buttons.otpType` (string, required)
    Enum: "COPY_CODE", "ONE_TAP", "ZERO_TAP", "UNRECOGNIZED"

  - `payload.changes.details.components.buttons.autofillText` (string)

  - `payload.changes.details.components.buttons.packageName` (string)

  - `payload.changes.details.components.buttons.signatureHash` (string)

  - `payload.changes.details.components.buttons.supportedApps` (array)

  - `payload.changes.details.components.buttons.zeroTapTermsAccepted` (boolean)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "FLOW"

  - `payload.changes.details.components.buttons.text` (string)
    Text to display on the Flow button

  - `payload.changes.details.components.buttons.flowId` (string)
    Flow ID to launch when button is pressed

  - `payload.changes.details.components.buttons.flowAction` (string)
    Flow action
    Enum: "DATA_EXCHANGE", "NAVIGATE", "UNKNOWN", "UNRECOGNIZED"

  - `payload.changes.details.components.buttons.navigateScreen` (string)
    The unique ID of the first screen. Required for Navigate action.

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "REQUEST_CONTACT_INFO"

  - `payload.changes.details.components.format` (string, required)
    Enum: "LOCATION"

  - `payload.changes.details.components.type` (string, required)
    Enum: "CAROUSEL"

  - `payload.changes.details.components.cards` (array, required)
    Media cards.

  - `payload.changes.details.components.cards.components` (array, required)
    List of components in the cards.

  - `payload.changes.details.messageSendTtlSeconds` (number)
    Template message delivery retry time-to-live (TTL) override value. If unable to deliver the template message, it will be periodically retry for this period of time. If it is unable to deliver the message for this period of time, the message will be dropped.
|  | AUTHENTICATION | MARKETING | UTILITY |
|  --- | --- | --- | --- |
| Default | 10 minutes | 30 days | 30 days |
| Customizable range | 10 seconds to 15 minutes | 12 hours to 30 days | 30 seconds to 12 hours |
| Valid values | 10 to 900 seconds | 43200 to 2592000 seconds | 30 to 43200 seconds |

Please note that authentication templates created before October 23, 2024, have a default TTL of 30 days.

  - `payload.changes.details.components` (array)
    The current status of the changes.
`DRAFT`: The changes has not been submitted.
`IN_PROGRESS`: The changes has been submitted.

  - `payload.details` (object)
    Template details and information.

  - `payload.analytics` (array, required)
    Template analytics.

  - `payload.analytics.sent` (number, required)
    Number of times template has been sent.

  - `payload.analytics.delivered` (number, required)
    Number of times template has been delivered.

  - `payload.analytics.read` (number, required)
    Number of times template has been read.

  - `payload.analytics.start` (string, required)
    The UTC Date Time in ISO 8601 for start of date range.

  - `payload.analytics.end` (string, required)
    The UTC Date Time in ISO 8601 for end of date range.

  - `payload.analytics.buttons` (array, required)
    Number of times buttons in the template has been clicked.

  - `payload.analytics.buttons.type` (string, required)
    Type of button.
    Enum: "QUICK_REPLY", "UNIQUE_URL", "URL", "UNRECOGNIZED"

  - `payload.analytics.buttons.content` (string, required)
    Content of the button.

  - `payload.analytics.buttons.clicks` (number, required)
    Number of times the button has been clicked.

  - `payload.isMetaGenerated` (boolean, required)
    Indicates if the template was auto-generated by Meta.

  - `comment` (string)
    Comment for template.

  - `type` (string, required)
    Type of event, in this case `WHATSAPP_TEMPLATE_REJECTED`.

  - `payload` (object, required)
    Template at time of callback.

  - `payload.whatsappId` (string)

  - `payload.state` (string)
    Enum: "APPROVED", "DISABLED", "PAUSED", "REJECTED"

  - `payload.name` (string, required)

  - `payload.language` (string, required)
    Enum: "AF", "AR", "AZ", "BG", "BN", "CA", "CS", "DA", "DE", "EL", "EN", "EN_GB", "EN_US", "ES", "ES_AR", "ES_ES", "ES_MX", "ES_UY", "ET", "FA", "FI", "FIL", "FR", "GA", "GU", "HA", "HE", "HI", "HR", "HU", "ID", "IT", "JA", "KA", "KK", "KN", "KO", "KY_KG", "LO", "LT", "LV", "MK", "ML", "MR", "MS", "NB", "NL", "PA", "PL", "PT_BR", "PT_PT", "RO", "RU", "RW_RW", "SK", "SL", "SQ", "SR", "SV", "SW", "TA", "TE", "TH", "TR", "UK", "UR", "UZ", "VI", "ZH_CN", "ZH_HK", "ZH_TW", "ZU", "UNRECOGNIZED"

  - `payload.category` (string, required)
    Enum: "AUTHENTICATION", "MARKETING", "UTILITY", "UNRECOGNIZED"

  - `payload.rejectionCode` (string)
    Rejection code if template is in status 'REJECTED'
    Enum: "ABUSIVE_CONTENT", "INCORRECT_CATEGORY", "INVALID_FORMAT", "NONE", "SCAM", "UNRECOGNIZED"

  - `payload.qualityScore` (string)
    Quality score of the HSM.
    Enum: "QUALITY_SCORE_GREEN", "QUALITY_SCORE_RED", "QUALITY_SCORE_YELLOW", "QUALITY_SCORE_UNKNOWN", "UNRECOGNIZED"

  - `payload.changes` (object)
    Object containing changes on the template. If empty the changes has been approved and applied to the template.

  - `payload.changes.status` (string, required)
    The current status of the changes.
`DRAFT`: The changes has not been submitted.
`IN_PROGRESS`: The changes has been submitted.
    Enum: "DRAFT", "IN_PROGRESS", "REJECTED"

  - `payload.changes.allowCategoryChange` (boolean)
    True if Meta should be allowed to change the category if they determine the category is wrong. If false, Meta might reject the template if they determine the category is wrong based on the template contents. Defaults to false.

  - `payload.changes.details` (any)
    Template details and information.

  - `payload.changes.details.components` (array, required)
    List of components in the template. Must contain a BODY component and can only have one entry of each type.

  - `payload.changes.details.components.type` (string, required)
    Enum: "HEADER"

  - `payload.changes.details.components.format` (string, required)
    Enum: "TEXT"

  - `payload.changes.details.components.text` (string)
    Text to show in the header

  - `payload.changes.details.components.example` (string)
    Example for the header variable.

  - `payload.changes.details.components.format` (string, required)
    Enum: "DOCUMENT", "IMAGE", "VIDEO"

  - `payload.changes.details.components.example` (object)

  - `payload.changes.details.components.example.url` (string)

  - `payload.changes.details.components.type` (string, required)
    Enum: "BODY"

  - `payload.changes.details.components.text` (string)

  - `payload.changes.details.components.examples` (array)
    Examples for the body variables.

  - `payload.changes.details.components.addSecurityRecommendation` (boolean)

  - `payload.changes.details.components.type` (string, required)
    Enum: "FOOTER"

  - `payload.changes.details.components.codeExpirationMinutes` (number)

  - `payload.changes.details.components.type` (string, required)
    Enum: "BUTTONS"

  - `payload.changes.details.components.buttons` (array, required)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "PHONE_NUMBER"

  - `payload.changes.details.components.buttons.text` (string)

  - `payload.changes.details.components.buttons.phoneNumber` (string)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "URL"

  - `payload.changes.details.components.buttons.url` (string)

  - `payload.changes.details.components.buttons.example` (string)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "QUICK_REPLY"

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "OTP"

  - `payload.changes.details.components.buttons.otpType` (string, required)
    Enum: "COPY_CODE", "ONE_TAP", "ZERO_TAP", "UNRECOGNIZED"

  - `payload.changes.details.components.buttons.autofillText` (string)

  - `payload.changes.details.components.buttons.packageName` (string)

  - `payload.changes.details.components.buttons.signatureHash` (string)

  - `payload.changes.details.components.buttons.supportedApps` (array)

  - `payload.changes.details.components.buttons.zeroTapTermsAccepted` (boolean)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "FLOW"

  - `payload.changes.details.components.buttons.text` (string)
    Text to display on the Flow button

  - `payload.changes.details.components.buttons.flowId` (string)
    Flow ID to launch when button is pressed

  - `payload.changes.details.components.buttons.flowAction` (string)
    Flow action
    Enum: "DATA_EXCHANGE", "NAVIGATE", "UNKNOWN", "UNRECOGNIZED"

  - `payload.changes.details.components.buttons.navigateScreen` (string)
    The unique ID of the first screen. Required for Navigate action.

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "REQUEST_CONTACT_INFO"

  - `payload.changes.details.components.format` (string, required)
    Enum: "LOCATION"

  - `payload.changes.details.components.type` (string, required)
    Enum: "CAROUSEL"

  - `payload.changes.details.components.cards` (array, required)
    Media cards.

  - `payload.changes.details.components.cards.components` (array, required)
    List of components in the cards.

  - `payload.changes.details.messageSendTtlSeconds` (number)
    Template message delivery retry time-to-live (TTL) override value. If unable to deliver the template message, it will be periodically retry for this period of time. If it is unable to deliver the message for this period of time, the message will be dropped.
|  | AUTHENTICATION | MARKETING | UTILITY |
|  --- | --- | --- | --- |
| Default | 10 minutes | 30 days | 30 days |
| Customizable range | 10 seconds to 15 minutes | 12 hours to 30 days | 30 seconds to 12 hours |
| Valid values | 10 to 900 seconds | 43200 to 2592000 seconds | 30 to 43200 seconds |

Please note that authentication templates created before October 23, 2024, have a default TTL of 30 days.

  - `payload.changes.details.components` (array)
    The current status of the changes.
`DRAFT`: The changes has not been submitted.
`IN_PROGRESS`: The changes has been submitted.

  - `payload.details` (object)
    Template details and information.

  - `payload.analytics` (array, required)
    Template analytics.

  - `payload.analytics.sent` (number, required)
    Number of times template has been sent.

  - `payload.analytics.delivered` (number, required)
    Number of times template has been delivered.

  - `payload.analytics.read` (number, required)
    Number of times template has been read.

  - `payload.analytics.start` (string, required)
    The UTC Date Time in ISO 8601 for start of date range.

  - `payload.analytics.end` (string, required)
    The UTC Date Time in ISO 8601 for end of date range.

  - `payload.analytics.buttons` (array, required)
    Number of times buttons in the template has been clicked.

  - `payload.analytics.buttons.type` (string, required)
    Type of button.
    Enum: "QUICK_REPLY", "UNIQUE_URL", "URL", "UNRECOGNIZED"

  - `payload.analytics.buttons.content` (string, required)
    Content of the button.

  - `payload.analytics.buttons.clicks` (number, required)
    Number of times the button has been clicked.

  - `payload.isMetaGenerated` (boolean, required)
    Indicates if the template was auto-generated by Meta.

  - `comment` (string)
    Comment for template.

  - `type` (string, required)
    Type of event, in this case `WHATSAPP_TEMPLATE_STATUS_UPDATED`.

  - `payload` (object, required)
    Template at time of callback.

  - `payload.whatsappId` (string)

  - `payload.state` (string)
    Enum: "APPROVED", "DISABLED", "PAUSED", "REJECTED"

  - `payload.name` (string, required)

  - `payload.language` (string, required)
    Enum: "AF", "AR", "AZ", "BG", "BN", "CA", "CS", "DA", "DE", "EL", "EN", "EN_GB", "EN_US", "ES", "ES_AR", "ES_ES", "ES_MX", "ES_UY", "ET", "FA", "FI", "FIL", "FR", "GA", "GU", "HA", "HE", "HI", "HR", "HU", "ID", "IT", "JA", "KA", "KK", "KN", "KO", "KY_KG", "LO", "LT", "LV", "MK", "ML", "MR", "MS", "NB", "NL", "PA", "PL", "PT_BR", "PT_PT", "RO", "RU", "RW_RW", "SK", "SL", "SQ", "SR", "SV", "SW", "TA", "TE", "TH", "TR", "UK", "UR", "UZ", "VI", "ZH_CN", "ZH_HK", "ZH_TW", "ZU", "UNRECOGNIZED"

  - `payload.category` (string, required)
    Enum: "AUTHENTICATION", "MARKETING", "UTILITY", "UNRECOGNIZED"

  - `payload.rejectionCode` (string)
    Rejection code if template is in status 'REJECTED'
    Enum: "ABUSIVE_CONTENT", "INCORRECT_CATEGORY", "INVALID_FORMAT", "NONE", "SCAM", "UNRECOGNIZED"

  - `payload.qualityScore` (string)
    Quality score of the HSM.
    Enum: "QUALITY_SCORE_GREEN", "QUALITY_SCORE_RED", "QUALITY_SCORE_YELLOW", "QUALITY_SCORE_UNKNOWN", "UNRECOGNIZED"

  - `payload.changes` (object)
    Object containing changes on the template. If empty the changes has been approved and applied to the template.

  - `payload.changes.status` (string, required)
    The current status of the changes.
`DRAFT`: The changes has not been submitted.
`IN_PROGRESS`: The changes has been submitted.
    Enum: "DRAFT", "IN_PROGRESS", "REJECTED"

  - `payload.changes.allowCategoryChange` (boolean)
    True if Meta should be allowed to change the category if they determine the category is wrong. If false, Meta might reject the template if they determine the category is wrong based on the template contents. Defaults to false.

  - `payload.changes.details` (any)
    Template details and information.

  - `payload.changes.details.components` (array, required)
    List of components in the template. Must contain a BODY component and can only have one entry of each type.

  - `payload.changes.details.components.type` (string, required)
    Enum: "HEADER"

  - `payload.changes.details.components.format` (string, required)
    Enum: "TEXT"

  - `payload.changes.details.components.text` (string)
    Text to show in the header

  - `payload.changes.details.components.example` (string)
    Example for the header variable.

  - `payload.changes.details.components.format` (string, required)
    Enum: "DOCUMENT", "IMAGE", "VIDEO"

  - `payload.changes.details.components.example` (object)

  - `payload.changes.details.components.example.url` (string)

  - `payload.changes.details.components.type` (string, required)
    Enum: "BODY"

  - `payload.changes.details.components.text` (string)

  - `payload.changes.details.components.examples` (array)
    Examples for the body variables.

  - `payload.changes.details.components.addSecurityRecommendation` (boolean)

  - `payload.changes.details.components.type` (string, required)
    Enum: "FOOTER"

  - `payload.changes.details.components.codeExpirationMinutes` (number)

  - `payload.changes.details.components.type` (string, required)
    Enum: "BUTTONS"

  - `payload.changes.details.components.buttons` (array, required)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "PHONE_NUMBER"

  - `payload.changes.details.components.buttons.text` (string)

  - `payload.changes.details.components.buttons.phoneNumber` (string)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "URL"

  - `payload.changes.details.components.buttons.url` (string)

  - `payload.changes.details.components.buttons.example` (string)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "QUICK_REPLY"

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "OTP"

  - `payload.changes.details.components.buttons.otpType` (string, required)
    Enum: "COPY_CODE", "ONE_TAP", "ZERO_TAP", "UNRECOGNIZED"

  - `payload.changes.details.components.buttons.autofillText` (string)

  - `payload.changes.details.components.buttons.packageName` (string)

  - `payload.changes.details.components.buttons.signatureHash` (string)

  - `payload.changes.details.components.buttons.supportedApps` (array)

  - `payload.changes.details.components.buttons.zeroTapTermsAccepted` (boolean)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "FLOW"

  - `payload.changes.details.components.buttons.text` (string)
    Text to display on the Flow button

  - `payload.changes.details.components.buttons.flowId` (string)
    Flow ID to launch when button is pressed

  - `payload.changes.details.components.buttons.flowAction` (string)
    Flow action
    Enum: "DATA_EXCHANGE", "NAVIGATE", "UNKNOWN", "UNRECOGNIZED"

  - `payload.changes.details.components.buttons.navigateScreen` (string)
    The unique ID of the first screen. Required for Navigate action.

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "REQUEST_CONTACT_INFO"

  - `payload.changes.details.components.format` (string, required)
    Enum: "LOCATION"

  - `payload.changes.details.components.type` (string, required)
    Enum: "CAROUSEL"

  - `payload.changes.details.components.cards` (array, required)
    Media cards.

  - `payload.changes.details.components.cards.components` (array, required)
    List of components in the cards.

  - `payload.changes.details.messageSendTtlSeconds` (number)
    Template message delivery retry time-to-live (TTL) override value. If unable to deliver the template message, it will be periodically retry for this period of time. If it is unable to deliver the message for this period of time, the message will be dropped.
|  | AUTHENTICATION | MARKETING | UTILITY |
|  --- | --- | --- | --- |
| Default | 10 minutes | 30 days | 30 days |
| Customizable range | 10 seconds to 15 minutes | 12 hours to 30 days | 30 seconds to 12 hours |
| Valid values | 10 to 900 seconds | 43200 to 2592000 seconds | 30 to 43200 seconds |

Please note that authentication templates created before October 23, 2024, have a default TTL of 30 days.

  - `payload.changes.details.components` (array)
    The current status of the changes.
`DRAFT`: The changes has not been submitted.
`IN_PROGRESS`: The changes has been submitted.

  - `payload.details` (object)
    Template details and information.

  - `payload.analytics` (array, required)
    Template analytics.

  - `payload.analytics.sent` (number, required)
    Number of times template has been sent.

  - `payload.analytics.delivered` (number, required)
    Number of times template has been delivered.

  - `payload.analytics.read` (number, required)
    Number of times template has been read.

  - `payload.analytics.start` (string, required)
    The UTC Date Time in ISO 8601 for start of date range.

  - `payload.analytics.end` (string, required)
    The UTC Date Time in ISO 8601 for end of date range.

  - `payload.analytics.buttons` (array, required)
    Number of times buttons in the template has been clicked.

  - `payload.analytics.buttons.type` (string, required)
    Type of button.
    Enum: "QUICK_REPLY", "UNIQUE_URL", "URL", "UNRECOGNIZED"

  - `payload.analytics.buttons.content` (string, required)
    Content of the button.

  - `payload.analytics.buttons.clicks` (number, required)
    Number of times the button has been clicked.

  - `payload.isMetaGenerated` (boolean, required)
    Indicates if the template was auto-generated by Meta.

  - `newState` (string, required)
    New state for template.
    Enum: "ARCHIVED", "DISABLED", "FLAGGED", "PAUSED", "REINSTATED", "UNPAUSED"

  - `comment` (string)
    Comment for template.

  - `type` (string, required)
    Type of event, in this case WHATSAPP_TEMPLATE_DELETED.

  - `type` (string, required)
    Type of event, in this case `WHATSAPP_TEMPLATE_QUALITY_SCORE_UPDATED`.

  - `payload` (object, required)
    Template at time of callback.

  - `payload.whatsappId` (string)

  - `payload.state` (string)
    Enum: "APPROVED", "DISABLED", "PAUSED", "REJECTED"

  - `payload.name` (string, required)

  - `payload.language` (string, required)
    Enum: "AF", "AR", "AZ", "BG", "BN", "CA", "CS", "DA", "DE", "EL", "EN", "EN_GB", "EN_US", "ES", "ES_AR", "ES_ES", "ES_MX", "ES_UY", "ET", "FA", "FI", "FIL", "FR", "GA", "GU", "HA", "HE", "HI", "HR", "HU", "ID", "IT", "JA", "KA", "KK", "KN", "KO", "KY_KG", "LO", "LT", "LV", "MK", "ML", "MR", "MS", "NB", "NL", "PA", "PL", "PT_BR", "PT_PT", "RO", "RU", "RW_RW", "SK", "SL", "SQ", "SR", "SV", "SW", "TA", "TE", "TH", "TR", "UK", "UR", "UZ", "VI", "ZH_CN", "ZH_HK", "ZH_TW", "ZU", "UNRECOGNIZED"

  - `payload.category` (string, required)
    Enum: "AUTHENTICATION", "MARKETING", "UTILITY", "UNRECOGNIZED"

  - `payload.rejectionCode` (string)
    Rejection code if template is in status 'REJECTED'
    Enum: "ABUSIVE_CONTENT", "INCORRECT_CATEGORY", "INVALID_FORMAT", "NONE", "SCAM", "UNRECOGNIZED"

  - `payload.qualityScore` (string)
    Quality score of the HSM.
    Enum: "QUALITY_SCORE_GREEN", "QUALITY_SCORE_RED", "QUALITY_SCORE_YELLOW", "QUALITY_SCORE_UNKNOWN", "UNRECOGNIZED"

  - `payload.changes` (object)
    Object containing changes on the template. If empty the changes has been approved and applied to the template.

  - `payload.changes.status` (string, required)
    The current status of the changes.
`DRAFT`: The changes has not been submitted.
`IN_PROGRESS`: The changes has been submitted.
    Enum: "DRAFT", "IN_PROGRESS", "REJECTED"

  - `payload.changes.allowCategoryChange` (boolean)
    True if Meta should be allowed to change the category if they determine the category is wrong. If false, Meta might reject the template if they determine the category is wrong based on the template contents. Defaults to false.

  - `payload.changes.details` (any)
    Template details and information.

  - `payload.changes.details.components` (array, required)
    List of components in the template. Must contain a BODY component and can only have one entry of each type.

  - `payload.changes.details.components.type` (string, required)
    Enum: "HEADER"

  - `payload.changes.details.components.format` (string, required)
    Enum: "TEXT"

  - `payload.changes.details.components.text` (string)
    Text to show in the header

  - `payload.changes.details.components.example` (string)
    Example for the header variable.

  - `payload.changes.details.components.format` (string, required)
    Enum: "DOCUMENT", "IMAGE", "VIDEO"

  - `payload.changes.details.components.example` (object)

  - `payload.changes.details.components.example.url` (string)

  - `payload.changes.details.components.type` (string, required)
    Enum: "BODY"

  - `payload.changes.details.components.text` (string)

  - `payload.changes.details.components.examples` (array)
    Examples for the body variables.

  - `payload.changes.details.components.addSecurityRecommendation` (boolean)

  - `payload.changes.details.components.type` (string, required)
    Enum: "FOOTER"

  - `payload.changes.details.components.codeExpirationMinutes` (number)

  - `payload.changes.details.components.type` (string, required)
    Enum: "BUTTONS"

  - `payload.changes.details.components.buttons` (array, required)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "PHONE_NUMBER"

  - `payload.changes.details.components.buttons.text` (string)

  - `payload.changes.details.components.buttons.phoneNumber` (string)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "URL"

  - `payload.changes.details.components.buttons.url` (string)

  - `payload.changes.details.components.buttons.example` (string)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "QUICK_REPLY"

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "OTP"

  - `payload.changes.details.components.buttons.otpType` (string, required)
    Enum: "COPY_CODE", "ONE_TAP", "ZERO_TAP", "UNRECOGNIZED"

  - `payload.changes.details.components.buttons.autofillText` (string)

  - `payload.changes.details.components.buttons.packageName` (string)

  - `payload.changes.details.components.buttons.signatureHash` (string)

  - `payload.changes.details.components.buttons.supportedApps` (array)

  - `payload.changes.details.components.buttons.zeroTapTermsAccepted` (boolean)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "FLOW"

  - `payload.changes.details.components.buttons.text` (string)
    Text to display on the Flow button

  - `payload.changes.details.components.buttons.flowId` (string)
    Flow ID to launch when button is pressed

  - `payload.changes.details.components.buttons.flowAction` (string)
    Flow action
    Enum: "DATA_EXCHANGE", "NAVIGATE", "UNKNOWN", "UNRECOGNIZED"

  - `payload.changes.details.components.buttons.navigateScreen` (string)
    The unique ID of the first screen. Required for Navigate action.

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "REQUEST_CONTACT_INFO"

  - `payload.changes.details.components.format` (string, required)
    Enum: "LOCATION"

  - `payload.changes.details.components.type` (string, required)
    Enum: "CAROUSEL"

  - `payload.changes.details.components.cards` (array, required)
    Media cards.

  - `payload.changes.details.components.cards.components` (array, required)
    List of components in the cards.

  - `payload.changes.details.messageSendTtlSeconds` (number)
    Template message delivery retry time-to-live (TTL) override value. If unable to deliver the template message, it will be periodically retry for this period of time. If it is unable to deliver the message for this period of time, the message will be dropped.
|  | AUTHENTICATION | MARKETING | UTILITY |
|  --- | --- | --- | --- |
| Default | 10 minutes | 30 days | 30 days |
| Customizable range | 10 seconds to 15 minutes | 12 hours to 30 days | 30 seconds to 12 hours |
| Valid values | 10 to 900 seconds | 43200 to 2592000 seconds | 30 to 43200 seconds |

Please note that authentication templates created before October 23, 2024, have a default TTL of 30 days.

  - `payload.changes.details.components` (array)
    The current status of the changes.
`DRAFT`: The changes has not been submitted.
`IN_PROGRESS`: The changes has been submitted.

  - `payload.details` (object)
    Template details and information.

  - `payload.analytics` (array, required)
    Template analytics.

  - `payload.analytics.sent` (number, required)
    Number of times template has been sent.

  - `payload.analytics.delivered` (number, required)
    Number of times template has been delivered.

  - `payload.analytics.read` (number, required)
    Number of times template has been read.

  - `payload.analytics.start` (string, required)
    The UTC Date Time in ISO 8601 for start of date range.

  - `payload.analytics.end` (string, required)
    The UTC Date Time in ISO 8601 for end of date range.

  - `payload.analytics.buttons` (array, required)
    Number of times buttons in the template has been clicked.

  - `payload.analytics.buttons.type` (string, required)
    Type of button.
    Enum: "QUICK_REPLY", "UNIQUE_URL", "URL", "UNRECOGNIZED"

  - `payload.analytics.buttons.content` (string, required)
    Content of the button.

  - `payload.analytics.buttons.clicks` (number, required)
    Number of times the button has been clicked.

  - `payload.isMetaGenerated` (boolean, required)
    Indicates if the template was auto-generated by Meta.

  - `comment` (string)
    Comment for template.

  - `type` (string, required)
    Type of event, in this case `WHATSAPP_TEMPLATE_CATEGORY_UPDATED`.

  - `payload` (object, required)
    Template at time of callback.

  - `payload.whatsappId` (string)

  - `payload.state` (string)
    Enum: "APPROVED", "DISABLED", "PAUSED", "REJECTED"

  - `payload.name` (string, required)

  - `payload.language` (string, required)
    Enum: "AF", "AR", "AZ", "BG", "BN", "CA", "CS", "DA", "DE", "EL", "EN", "EN_GB", "EN_US", "ES", "ES_AR", "ES_ES", "ES_MX", "ES_UY", "ET", "FA", "FI", "FIL", "FR", "GA", "GU", "HA", "HE", "HI", "HR", "HU", "ID", "IT", "JA", "KA", "KK", "KN", "KO", "KY_KG", "LO", "LT", "LV", "MK", "ML", "MR", "MS", "NB", "NL", "PA", "PL", "PT_BR", "PT_PT", "RO", "RU", "RW_RW", "SK", "SL", "SQ", "SR", "SV", "SW", "TA", "TE", "TH", "TR", "UK", "UR", "UZ", "VI", "ZH_CN", "ZH_HK", "ZH_TW", "ZU", "UNRECOGNIZED"

  - `payload.category` (string, required)
    Enum: "AUTHENTICATION", "MARKETING", "UTILITY", "UNRECOGNIZED"

  - `payload.rejectionCode` (string)
    Rejection code if template is in status 'REJECTED'
    Enum: "ABUSIVE_CONTENT", "INCORRECT_CATEGORY", "INVALID_FORMAT", "NONE", "SCAM", "UNRECOGNIZED"

  - `payload.qualityScore` (string)
    Quality score of the HSM.
    Enum: "QUALITY_SCORE_GREEN", "QUALITY_SCORE_RED", "QUALITY_SCORE_YELLOW", "QUALITY_SCORE_UNKNOWN", "UNRECOGNIZED"

  - `payload.changes` (object)
    Object containing changes on the template. If empty the changes has been approved and applied to the template.

  - `payload.changes.status` (string, required)
    The current status of the changes.
`DRAFT`: The changes has not been submitted.
`IN_PROGRESS`: The changes has been submitted.
    Enum: "DRAFT", "IN_PROGRESS", "REJECTED"

  - `payload.changes.allowCategoryChange` (boolean)
    True if Meta should be allowed to change the category if they determine the category is wrong. If false, Meta might reject the template if they determine the category is wrong based on the template contents. Defaults to false.

  - `payload.changes.details` (any)
    Template details and information.

  - `payload.changes.details.components` (array, required)
    List of components in the template. Must contain a BODY component and can only have one entry of each type.

  - `payload.changes.details.components.type` (string, required)
    Enum: "HEADER"

  - `payload.changes.details.components.format` (string, required)
    Enum: "TEXT"

  - `payload.changes.details.components.text` (string)
    Text to show in the header

  - `payload.changes.details.components.example` (string)
    Example for the header variable.

  - `payload.changes.details.components.format` (string, required)
    Enum: "DOCUMENT", "IMAGE", "VIDEO"

  - `payload.changes.details.components.example` (object)

  - `payload.changes.details.components.example.url` (string)

  - `payload.changes.details.components.type` (string, required)
    Enum: "BODY"

  - `payload.changes.details.components.text` (string)

  - `payload.changes.details.components.examples` (array)
    Examples for the body variables.

  - `payload.changes.details.components.addSecurityRecommendation` (boolean)

  - `payload.changes.details.components.type` (string, required)
    Enum: "FOOTER"

  - `payload.changes.details.components.codeExpirationMinutes` (number)

  - `payload.changes.details.components.type` (string, required)
    Enum: "BUTTONS"

  - `payload.changes.details.components.buttons` (array, required)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "PHONE_NUMBER"

  - `payload.changes.details.components.buttons.text` (string)

  - `payload.changes.details.components.buttons.phoneNumber` (string)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "URL"

  - `payload.changes.details.components.buttons.url` (string)

  - `payload.changes.details.components.buttons.example` (string)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "QUICK_REPLY"

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "OTP"

  - `payload.changes.details.components.buttons.otpType` (string, required)
    Enum: "COPY_CODE", "ONE_TAP", "ZERO_TAP", "UNRECOGNIZED"

  - `payload.changes.details.components.buttons.autofillText` (string)

  - `payload.changes.details.components.buttons.packageName` (string)

  - `payload.changes.details.components.buttons.signatureHash` (string)

  - `payload.changes.details.components.buttons.supportedApps` (array)

  - `payload.changes.details.components.buttons.zeroTapTermsAccepted` (boolean)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "FLOW"

  - `payload.changes.details.components.buttons.text` (string)
    Text to display on the Flow button

  - `payload.changes.details.components.buttons.flowId` (string)
    Flow ID to launch when button is pressed

  - `payload.changes.details.components.buttons.flowAction` (string)
    Flow action
    Enum: "DATA_EXCHANGE", "NAVIGATE", "UNKNOWN", "UNRECOGNIZED"

  - `payload.changes.details.components.buttons.navigateScreen` (string)
    The unique ID of the first screen. Required for Navigate action.

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "REQUEST_CONTACT_INFO"

  - `payload.changes.details.components.format` (string, required)
    Enum: "LOCATION"

  - `payload.changes.details.components.type` (string, required)
    Enum: "CAROUSEL"

  - `payload.changes.details.components.cards` (array, required)
    Media cards.

  - `payload.changes.details.components.cards.components` (array, required)
    List of components in the cards.

  - `payload.changes.details.messageSendTtlSeconds` (number)
    Template message delivery retry time-to-live (TTL) override value. If unable to deliver the template message, it will be periodically retry for this period of time. If it is unable to deliver the message for this period of time, the message will be dropped.
|  | AUTHENTICATION | MARKETING | UTILITY |
|  --- | --- | --- | --- |
| Default | 10 minutes | 30 days | 30 days |
| Customizable range | 10 seconds to 15 minutes | 12 hours to 30 days | 30 seconds to 12 hours |
| Valid values | 10 to 900 seconds | 43200 to 2592000 seconds | 30 to 43200 seconds |

Please note that authentication templates created before October 23, 2024, have a default TTL of 30 days.

  - `payload.changes.details.components` (array)
    The current status of the changes.
`DRAFT`: The changes has not been submitted.
`IN_PROGRESS`: The changes has been submitted.

  - `payload.details` (object)
    Template details and information.

  - `payload.analytics` (array, required)
    Template analytics.

  - `payload.analytics.sent` (number, required)
    Number of times template has been sent.

  - `payload.analytics.delivered` (number, required)
    Number of times template has been delivered.

  - `payload.analytics.read` (number, required)
    Number of times template has been read.

  - `payload.analytics.start` (string, required)
    The UTC Date Time in ISO 8601 for start of date range.

  - `payload.analytics.end` (string, required)
    The UTC Date Time in ISO 8601 for end of date range.

  - `payload.analytics.buttons` (array, required)
    Number of times buttons in the template has been clicked.

  - `payload.analytics.buttons.type` (string, required)
    Type of button.
    Enum: "QUICK_REPLY", "UNIQUE_URL", "URL", "UNRECOGNIZED"

  - `payload.analytics.buttons.content` (string, required)
    Content of the button.

  - `payload.analytics.buttons.clicks` (number, required)
    Number of times the button has been clicked.

  - `payload.isMetaGenerated` (boolean, required)
    Indicates if the template was auto-generated by Meta.

  - `comment` (string)
    Comment for template.

  - `type` (string, required)
    Type of event, in this case `WHATSAPP_TEMPLATE_CATEGORY_FUTURE_UPDATE`.

  - `payload` (object, required)
    Template at time of callback.

  - `payload.whatsappId` (string)

  - `payload.state` (string)
    Enum: "APPROVED", "DISABLED", "PAUSED", "REJECTED"

  - `payload.name` (string, required)

  - `payload.language` (string, required)
    Enum: "AF", "AR", "AZ", "BG", "BN", "CA", "CS", "DA", "DE", "EL", "EN", "EN_GB", "EN_US", "ES", "ES_AR", "ES_ES", "ES_MX", "ES_UY", "ET", "FA", "FI", "FIL", "FR", "GA", "GU", "HA", "HE", "HI", "HR", "HU", "ID", "IT", "JA", "KA", "KK", "KN", "KO", "KY_KG", "LO", "LT", "LV", "MK", "ML", "MR", "MS", "NB", "NL", "PA", "PL", "PT_BR", "PT_PT", "RO", "RU", "RW_RW", "SK", "SL", "SQ", "SR", "SV", "SW", "TA", "TE", "TH", "TR", "UK", "UR", "UZ", "VI", "ZH_CN", "ZH_HK", "ZH_TW", "ZU", "UNRECOGNIZED"

  - `payload.category` (string, required)
    Enum: "AUTHENTICATION", "MARKETING", "UTILITY", "UNRECOGNIZED"

  - `payload.rejectionCode` (string)
    Rejection code if template is in status 'REJECTED'
    Enum: "ABUSIVE_CONTENT", "INCORRECT_CATEGORY", "INVALID_FORMAT", "NONE", "SCAM", "UNRECOGNIZED"

  - `payload.qualityScore` (string)
    Quality score of the HSM.
    Enum: "QUALITY_SCORE_GREEN", "QUALITY_SCORE_RED", "QUALITY_SCORE_YELLOW", "QUALITY_SCORE_UNKNOWN", "UNRECOGNIZED"

  - `payload.changes` (object)
    Object containing changes on the template. If empty the changes has been approved and applied to the template.

  - `payload.changes.status` (string, required)
    The current status of the changes.
`DRAFT`: The changes has not been submitted.
`IN_PROGRESS`: The changes has been submitted.
    Enum: "DRAFT", "IN_PROGRESS", "REJECTED"

  - `payload.changes.allowCategoryChange` (boolean)
    True if Meta should be allowed to change the category if they determine the category is wrong. If false, Meta might reject the template if they determine the category is wrong based on the template contents. Defaults to false.

  - `payload.changes.details` (any)
    Template details and information.

  - `payload.changes.details.components` (array, required)
    List of components in the template. Must contain a BODY component and can only have one entry of each type.

  - `payload.changes.details.components.type` (string, required)
    Enum: "HEADER"

  - `payload.changes.details.components.format` (string, required)
    Enum: "TEXT"

  - `payload.changes.details.components.text` (string)
    Text to show in the header

  - `payload.changes.details.components.example` (string)
    Example for the header variable.

  - `payload.changes.details.components.format` (string, required)
    Enum: "DOCUMENT", "IMAGE", "VIDEO"

  - `payload.changes.details.components.example` (object)

  - `payload.changes.details.components.example.url` (string)

  - `payload.changes.details.components.type` (string, required)
    Enum: "BODY"

  - `payload.changes.details.components.text` (string)

  - `payload.changes.details.components.examples` (array)
    Examples for the body variables.

  - `payload.changes.details.components.addSecurityRecommendation` (boolean)

  - `payload.changes.details.components.type` (string, required)
    Enum: "FOOTER"

  - `payload.changes.details.components.codeExpirationMinutes` (number)

  - `payload.changes.details.components.type` (string, required)
    Enum: "BUTTONS"

  - `payload.changes.details.components.buttons` (array, required)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "PHONE_NUMBER"

  - `payload.changes.details.components.buttons.text` (string)

  - `payload.changes.details.components.buttons.phoneNumber` (string)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "URL"

  - `payload.changes.details.components.buttons.url` (string)

  - `payload.changes.details.components.buttons.example` (string)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "QUICK_REPLY"

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "OTP"

  - `payload.changes.details.components.buttons.otpType` (string, required)
    Enum: "COPY_CODE", "ONE_TAP", "ZERO_TAP", "UNRECOGNIZED"

  - `payload.changes.details.components.buttons.autofillText` (string)

  - `payload.changes.details.components.buttons.packageName` (string)

  - `payload.changes.details.components.buttons.signatureHash` (string)

  - `payload.changes.details.components.buttons.supportedApps` (array)

  - `payload.changes.details.components.buttons.zeroTapTermsAccepted` (boolean)

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "FLOW"

  - `payload.changes.details.components.buttons.text` (string)
    Text to display on the Flow button

  - `payload.changes.details.components.buttons.flowId` (string)
    Flow ID to launch when button is pressed

  - `payload.changes.details.components.buttons.flowAction` (string)
    Flow action
    Enum: "DATA_EXCHANGE", "NAVIGATE", "UNKNOWN", "UNRECOGNIZED"

  - `payload.changes.details.components.buttons.navigateScreen` (string)
    The unique ID of the first screen. Required for Navigate action.

  - `payload.changes.details.components.buttons.type` (string, required)
    Enum: "REQUEST_CONTACT_INFO"

  - `payload.changes.details.components.format` (string, required)
    Enum: "LOCATION"

  - `payload.changes.details.components.type` (string, required)
    Enum: "CAROUSEL"

  - `payload.changes.details.components.cards` (array, required)
    Media cards.

  - `payload.changes.details.components.cards.components` (array, required)
    List of components in the cards.

  - `payload.changes.details.messageSendTtlSeconds` (number)
    Template message delivery retry time-to-live (TTL) override value. If unable to deliver the template message, it will be periodically retry for this period of time. If it is unable to deliver the message for this period of time, the message will be dropped.
|  | AUTHENTICATION | MARKETING | UTILITY |
|  --- | --- | --- | --- |
| Default | 10 minutes | 30 days | 30 days |
| Customizable range | 10 seconds to 15 minutes | 12 hours to 30 days | 30 seconds to 12 hours |
| Valid values | 10 to 900 seconds | 43200 to 2592000 seconds | 30 to 43200 seconds |

Please note that authentication templates created before October 23, 2024, have a default TTL of 30 days.

  - `payload.changes.details.components` (array)
    The current status of the changes.
`DRAFT`: The changes has not been submitted.
`IN_PROGRESS`: The changes has been submitted.

  - `payload.details` (object)
    Template details and information.

  - `payload.analytics` (array, required)
    Template analytics.

  - `payload.analytics.sent` (number, required)
    Number of times template has been sent.

  - `payload.analytics.delivered` (number, required)
    Number of times template has been delivered.

  - `payload.analytics.read` (number, required)
    Number of times template has been read.

  - `payload.analytics.start` (string, required)
    The UTC Date Time in ISO 8601 for start of date range.

  - `payload.analytics.end` (string, required)
    The UTC Date Time in ISO 8601 for end of date range.

  - `payload.analytics.buttons` (array, required)
    Number of times buttons in the template has been clicked.

  - `payload.analytics.buttons.type` (string, required)
    Type of button.
    Enum: "QUICK_REPLY", "UNIQUE_URL", "URL", "UNRECOGNIZED"

  - `payload.analytics.buttons.content` (string, required)
    Content of the button.

  - `payload.analytics.buttons.clicks` (number, required)
    Number of times the button has been clicked.

  - `payload.isMetaGenerated` (boolean, required)
    Indicates if the template was auto-generated by Meta.

  - `futureCategory` (string, required)
    Future category for template.
    Enum: "AUTHENTICATION", "MARKETING", "UTILITY", "UNRECOGNIZED"

  - `comment` (string)
    Comment for template.

## Callback response 200:

  - `200` (unknown)
    Response to callback will be ignored. The call will retry if unsuccessful.

  - `200` (unknown)
    Response to callback will be ignored. The call will retry if unsuccessful.

  - `200` (unknown)
    Response to callback will be ignored. The call will retry if unsuccessful.

  - `200` (unknown)
    Response to callback will be ignored. The call will retry if unsuccessful.

  - `200` (unknown)
    Response to callback will be ignored. The call will retry if unsuccessful.

  - `200` (unknown)
    Response to callback will be ignored. The call will retry if unsuccessful.

  - `200` (unknown)
    Response to callback will be ignored. The call will retry if unsuccessful.

  - `200` (unknown)
    Response to callback will be ignored. The call will retry if unsuccessful.

