API Pública de Integração WhatsApp Cloud | Woztell

API Pública para Integração com WhatsApp Claud - WOZTELL

Introdução

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/


NOTA

Por exemplo, o endpoint para PUT /whatsapp-message-template:
https://api.whatsapp-cloud.woztell.sanuker.com/v1.2/api/whatsapp-message-template


Autenticação

Token de Acesso WhatsApp Cloud

NOTA

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.


  1. Em "Configurações" -> "Canais", clique em "Editar" para acessar o canal WhatsApp Cloud correspondente.
  1. Na seção "Plataforma", vá para "Acesso Avançado".
  1. Clique em "Gerar" para gerar o token de acesso.
  1. O token de acesso foi gerado. Os tokens existentes podem ser gerenciados na seção abaixo.
  1. 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

Ideia
NOTA

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))}}
  1. 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
  1. Crie um Payload no seguinte formato:

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

Exemplo de payload:

{"app":"699802d69a73fc555f1c6bc4","appIntegration":"696327325430a1cbd131dfdf","channel":"696327315430a1f98231dfde"}
Copiar
  1. Codifique o Payload no formato Base64

  2. 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
  1. 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 WABAnúmero de telefonenamespace do WABAID 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

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

{
"ok": 1
}
Copiar



PUT /media-id

Esta chamada de API pode enviar um arquivo de mídia para o servidor do WhatsApp, para obter um ID de mídia.

NOTA

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 imageaudiovideofile 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

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_HOURDAILY 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_POINTFREE_TIERREGULAR 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; phonecountryconversation_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

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

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.

NOTA

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
NOTAS

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.

Aviso
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
Dica
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

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

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

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

Esta API é para atualizar os metadados 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 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

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

Resposta

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


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

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

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

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

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

{
"ok": 1
}
Copy

GET /whatsapp-business-encryption

Esta API é para recuperar a chave pública da empresa.

Autenticaçã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
Última atualização em 19/07/2024