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 channelcom 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-PayloadeX-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://ouhttps://;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,DAILYouMONTHLY | 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; COSTeCONVERSATION | Não | 
            
                | conversation_types | string | Lista de conversas; FREE_ENTRY_POINT,FREE_TIER,REGULAReUNKNOWN | Não | 
            
                | conversation_directions | string | Lista da direção da conversa iniciada; business_initiatedeuesr_initiated | Não | 
            
                | dimensions | string | Lista de detalhamento para aplicar às análises; phone,country,conversation_typeeconversation_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,YELLOWouRED | 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,MARKETINGouOTP | 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_uri | 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_uri | 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