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

Esta API puede eliminar una plantilla de mensaje existente.

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

Endpoint

Cuerpo de la Solicitud

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

Respuesta

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


APIs de Flujo

GET /flow

Esta API sirve para recuperar la lista de flujos.

Autenticación

El Payload y el contexto firmado son necesarios en el encabezado.

Parámetros

Nombre Tipo Descripción Requerido
limit entero Número de flujos a obtener
after cadena Para obtener el siguiente lote de hilos, puede obtenerse de paging.cursors en la respuesta no
before cadena Para obtener el siguiente lote de hilos, puede obtenerse de paging.cursors en la respuesta no

Requisito

Respuesta

{
"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 se utiliza para recuperar el payload de la pantalla de flujo de un flujo.

Autenticación

El Payload y el contexto firmado son necesarios en el encabezado.

Parámetros

Nombre Tipo Descripción Requerido
flowId cadena El ID único de un flujo.

Requisito

Respuesta

{
"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 es para recuperar la URL de la vista previa de un flujo.

Autenticación

El Payload y el contexto firmado son necesarios en el encabezado.

Parámetros

Nombre Tipo Descripción Requerido
flowId cadena El ID único de un flujo.

Requisito

Respuesta

{
"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 es para recuperar los detalles de un flujo.

Autenticación

El Payload y el contexto firmado son necesarios en el encabezado.

Parámetros

NombreTipoDescripciónRequerido
flowIdcadenaEl ID único de un flujo.

Requisito

Respuesta

{
"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 es para crear un nuevo flujo.

Autenticación

El Payload y el contexto firmado son necesarios en el encabezado.

Parámetros

Nombre Tipo Descripción Requerido
name cadena Nombre del nuevo flujo.
categories arreglo Una lista de categorías de flujo. Se pueden proporcionar varios valores, pero al menos uno es obligatorio: SIGN_UP, SIGN_IN, APPOINTMENT_BOOKING, LEAD_GENERATION, CONTACT_US, CUSTOMER_SUPPORT, SURVEY, OTHER
clone_flow_id cadena ID del flujo a ser clonado no
endpoint_url cadena La URL del endpoint del flujo. No proporcione este campo si está clonando un flujo con versión JSON inferior a la 3.0. no

Endpoint

Cuerpo de la Solicitud

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

Respuesta

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


PATCH /flow-metadata

Esta API es para actualizar los metadatos de un flujo.

Autenticación

El Payload y el contexto firmado son necesarios en el encabezado.

Parámetros

NombreTipoDescripciónRequerido
flowIdcadenaID del flujo que está siendo actualizado
namecadenaNuevo nombre del flujono
categoriesarregloNuevas categorías del flujono
endpoint_uricadenaLa URL del Endpoint de WA Flow. No proporcione este campo si está actualizando un flujo con versión de Flow JSON inferior a la 3.0no

Endpoint

Cuerpo de la Solicitud

{
    "flowId": "1005133727262236",
    "data": {
        "name": "Test Flow ABC",
        "endpoint_uri": "https://webhook.site/ff434d70-465c-4c79-90cc-333adfa858b5"
    }
}
```
Copiar

Respuesta

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


PATCH /flow-json

Esta API es para actualizar el JSON de un flujo.

Autenticación

El Payload y el contexto firmado son necesarios en el encabezado.

Parámetros

Nombre Tipo Descripción Requerido
name cadena Nombre del flujo
version cadena Versión del JSON del flujo
screens JSON Las pantallas del flujo que pueden ser insertadas en el constructor de flujos en WhatsApp Manager

Endpoint

Cuerpo de la Solicitud

{
"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

Respuesta

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


DEL /flow

Esta API es para eliminar un flow.

Autenticación

El Payload y el contexto firmado son requeridos en el encabezado.

Parámetros

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

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 y el contexto firmado son requeridos en el encabezado.

Parámetros

Nombre Tipo Descripción Requerido
flowId cadena 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 y el contexto firmado son requeridos en el encabezado.

Parámetros

Nombre Tipo Descripción Requerido
flowId cadena 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 Requerido
publicKey cadenaClave pública RSA de 2048 bits generada para el negocio. Por favor, consulta aquí para saber cómo generar la clave pública.

Endpoint

Cuerpo de la Solicitud

{
"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-----"
}
Copiar

Respuesta

{
"ok": 1
}
Copiar


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