Introdução
A Public Integration API permite consultar certas informações da sua integração WhatsApp Cloud, ou executar certas ações sem a necessidade de operar na interface da plataforma.
Endpoint da API
Por favor, use a seguinte URL de Endpoint para a API Pública:
https://api.whatsapp-cloud.woztell.sanuker.com/v1.2/api/
Autenticação
Token de Acesso WhatsApp Cloud
O token de acesso do canal WhatsApp Cloud pode ser aplicado às APIs públicas, exceto para GET /conversation-analytics
, APIs de Criptografia Empresarial e APIs de Fluxo.
- Em "Configurações" -> "Canais", clique em "Editar" para acessar o canal WhatsApp Cloud correspondente.
- Na seção "Plataforma", vá para "Acesso Avançado".
- Clique em "Gerar" para gerar o token de acesso.
- O token de acesso foi gerado. Os tokens existentes podem ser gerenciados na seção abaixo.
-
O token de acesso deve ser passado como parâmetro de consulta
accessToken
, por exemplo:
curl --location --request GET 'https://api.whatsapp-cloud.woztell.sanuker.com/v1.1/api/whatsapp-message-templates?accessToken=${ACCESS_TOKEN}&wabaId=${WABA_ID}&first=10'
Copiar
Payload e contexto assinado
Este método de autenticação só pode ser aplicado para GET /conversation-analytics
, GET /whatsapp-displayname-status
, APIs de criptografia de negócios e APIs de fluxo.
Para realizar a autenticação na API de integração pública, é necessário usar o Payload e o SignedContext que a integração requer.
- Payload:
{"app":"appId","appIntegration":"appIntegrationId","channel":"channelId"}
- SignedContext:
(assinatura).{{base64(JSON.stringify(payload))}}
- Obtenha as informações relacionadas ao canal WhatsApp Cloud correspondente consultando o
channel
com a Open API.
Requisição:
query {
apiViewer{
channel(channelId:"696327315430a1f98231dfde"){
appId
environment(envId:"7lQNjrXbDO"){
info
integration{
integrationId
}
appIntegrationSignature
}
}
}
}
Copiar
Resposta:
{
"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
Crie um Payload no seguinte formato:
{"app":"appId","appIntegration":"appIntegrationId","channel":"channelId"}
Exemplo de payload:
{"app":"699802d69a73fc555f1c6bc4","appIntegration":"696327325430a1cbd131dfdf","channel":"696327315430a1f98231dfde"}
Copiar
-
Codifique o Payload no formato Base64
Combine o Payload codificado e a Assinatura para criar o SignedContext no seguinte formato:
(assinatura).{{base64(JSON.stringify(payload))}}
Exemplo de SignedContext
WAIBCzM6tnzboIwkEPAVVyaVq7VGaIKBaQ/Q+gP6qdA=.eyJhcHAiOiI2MjA2MmMwYjcxNzE5NTMyMDE5MmIxOGY3IiwiYXBwSW50ZWdyYXRpb24iOiI2NDIwZmlnMjhlNjViNDY2ZDQ2MDdlYTIiLCJjaGFubmVsIjoiNzIxZjMyYWM0ZTEyMzYzZGUxMjBkMjlkIg==
Copiar
- Adicione-os no cabeçalho como
X-Woztell-Payload
e X-Woztell-SignedContext
.
APIs gerais
GET /waba-info
Esta chamada API pode obter informações relacionadas ao WABA incluindo nome do WABA, número de telefone, namespace do WABA, ID do WABA de um canal.
Parâmetros
Nome |
Tipo |
Descrição |
Obrigatório |
accessToken |
string |
Token de acesso gerado pelo canal WhatsApp Cloud |
sim |
channelId |
string |
ID do canal |
um destes ou wabaID |
wabaId |
string |
ID do WABA |
um destes ou channelId |
Requisição
curl --location --request GET '/waba-info?accessToken=${ACCESS_TOKEN}&channelId=${CHANNEL_ID}'
Copiar
ou
curl --location --request GET '/waba-info?accessToken=${ACCESS_TOKEN}&wabaId=${WABA_ID}'
Copiar
Resposta
{
"ok": 1,
"result": {
"waId" : "11111111111",
"phoneNumberId" : "123124123232",
"wabaId" : "422126422872292",
"name" : "My Business",
"phoneNumber" : "85212345678",
"phoneNumberCC" : "1",
"formattedPhoneNumber" : "+1 111-111-1111",
"namespace" : "2dwsa4_e24e_42f8_6b5a_110232ae4d5",
"embeddedSignup" : true
}
}
GET /whatsapp-business-profile
Esta chamada de API pode obter o perfil comercial de um número do WhatsApp.
Parâmetros
Nome |
Tipo |
Descrição |
Obrigatório |
accessToken |
string |
Token de acesso gerado a partir do canal WhatsApp Cloud |
true |
phoneNumberId |
string |
ID do número de telefone |
true |
Requisição
curl --location --request GET '/whatsapp-business-profile?accessToken=${ACCESS_TOKEN}&phoneNumberId=${PHONE_NUMBER_ID}'
Copiar
Resposta
{
"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 chamada de API é para recuperar os detalhes relacionados ao número do WhatsApp
Autenticação
O Payload & Contexto assinado são necessários no cabeçalho.
Parâmetros
Nome |
Tipo |
Descrição |
Obrigatório |
accessToken |
string |
Token de acesso gerado a partir do canal WhatsApp Cloud |
true |
phoneNumberId |
string |
ID do número de telefone |
true |
Requisição
Resposta
{
"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"
}
}
PATCH /whatsapp-business-profile
Esta chamada de API pode atualizar o perfil comercial de um número do WhatsApp.
Parâmetros
Nome |
Tipo |
Descrição |
Obrigatório |
accessToken |
string |
Token de acesso gerado a partir do canal WhatsApp Cloud |
true |
phoneNumberId |
string |
ID do número de telefone |
true |
profile |
object |
Conteúdo a ser atualizado no perfil comercial |
true |
Objeto do Perfil
Nome |
Tipo |
Descrição |
Obrigatório |
messaging_product |
string |
Aceita apenas whatsapp |
true |
about |
string |
O texto "Sobre" |
false |
address |
string |
O endereço do seu negócio |
false |
description |
string |
O texto "Descrição" |
false |
email |
string |
Endereço de e-mail do seu negócio |
false |
vertical |
string |
Setor do negócio, por favor consulte aqui para os valores aceitos |
false |
website |
array |
URL(s) do(s) site(s) do seu negócio, incluindo http:// ou https:// ; máximo de 2 sites. |
false |
profile_picture_url |
string |
URL para a foto do perfil |
false |
Endpoint
Corpo da Requisição
{
"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
Resposta
Esta chamada de API pode enviar um arquivo de mídia para o servidor do WhatsApp, para obter um ID de mídia.
O arquivo de mídia enviado será mantido no servidor WhatsApp Cloud por 30 dias. Após o vencimento, os usuários precisam enviar novamente para obter outro ID de mídia.
Parâmetros
Nome |
Tipo |
Descrição |
Obrigatório |
phoneNumberId |
string |
ID do número de telefone |
true |
accessToken |
string |
Token de acesso gerado pelo WhatsApp |
true |
type |
string |
image , audio , video , file |
true |
url |
string |
Link para o arquivo de mídia |
true |
Endpoint
Corpo da Requisição
{
"phoneNumberId": "123164329653069",
"accessToken": "ACCESS_TOKEN",
"type": "image",
"url": "MEDIA_URL",
}
Copiar
Resposta
{
"ok": 1,
"mediaId": "5770270532993662",
"fileType": "image"
}
Copiar
GET /conversation-analytics
Esta API é para recuperar as análises de conversas dentro do intervalo de datas selecionado.
Autenticação
O Payload & Signed context são requeridos no cabeçalho.
Parâmetros
Nome |
Tipo |
Descrição |
Obrigatório |
from |
UNIX Timestamp |
Data inicial para o intervalo de datas alvo |
Sim |
to |
UNIX Timestamp |
Data final para o intervalo de datas alvo |
Sim |
granularity |
string |
A granularidade pela qual você gostaria de recuperar as análises; HALF_HOUR , DAILY ou MONTHLY |
Sim |
numbers |
array |
Lista dos números de telefone para obter as análises |
Não |
metric_types |
string |
Lista de métricas para recuperar; COST e CONVERSATION |
Não |
conversation_types |
string |
Lista de conversas; FREE_ENTRY_POINT , FREE_TIER , REGULAR e UNKNOWN |
Não |
conversation_directions |
string |
Lista da direção da conversa iniciada; business_initiated e uesr_initiated |
Não |
dimensions |
string |
Lista de detalhamento para aplicar às análises; phone , country , conversation_type e conversation_reaction |
Não |
Requisição
Resposta
{
"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
}
]
}
}
Copiar
GET /catalogs
Esta chamada de API pode listar os catálogos associados a um WABA específico.
Autenticação
O Payload & Signed context são requeridos no cabeçalho.
Requisição
Resposta
{
"ok": 1,
"data": [
{
"id": "1234577510532066",
"name": "test_products"
}
],
"paging": {
"hasPrevious": false,
"hasNext": false
}
}
Copiar
GET /products
Esta chamada de API pode listar os produtos sob um catálogo associado a um WABA específico.
Autenticação
O Payload & Signed context são requeridos no cabeçalho.
Parâmetros
Nome |
Tipo |
Descrição |
Obrigatório |
catalogId |
string |
ID do catálogo |
true |
Requisição
Resposta
{
"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 Template de Mensagem
GET /whatsapp-message-templates
Esta chamada de API pode listar os templates de mensagem do WhatsApp de um WABA específico com paginação e filtros opcionais.
Parâmetros
Nome |
Tipo |
Descrição |
Obrigatório |
wabaId |
string |
ID do WABA alvo |
true |
first |
integer |
Número de templates de mensagem; máximo 100 |
true |
after |
string |
Cursor para obter resultado de paginação da próxima página; deve ser especificado "after" ou "before" |
false |
before |
string |
Cursor para obter resultado de paginação da página anterior; deve ser especificado "after" ou "before" |
false |
status |
string |
Array de status para filtrar; padrão: ["APPROVED"] , ["PENDING"] , ["REJECTED"] , ["PENDING_DELETION"] , ["DELETED"] se não especificado |
false |
category |
string |
Categoria do template de mensagem: ["TRANSACTIONAL"] , ["MARKETING"] ou ["OTP"] |
false |
quality_score |
string |
Avaliação de qualidade do template: GREEN , YELLOW ou RED |
false |
language |
array |
Idioma do template de mensagem; deve estar em array e no código de idioma suportado, como en_US , es . |
false |
name |
string |
Busca por nome do template de mensagem |
false |
content |
string |
Busca por conteúdo do template de mensagem |
false |
name or content |
string |
Busca por nome ou conteúdo dos templates de mensagem |
false |
Requisição
curl --location '/whatsapp-message-templates?accessToken=${ACCESS_TOKEN}&wabaId=${WABA_ID}&first=10&after=MAZDZD&status=["APPROVED"]'
Copiar
Resposta
"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 chamada de API pode criar um novo template de mensagem do WhatsApp.
Cada conta de WhatsApp Business pode criar 100 templates de mensagem por hora.
Parâmetros
Nome |
Tipo |
Descrição |
Obrigatório |
wabaId |
string |
ID do WABA |
true |
accessToken |
string |
Token de acesso gerado pelo canal WhatsApp Cloud |
true |
name |
string |
Nome do template de mensagem |
true |
language |
string |
Idioma do template de mensagem |
true |
category |
string |
Categoria do template de mensagem: TRANSACTIONAL , MARKETING ou OTP |
true |
components |
array |
Conteúdo do template de mensagem. Consulte aqui para a estrutura dos componentes. |
true |
Ao inserir a URL da imagem em "example":{"header_handle":["IMAGE_URL"]}
, esta API fará upload automático do exemplo ao criar o template de mensagem para você.
Endpoint
Corpo da Requisição
Exemplo de Requisição (Cabeçalho de Imagem)
{
"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
Exemplo de Requisição (Parâmetros, Rodapé e Botões de Chamada para Ação)
{
"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
Exemplo de Requisição (Parâmetros e Botões de Resposta 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
Resposta
{
"ok": 1,
"id": "516723536625510",
"language": "en_US"
}
Copiar
PATCH /whatsapp-message-template
Esta chamada de API pode editar um modelo de mensagem existente.
NOTA
Um modelo de mensagem só pode ser editado uma vez em um intervalo de 24 horas e no máximo 10 vezes em 30 dias.
Parâmetros
Nome |
Tipo |
Descrição |
Obrigatório |
wabaId |
string |
ID do WABA |
true |
accessToken |
string |
Token de acesso gerado a partir do canal WhatsApp Cloud |
true |
messageTemplateName |
string |
Nome do modelo de mensagem |
true |
messageTemplateLanguage |
string |
Idioma do modelo de mensagem |
true |
messageTemplateId |
string |
ID único do modelo de mensagem |
true |
components |
array |
Conteúdo a ser atualizado no modelo de mensagem |
true |
NOTAS
Cada versão de idioma de um modelo de mensagem possui seu próprio ID. Para editar um modelo com PATCH /whatsapp-message-templates
, é necessário especificar o idioma correspondente.
Normalmente, GET /whatsapp-message-templates
retorna apenas o ID do idioma mais recente. Portanto, você deve usar o filtro de idioma ao chamar o GET.
Endpoint
Request Body
{
"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!"
}
]
}
Copy
Response
{
"ok": 1,
"success": true
}
Copy
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
Corpo da Requisição
{
"wabaId": "12986521265530",
"accessToken": "ACCESS_TOKEN",
"name": "test_template"
}
Copiar
Resposta
{
"ok": 1,
"success": true
}
Copiar
APIs de Fluxos
GET /flow
Esta API serve para recuperar a lista de fluxos.
Autenticação
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 para obter |
sim |
after |
string |
Para obter o próximo lote de threads, pode ser obtido do paging.cursors na resposta |
Não |
before |
string |
Para obter o próximo lote de threads, pode ser obtido do 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 é para recuperar o payload da tela do fluxo.
Autenticação
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 obter a URL da pré-visualização de um fluxo.
Autenticação
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
GET /flow-detail
Esta API é para obter os detalhes de um fluxo.
Autenticação
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
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 do fluxo. Vários 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 clonar |
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 inferior à 3.0. |
não |
Endpoint
Corpo da Requisição
Resposta
{
"ok": 1,
"id": "1557286081777970"
}
Copiar
Esta API é para atualizar os metadados de um fluxo.
Autenticação
O Payload & Signed context são necessários no cabeçalho.
Parâmetros
Nome |
Tipo |
Descrição |
Obrigatório |
flowId |
string |
ID do fluxo que está sendo atualizado |
sim |
name |
string |
Novo nome do fluxo |
não |
categories |
array |
Novas categorias do fluxo |
não |
endpoint_url |
string |
URL do endpoint do fluxo WA. Não forneça este campo se estiver atualizando um fluxo com versão JSON abaixo de 3.0 |
não |
Endpoint
Corpo da Requisição
PATCH /flow-json
Esta API é para atualizar o JSON de um fluxo.
Autenticação
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 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
Resposta
{
"ok": 1,
"success": true,
"validation_errors": []
}
Copiar
DEL /flow
Esta API é para deletar um fluxo.
Autenticação
O Payload & Signed context são necessários no cabeçalho.
Parâmetros
Nome |
Tipo |
Descrição |
Obrigatório |
flowId |
string |
ID do fluxo a ser deletado |
sim |
Endpoint
Request Body
{
"flowId": "913687770028833"
}
Copiar
Resposta
{
"ok": 1,
"success": true
}
Copiar
POST /publish-flow
Esta API é para publicar um fluxo.
Autenticação
O Payload & Signed context são necessários no cabeçalho.
Parâmetros
Nome |
Tipo |
Descrição |
Obrigatório |
flowId |
string |
ID do fluxo a ser publicado |
sim |
Endpoint
Request Body
{
"flowId": "913687770028833"
}
Copiar
Resposta
{
"ok": 1,
"success": true
}
Copiar
POST /deprecate-flow
Esta API é para depreciar um fluxo.
Autenticação
O Payload & Signed context são necessários no cabeçalho.
Parâmetros
Nome |
Tipo |
Descrição |
Obrigatório |
flowId |
string |
ID do fluxo a ser depreciado |
sim |
Endpoint
Corpo da Requisição
{
"flowId": "913687770028833"
}
Copiar
Resposta
{
"ok": 1,
"success": true
}
Copiar
APIs de Criptografia Empresarial
POST /whatsapp-business-encryption
Esta API é para definir a chave pública da empresa.
Autenticação
O Payload & Signed context são obrigatórios no cabeçalho.
Parâmetros
Nome |
Tipo |
Descrição |
Obrigatório |
publicKey |
string |
Chave pública RSA de 2048 bits gerada para a empresa. Por favor, consulte
aqui para saber como gerar a chave pública.
|
sim |
Endpoint
Corpo da Requisição
{
"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
Resposta
GET /whatsapp-business-encryption
Esta API é para recuperar a chave pública da empresa.
Autenticação
O Payload & Signed context são obrigatórios no cabeçalho.
Requisição
Resposta
{
"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"
}
]
}
Copy