API Pública de Integración WhatsApp Cloud | Woztell

API pública para la integración de WhatsApp Cloud - WOZTELL

Introducción

La API de Integración Pública te permite consultar cierta información de tu Integración WhatsApp Cloud, o realizar ciertas acciones sin la necesidad de operar en la interfaz de la plataforma.

Punto de Acceso API

Por favor, utiliza la siguiente URL de Punto de Acceso para la API Pública:
https://api.whatsapp-cloud.woztell.sanuker.com/v1.2/api/


NOTA

Por ejemplo, el punto de acceso para PUT /whatsapp-message-template:
https://api.whatsapp-cloud.woztell.sanuker.com/v1.2/api/whatsapp-message-template


Autenticación

Token de Acceso WhatsApp Cloud

NOTA

El token de acceso del canal WhatsApp Cloud puede aplicarse a las APIs públicas excepto a la GET /conversation-analytics, APIs de Encriptación Empresarial y APIs de Flujos.


  1. En "Configuración" -> "Canales", haz clic en "Editar" para ingresar al canal WhatsApp Cloud correspondiente.
  1. En "Plataforma", dirígete a "Acceso Avanzado".
  1. Haz clic en "Generar" para crear el token de acceso.
  1. El token de acceso ha sido generado. Los tokens existentes pueden gestionarse en la sección siguiente.
  1. El token de acceso debe enviarse como parámetro de consulta accessToken, por ejemplo:


Carga Útil & Contexto Firmado

NOTA

Este método de autenticación solo puede aplicarse a GET /conversation-analyticsGET /whatsapp-displayname-status, APIs de Encriptación Empresarial y APIs de Flujos.


Para realizar la autenticación en la API de Integración Pública, es necesario utilizar la correspondiente Carga Útil y Contexto Firmado que requiere la integración.

  • Carga Útil{"app":"appId","appIntegration":"appIntegrationId","channel":"channelId"}
  • Contexto Firmado(firma).{{base64(JSON.stringify(payload))}}
  1. Obtén la información relacionada con el canal WhatsApp Cloud correspondiente consultando el canal con Open API.

Solicitud:

query {
apiViewer{
channel(channelId:"696327315430a1f98231dfde"){
appId
environment(envId:"7lQNjrXbDO"){
info
integration{
integrationId

}
appIntegrationSignature
}
}
}
}
Copiar

Respuesta:

{
"data": {
"apiViewer": {
"channel": {
"appId": "699802d69a73fc555f1c6bc4",
"environment": {
"info": {
"integrationId": "whatsapp-cloud",
"build": 3,
"alias": "dev-whats-app-cloud",
"appIntegrationId": "696327325430a1cbd131dfdf",
"subscribed": true
},
"integration": {
"integrationId": "whatsapp-cloud"
},
"appIntegrationSignature": "1RJ7rKRTHbOBoY95AgtXF5WT2578gy9+b4ekBp727cQ="
}
}
}
}
}
Copiar
  1. Crea la Carga Útil con el siguiente formato:

    {"app":"appId","appIntegration":"appIntegrationId","channel":"channelId"}

Ejemplo de Carga Útil:

{"app":"699802d69a73fc555f1c6bc4","appIntegration":"696327325430a1cbd131dfdf","channel":"696327315430a1f98231dfde"}
Copiar
  1. Codifica la Carga Útil en formato Base64

  2. Combina la Carga Útil codificada y la Firma para crear el Contexto Firmado con el siguiente formato:

    (firma).{{base64(JSON.stringify(payload))}}

Ejemplo de Contexto Firmado

WAIBCzM6tnzboIwkEPAVVyaVq7VGaIKBaQ/Q+gP6qdA=.eyJhcHAiOiI2MjA2MmMwYjcxNzE5NTMyMDE5MmIxOGY3IiwiYXBwSW50ZWdyYXRpb24iOiI2NDIwZmlnMjhlNjViNDY2ZDQ2MDdlYTIiLCJjaGFubmVsIjoiNzIxZjMyYWM0ZTEyMzYzZGUxMjBkMjlkIg==
Copiar
  1. Agrégalos en el encabezado como X-Woztell-Payload y X-Woztell-SignedContext.


APIs Generales

GET /waba-info

Esta llamada a la API puede obtener información relacionada con WABA incluyendo nombre WABAnúmero de teléfononamespace WABAID WABA de un canal.

Parámetros

Nombre Tipo Descripción Requerido
accessToken cadena Token de acceso generado desde el canal WhatsApp Cloud
channelId cadena ID del canal este o wabaID
wabaId cadena ID WABA este o channelId

Solicitud

curl --location --request GET '/waba-info?accessToken=${ACCESS_TOKEN}&channelId=${CHANNEL_ID}'
Copiar

o

curl --location --request GET '/waba-info?accessToken=${ACCESS_TOKEN}&wabaId=${WABA_ID}'
Copiar

Respuesta

{
"ok": 1,
"result": {
"waId" : "11111111111",
"phoneNumberId" : "123124123232",
"wabaId" : "422126422872292",
"name" : "Mi Negocio",
"phoneNumber" : "85212345678",
"phoneNumberCC" : "1",
"formattedPhoneNumber" : "+1 111-111-1111",
"namespace" : "2dwsa4_e24e_42f8_6b5a_110232ae4d5",
"embeddedSignup" : true
}
}
Copiar


GET /whatsapp-business-profile

Esta llamada a la API puede obtener el perfil comercial de un número de WhatsApp.

Parámetros

Nombre Tipo Descripción Requerido
accessToken cadena Token de acceso generado desde el canal WhatsApp Cloud
phoneNumberId cadena ID del número telefónico

Solicitud

curl --location --request GET '/whatsapp-business-profile?accessToken=${ACCESS_TOKEN}&phoneNumberId=${PHONE_NUMBER_ID}'
Copiar

Respuesta

{
"ok": 1,
"data": {
"about": "Hello this is John!",
"address": "ABC Building",
"description": "Testing 123",
"email": "testemail@woztell.com",
"profile_picture_url": "IMAGE_URL",
"websites": [
"https://woztell.com/"
],
"vertical": "PROF_SERVICES",
"messaging_product": "whatsapp"
}
}
Copiar


GET /whatsapp-displayname-status

Esta llamada a la API es para obtener los detalles relacionados con el número de WhatsApp

Autenticación

El Payload y Contexto Firmado son requeridos en el encabezado.

Parámetros

Nombre Tipo Descripción Requerido
accessToken cadena Token de acceso generado desde el canal WhatsApp Cloud
phoneNumberId cadena ID del número telefónico

Solicitud

Respuesta

{
"ok": 1,
"data": {
"account_mode": "LIVE",
"verified_name": "WozTell Test",
"code_verification_status": "EXPIRED",
"display_phone_number": "+1 123-321-2652",
"quality_rating": "GREEN",
"is_official_business_account": false,
"messaging_limit_tier": "TIER_1K",
"id": "123465061846704"
}
}
Copiar



PATCH /whatsapp-business-profile

Esta llamada a la API puede actualizar el perfil comercial de un número de WhatsApp.

Parámetros

Nombre Tipo Descripción Requerido
accessToken cadena Token de acceso generado desde el canal WhatsApp Cloud
phoneNumberId cadena ID del número telefónico
profile objeto Contenido a actualizar en el perfil comercial
Objeto Perfil
Nombre Tipo Descripción Requerido
messaging_product cadena Solo acepta whatsapp
about cadena El texto "Acerca de" no
address cadena La dirección de tu negocio no
description cadena El texto "Descripción" no
email cadena Correo electrónico de tu negocio no
vertical cadena Industria del negocio, por favor consulta aquí para los valores aceptados no
website arreglo URL(s) del(los) sitio(s) web de tu negocio incluyendo http:// o https://;
máximo 2 sitios web.
no
profile_picture_url cadena URL de la imagen de perfil no

Endpoint


Cuerpo de la Solicitud

{
"accessToken": "ACCESS_TOKEN",
"phoneNumberId": "123456890999",
"profile": {
"about": "This is the about text.",
"address": "Office",
"description": "Testing Text",
"email": "test999@woztell.com",
"profile_picture_url": "IMAGE_URL",
"websites": [
"https://woztell.com/blog/", "https://woztell.com/pricing/"
],
"vertical": "PROF_SERVICES",
"messaging_product": "whatsapp"
}
}
Copiar

Respuesta

{
"ok": 1
}
Copiar


PUT /media-id

Esta llamada a la API podría subir un archivo multimedia al servidor de WhatsApp para obtener un ID de medio.

NOTA

El archivo multimedia subido se mantendrá en el servidor WhatsApp Cloud por 30 días. Después de la expiración, los usuarios deberán subirlo nuevamente para obtener otro ID de medio.


Parámetros

Nombre Tipo Descripción Requerido
phoneNumberId cadena ID del número telefónico
accessToken cadena Token de acceso generado desde WhatsApp
type cadena imageaudiovideofile
url cadena Enlace al archivo multimedia

Endpoint

Cuerpo de la Solicitud

{
"phoneNumberId": "123164329653069",
"accessToken": "ACCESS_TOKEN",
"type": "image",
"url": "MEDIA_URL",
}
Copiar

Respuesta

{
"ok": 1,
"mediaId": "5770270532993662",
"fileType": "image"
}
Copiar


GET /conversation-analytics

Esta API es para obtener el análisis de conversaciones dentro del rango de fechas seleccionado.

Autenticación

El Payload y Contexto Firmado son requeridos en el encabezado.



Parámetros

Nombre Tipo Descripción Requerido
from Timestamp UNIX Fecha de inicio para el rango de fechas objetivo
to Timestamp UNIX Fecha de fin para el rango de fechas objetivo
granularity cadena La granularidad con la que deseas obtener el análisis; HALF_HOURDAILY o MONTHLY
numbers arreglo Lista de números telefónicos para obtener el análisis No
metric_types cadena Lista de métricas a obtener; COST y CONVERSATION No
conversation_types cadena Lista de tipos de conversación; FREE_ENTRY_POINTFREE_TIERREGULAR y UNKNOWN No
conversation_directions cadena Lista de direcciones para iniciar la conversación; business_initiated y user_initiated No
dimensions cadena Lista de desgloses para aplicar al análisis; phonecountryconversation_type y conversation_reaction No

Solicitud

Respuesta

{
"ok": 1,
"conversationAnalytics": {
"data_points": [
{
"start": 1672675200,
"end": 1672761600,
"conversation": 1,
"phone_number": "14132521446",
"country": "HK",
"conversation_type": "FREE_TIER",
"conversation_direction": "USER_INITIATED",
"cost": 0
},
{
"start": 1664899200,
"end": 1664985600,
"conversation": 1,
"phone_number": "14132521446",
"country": "HK",
"conversation_type": "FREE_TIER",
"conversation_direction": "BUSINESS_INITIATED",
"cost": 0
},
{
"start": 1676476800,
"end": 1676563200,
"conversation": 1,
"phone_number": "14132521446",
"country": "HK",
"conversation_type": "FREE_TIER",
"conversation_direction": "USER_INITIATED",
"cost": 0
}
]
}
}
Copiar



GET /catalogs

Esta llamada a la API puede listar los catálogos asociados a un WABA específico.

Autenticación

El Payload y Contexto Firmado son requeridos en el encabezado.

Solicitud

Respuesta

{
"ok": 1,
"data": [
{
"id": "1234577510532066",
"name": "test_products"
}
],
"paging": {
"hasPrevious": false,
"hasNext": false
}
}
Copiar


GET /products

Esta llamada a la API puede listar los productos dentro de un catálogo asociado a un WABA específico.

Autenticación

El Payload y Contexto Firmado son requeridos en el encabezado.

Parámetros

Nombre Tipo Descripción Requerido
catalogId cadena ID del catálogo

Solicitud

Respuesta

{
"ok": 1,
"data": [
{
"name": "Test Product 1",
"price": "HK$900.00",
"image_url": "IMAGE_URL_1",
"retailer_id": "a6y7a9y6f0",
"id": "25233996219581593"
},
{
"name": "Test Product 2",
"price": "HK$2,000.00",
"image_url": "IMAGE_URL_2",
"retailer_id": "yu7q27pbg1",
"id": "7887884911230830"
}
],
"paging": {
"cursors": {
"before": "QVFIUjNtVGtsNzNVRF9sTlhla2JOLVhzUGtlbGdSUURvRDFzelB2MVQwZAHpCb3NieHZAvbXhwZADVud09hZA1pwQVhNMHk4NkNwOEw2ZAEt4MFNpZAk4tR05YVTZAB",
"after": "QVFIUmRwOElZAeHVsWHhiUmk2WlJWcTdnY181UTUzUmx0NEpiSDAzSGdJcHFZALURQSXdmSFZALWHI0ekwyMkx1dU4tXzZAXQnppWjc5MTVWZAmNtb0oyOU9KcEhB"
},
"hasPrevious": false,
"hasNext": false
}
}
Copiar


APIs de Plantillas de Mensajes

GET /whatsapp-message-templates

Esta llamada a la API puede listar las plantillas de mensajes de WhatsApp de un WABA específico con paginación y filtros opcionales.

Parámetros

Nombre Tipo Descripción Requerido
wabaId cadena ID del WABA objetivo
first entero Número de plantillas de mensajes; máximo 100
after cadena Cursor para obtener el resultado de paginación de la página siguiente; se debe especificar "after" o "before" no
before cadena Cursor para obtener el resultado de paginación de la página anterior; se debe especificar "after" o "before" no
status cadena Arreglo de estados para filtrar; por defecto: ["APPROVED"]["PENDING"]["REJECTED"]["PENDING_DELETION"]["DELETED"] si no se especifica no
category cadena Categoría de la plantilla de mensaje: ["TRANSACTIONAL"]["MARKETING"] o ["OTP"] no
quality_score Cadena Calificación de calidad de la plantilla: GREENYELLOW o RED no
language arreglo Idioma de la plantilla de mensaje; debe estar en arreglo y usar el código de idioma soportado, como en_USes. no
name cadena Búsqueda por nombre de la plantilla de mensaje no
content Contenido Búsqueda por contenido de la plantilla de mensaje no
name or content cadena Búsqueda por nombre o contenido de las plantillas de mensaje no

Solicitud

curl --location --request GET '/whatsapp-message-templates?accessToken=${ACCESS_TOKEN}&wabaId=${WABA_ID}&first=10&after=MAZDZD&status=["APPROVED"]'
Copiar

Respuesta

"ok": 1,
"data": [
{
"id": "363730401994967",
"name": "sample_flight_confirmation",
"category": "TICKET_UPDATE",
"languages": [
"pt_BR",
"es",
"id",
"en_US"
],
"statuses": [
{
"language": "pt_BR",
"status": "APPROVED"
},
{
"language": "es",
"status": "APPROVED"
},
{
"language": "id",
"status": "APPROVED"
},
{
"language": "en_US",
"status": "APPROVED"
}
],
"templates": [
{
"language": "pt_BR",
"status": "APPROVED",
"rejected_reason": "NONE",
"components": [
{
"type": "HEADER",
"format": "DOCUMENT"
},
{
"type": "BODY",
"text": "Esta é a sua confirmação de voo para {{1}}-{{2}} em {{3}}."
},
{
"type": "FOOTER",
"text": "Esta mensagem é de uma empresa não verificada."
}
],
"quality_score": {
"score": "UNKNOWN"
}
},
{
"language": "es",
"status": "APPROVED",
"rejected_reason": "NONE",
"components": [
{
"type": "HEADER",
"format": "DOCUMENT"
},
{
"type": "BODY",
"text": "Confirmamos tu vuelo a {{1}}-{{2}} para el {{3}}."
},
{
"type": "FOOTER",
"text": "Este mensaje proviene de un negocio no verificado."
}
],
"quality_score": {
"score": "UNKNOWN"
}
},
{
"language": "id",
"status": "APPROVED",
"rejected_reason": "NONE",
"components": [
{
"type": "HEADER",
"format": "DOCUMENT"
},
{
"type": "BODY",
"text": "Ini merupakan konfirmasi penerbangan Anda untuk {{1}}-{{2}} di {{3}}."
},
{
"type": "FOOTER",
"text": "Pesan ini berasal dari bisnis yang tidak terverifikasi."
}
],
"quality_score": {
"score": "UNKNOWN"
}
},
{
"language": "en_US",
"status": "APPROVED",
"rejected_reason": "NONE",
"components": [
{
"type": "HEADER",
"format": "DOCUMENT"
},
{
"type": "BODY",
"text": "This is your flight confirmation for {{1}}-{{2}} on {{3}}."
},
{
"type": "FOOTER",
"text": "This message is from an unverified business."
}
],
"quality_score": {
"score": "UNKNOWN"
}
}
]
}
],
"paging": {
"cursors": {
"before": "MAZDZD",
"after": "MAZDZD"
},
"hasNext": true,
"hasPrevious": false
}
}
Copiar


PUT /whatsapp-message-template

Esta llamada a la API puede crear una nueva plantilla de mensaje de WhatsApp.

NOTA

Cada cuenta de WhatsApp Business puede crear 100 plantillas de mensaje por hora.

Parámetros

Nombre Tipo Descripción Requerido
wabaId cadena ID de WABA
accessToken cadena Token de acceso generado desde el canal WhatsApp Cloud
name cadena Nombre de la plantilla de mensaje
language cadena Idioma de la plantilla de mensaje
category cadena Categoría de la plantilla de mensaje: TRANSACTIONALMARKETING o OTP
components arreglo Contenido de la plantilla de mensaje. Por favor, consulta aquí para la estructura del componente.
NOTAS

Al insertar la URL de la imagen en "example":{"header_handle":["IMAGE_URL"]}, esta API cargará automáticamente el ejemplo mientras crea la plantilla de mensaje para ti.

Endpoint

Cuerpo de la solicitud

Ejemplo de solicitud (Encabezado de imagen)

{
"wabaId": "190787529545503",
"accessToken": "ACCESS_TOKEN",
"name": "test_template",
"language": "en_US",
"category": "MARKETING"
"components": [
{
"type": "BODY",
"text": "Hi there! Are you interested in our latest promotional sale?"
},
{
"type": "HEADER",
"format": "IMAGE",
"example":{"header_handle":["IMAGE_URL"]}
}
]
}
Copiar

Ejemplo de solicitud (Parámetros, Pie de página y Botones de llamada a la acción)

{
"wabaId": "190787529545503",
"accessToken": "ACCESS_TOKEN",
"name": "test_template",
"language": "en_US",
"category": "MARKETING"
"components": [
{
"type": "BODY",
"text": "hello {{1}} this is body template",
"example":{"body_text":[["Test"]]}
},
{
"type": "FOOTER",
"text": "this is footer template"
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "PHONE_NUMBER",
"text": "Call",
"phone_number":"+85212769072"
},
{
"type": "URL",
"text": "URL",
"url":"https://www.woztell.com/"
}
]
}
]
}
Copiar

Ejemplo de solicitud (Parámetros y botones de respuesta rápida)

{
"wabaId": "190787529545503",
"accessToken": "ACCESS_TOKEN",
"name": "test_template",
"language": "en_US",
"category": "MARKETING"
"components": [
{
"type": "BODY",
"text": "hello {{1}} this is body template",
"example":{
"body_text":[["Test"]]
}
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "QUICK_REPLY",
"text": "yes"
},
{
"type": "QUICK_REPLY",
"text": "no"
}
]
}
]
}
Copiar

Respuesta

{
"ok": 1,
"id": "516723536625510",
"language": "en_US"
}
Copiar


PATCH /whatsapp-message-template

Esta llamada a la API puede editar una plantilla de mensaje existente.

NOTA

Una plantilla de mensaje solo puede ser editada una vez en un período de 24 horas, y hasta 10 veces en un período de 30 días.

Parámetros

Nombre Tipo Descripción Requerido
wabaId cadena ID de WABA
accessToken cadena Token de acceso generado desde el canal WhatsApp Cloud
messageTemplateName cadena Nombre de la plantilla de mensaje
messageTemplateLanguage cadena Idioma de la plantilla de mensaje
messageTemplateId cadena ID único de la plantilla de mensaje
components arreglo Contenido para actualizar en la plantilla de mensaje
NOTAS

Cada versión de idioma de una plantilla de mensaje tiene su propio ID. Para editar una plantilla con PATCH /whatsapp-message-templates, deberás especificar la versión del idioma de la plantilla.

Normalmente, la llamada GET /whatsapp-message-templates solo devuelve el ID del idioma más reciente. Por lo tanto, primero deberías obtener el ID de un idioma particular aplicando el filtro de idioma en GET /whatsapp-message-templates.

Endpoint

Cuerpo de la solicitud

{
"wabaId": "12986521265530",
"accessToken": "ACCESS_TOKEN",
"messageTemplateLanguage": "en_US",
"messageTemplateName": "test_template",
"messageTemplateId": "1748340935544945",
"components": [
{
"type": "BODY",
"text": "Winter's coming, it's time to check out our latest winter collection!"
}
]
}
Copiar

Respuesta

{
"ok": 1,
"success": true
}
Copiar


DEL /whatsapp-message-template

This API call could delete an existing message template.

Parameters

Name Type Description Required
wabaId string WABA ID true
accessToken string Access token generated from the WhatsApp Cloud channel true
name string Name of the message template true

Endpoint

Cuerpo de la Solicitud

{
"wabaId": "12986521265530",
"accessToken": "ACCESS_TOKEN",
"name": "test_template"
}
Copy

Respuesta

{
"ok": 1,
"success": true
}
Copy


APIs de Fluxo

GET /flow

Esta API serve para recuperar a lista de fluxos.

Autenticação

Payload & Signed context são necessários no cabeçalho.

Parâmetros

Nome Tipo Descrição Obrigatório
limit inteiro Número de fluxos a obter sim
after string Para obter o próximo lote de threads, pode ser obtido dos paging.cursors na resposta não
before string Para obter o próximo lote de threads, pode ser obtido dos paging.cursors na resposta não

Requisição

Resposta

{
"ok": 1,
"data": [
{
"label": "TEST FLOW (DRAFT)",
"value": "885692686603466",
"status": "draft",
"assets": [
{
"id": "SIGN_UP",
"label": "Customer Success (SIGN_UP)",
"data": "{}",
"preview": {
"preview_url": "https://business.facebook.com/wa/manage/flows/885692686603466/preview/?token=abdfac6c-1319-4a01-a896-d26482f44659",
"expires_at": "2024-03-08T04:52:37+0000"
}
}
],
"triggerMatchingObject": null
}
],
"paging": {
"cursors": {
"before": "QVFIUnJEbERTSFN1TEM5THFDdkJYNjExaF9xSUxjNjVGazJUWHBWTWV3Ukx0V2JQSFlMYmRzT0RXanpMeUVnd1VnSUlnQVBkamVyNkQ5dW9Ocm5YNVpoY2VR",
"after": "QVFIUnJEbERTSFN1TEM5THFDdkJYNjExaF9xSUxjNjVGazJUWHBWTWV3Ukx0V2JQSFlMYmRzT0RXanpMeUVnd1VnSUlnQVBkamVyNkQ5dW9Ocm5YNVpoY2VR"
},
"hasNext": false,
"hasPrevious": false
}
}
Copiar

GET /flow-screen-payload

Esta API serve para recuperar o payload da tela do fluxo.

Autenticação

Payload & Signed context são necessários no cabeçalho.

Parâmetros

Nome Tipo Descrição Obrigatório
flowId string ID único de um fluxo. sim

Requisição

Resposta

{
"ok": 1,
"payload": {
"id": "screen_with_data",
"label": "Feedback With Data (screen_with_data)",
"data": "{\n \"would_recommend\": \"\",\n \"how_to_do_better\": \"\"\n}",
"screens": [
{
"id": "screen_with_data",
"label": "Feedback With Data (screen_with_data)",
"data": "{\n \"would_recommend\": \"\",\n \"how_to_do_better\": \"\"\n}",
"preview": {
"preview_url": "https://business.facebook.com/wa/manage/flows/1332875717353551/preview/?token=ed47bb0a-f749-4a0f-87f3-889f003b53ed",
"expires_at": "2024-03-06T03:56:10+0000"
}
}
]
}
}
Copiar

GET /flow-preview

Esta API é para recuperar a URL da pré-visualização de um fluxo.

Autenticação

Payload & Contexto Assinado são necessários no cabeçalho.

Parâmetros

Nome Tipo Descrição Obrigatório
flowId string O ID único de um fluxo. sim

Requisição

Resposta

{
"ok": 1,
"data": {
"preview_url": "https://business.facebook.com/wa/manage/flows/994520121646941/preview/?token=5615e315-899c-4787-b211-a512c35f83aa",
"expires_at": "2024-03-06T03:46:30+0000"
}
}
Copiar


GET /flow-detail

Esta API é para recuperar os detalhes de um fluxo.

Autenticação

Payload & Signed context são necessários no cabeçalho.

Parâmetros

Nome Tipo Descrição Obrigatório
flowId string O ID único de um fluxo. sim

Requisição

Resposta

{
"ok": 1,
"id": "678952344393952",
"name": "Test Flow 2",
"categories": [
"OTHER"
],
"preview": {
"preview_url": "https://business.facebook.com/wa/manage/flows/678952344393952/preview/?token=90fd19f9-edf7-4a6a-8fea-8da4cbb687f7",
"expires_at": "2024-03-06T07:39:50+0000"
},
"status": "DRAFT",
"validation_errors": [],
"json_version": "3.1",
"whatsapp_business_account": {
"id": "619018099309339",
"name": "Test Group Limited (UAT)",
"currency": "USD",
"timezone_id": "42",
"message_template_namespace": "a02e2441_69dd_4ea2_a90b_4aca392f0afa"
},
"application": {
"link": "https://platform.woztell.com/",
"name": "Woztell",
"id": "689996742158814"
}
}
Copiar


PUT /create-flow

Esta API é para criar um novo fluxo.

Autenticação

Payload & Signed context são necessários no cabeçalho.

Parâmetros

Nome Tipo Descrição Obrigatório
name string Nome do novo fluxo. sim
categories array Uma lista de categorias de Fluxo. Múltiplos valores são possíveis, mas pelo menos um é obrigatório: SIGN_UP, SIGN_IN, APPOINTMENT_BOOKING, LEAD_GENERATION, CONTACT_US, CUSTOMER_SUPPORT, SURVEY, OTHER sim
clone_flow_id string ID do fluxo para ser clonado não
endpoint_url string A URL do endpoint do fluxo. Não forneça este campo se estiver clonando um Fluxo com versão JSON abaixo da 3.0. não

Endpoint



Corpo da Requisição

{
"data": {
"name": "Test Flow 2",
"categories": [ "SURVEY" ],
"clone_flow_id": "368669698913502",
"endpoint_url": "https://webhook.site/ff434d70-465c-4c79-90cc-333adfa858b5"
}
}
Copiar

Resposta

{
"ok": 1,
"id": "1557286081777970"
}
Copiar


PATCH /flow-json

Esta API é para atualizar o JSON de um fluxo.

Autenticação

Payload & Signed context são necessários no cabeçalho.

Parâmetros

Nome Tipo Descrição Obrigatório
name string Nome do fluxo sim
version string Versão do JSON do fluxo sim
screens JSON As telas do fluxo que podem ser inseridas no construtor de fluxo no WhatsApp Manager sim

Endpoint

Corpo da Requisição

{
"flowId": "910367050421850",
"data": {
"version": "3.1",
"screens": [
{
"id": "PREFERENCES",
"title": "Update Preferences",
"data": {},
"terminal": true,
"layout": {
"type": "SingleColumnLayout",
"children": [
{
"type": "Form",
"name": "form",
"children": [
{
"type": "CheckboxGroup",
"label": "Communication types",
"required": true,
"name": "communicationTypes",
"data-source": [
{
"id": "0",
"title": "Special offers and promotions"
},
{
"id": "1",
"title": "Changes to my subscription"
},
{
"id": "2",
"title": "News and events"
},
{
"id": "3",
"title": "New products"
}
]
},
{
"type": "CheckboxGroup",
"label": "Contact Preferences",
"required": false,
"name": "contactPrefs",
"data-source": [
{
"id": "0",
"title": "Whatsapp"
},
{
"id": "1",
"title": "Email"
},
{
"id": "2",
"title": "SMS"
}
]
},
{
"type": "Footer",
"label": "Done",
"on-click-action": {
"name": "complete",
"payload": {
"communicationTypes": "${form.communicationTypes}",
"contactPrefs": "${form.contactPrefs}"
}
}
}
]
}
]
}
}
]
}
}
Copiar

Response

{
"ok": 1,
"success": true,
"validation_errors": []
}
Copiar



DEL /flow

Esta API es para eliminar un flow.

Autenticación

El Payload & Signed context son requeridos en el encabezado.

Parámetros

Nombre Tipo Descripción Requerido
flowId string ID del flow a eliminar true

Endpoint

Cuerpo de la Solicitud

{
"flowId": "913687770028833"
}
Copiar

Respuesta

{
"ok": 1,
"success": true
}
Copiar


POST /publish-flow

Esta API es para publicar un flujo.

Autenticación

El Payload & Signed context son requeridos en el encabezado.

Parámetros

Nombre Tipo Descripción Requerido
flowId string ID del flujo a publicar

Endpoint

Cuerpo de la Solicitud

{
"flowId": "913687770028833"
}
Copiar

Respuesta

{
"ok": 1,
"success": true
}
Copiar


POST /deprecate-flow

Esta API sirve para descontinuar un flujo.

Autenticación

El Payload & Signed context son requeridos en el encabezado.

Parámetros

Nombre Tipo Descripción Requerido
flowId string ID del flujo a descontinuar

Endpoint

Cuerpo de la Solicitud

{
"flowId": "913687770028833"
}
Copiar

Respuesta

{
"ok": 1,
"success": true
}
Copiar


APIs de Encriptación para Negocios

POST /whatsapp-business-encryption

Esta API sirve para establecer la clave pública del negocio.

Autenticación

El Payload y el contexto firmado son requeridos en la cabecera.

Parámetros

Nombre Tipo Descripción Obligatorio
publicKey string Clave pública RSA de 2048 bits generada para el negocio. Por favor, consulta aquí para saber cómo generar la clave pública.

Endpoint

Request Body

{
"publicKey": "-----BEGIN PUBLIC KEY-----\nABCDIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAls1409DedWXmHnt0Pb6s\nIdGkL6pFXxd5vPxrk/CChQssCGLK7jEPQwzhAZ/La7Cg/IvxjxvgC8DD3v8ZniU7\nHu5xPftKm3rEvNRwstRHaoPF+CNxHzHMy2DkgdVxvnBI6qtEjn+yZXdEOHhGHejH\nEf0EfFSMoyCaXea4E3LqvOE8iJ42uNtC7D4TmyeE+dTKudclswNA3QDA0zLH1M+Y\n9Oxv06FgD9S8gmvSwJgn3hfwLc/j5Dj5Qr6NAd9dRMQGLGeFEbg/JJXAVaAAxFlb\nvITHRG1ynRZDcrAri377Z+HS8G43o3TmrPyD0zRXQFbHCu+kOH5DBs3yFRcFjA7L\nwQIDAQAB\n-----END PUBLIC KEY-----"
}
Copy

Response

{
"ok": 1
}
Copy


GET /whatsapp-business-encryption

Esta API es para obtener la clave pública del negocio.

Autenticación

El Payload y contexto firmado son requeridos en el encabezado.

Solicitud

Respuesta

{
"ok": 1,
"data": [
{
"business_public_key": "-----BEGIN PUBLIC KEY-----\nABCDIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAls1409DedWXmHnt0Pb6s\nIdGkL6pFXxd5vPxrk/CChQssCGLK7jEPQwzhAZ/La7Cg/IvxjxvgC8DD3v8ZniU7\nHu5xPftKm3rEvNRwstRHaoPF+CNxHzHMy2DkgdVxvnBI6qtEjn+yZXdEOHhGHejH\nEf0EfFSMoyCaXea4E3LqvOE8iJ42uNtC7D4TmyeE+dTKudclswNA3QDA0zLH1M+Y\n9Oxv06FgD9S8gmvSwJgn3hfwLc/j5Dj5Qr6NAd9dRMQGLGeFEbg/JJXAVaAAxFlb\nvITHRG1ynRZDcrAri377Z+HS8G43o3TmrPyD0zRXQFbHCu+kOH5DBs3yFRcFjA7L\nwQIDAQAB\n-----END PUBLIC KEY-----",
"business_public_key_signature_status": "VALID"
}
]
}
Copiar