WhatsApp Platform
Como a plataforma compartilha uma única conta da Meta entre todas as lojas, e o mapa das rotas de credenciais, números, webhook, rotas de callback e Flows globais.
A Venddor atende o WhatsApp no modelo de Tech Provider (provedor de tecnologia da Meta): a plataforma tem uma única conta empresarial do WhatsApp (WABA), com um token de acesso permanente, e cada loja conecta o seu próprio número dentro dessa conta. A loja nunca preenche token nem segredo da Meta; ela herda o que o operador da plataforma configurou aqui.
Esta seção reúne as rotas do operador da plataforma (credenciais, números, webhook, roteamento de mensagens recebidas e Flows globais) e as duas rotas públicas do storefront que alimentam o mini-shop de WhatsApp (botão flutuante e telas).
Como funciona
- Configure as credenciaisGrave a URL da Cloud API, o token permanente, o id da WABA, o token de verificação do webhook e o segredo do app em Credenciais da plataforma.
- Confira a saúde e assine o webhookUse Saúde, números e webhook para ver se a Meta responde e para assinar o app nos webhooks da WABA.
- Conecte o número de uma lojaPercorra os 3 passos de Conectar um número. Ao verificar o número, a plataforma tenta criar a rota de callback sozinha.
- Ajuste as rotasSe precisar mover um número para outro destino, ou cadastrar um número externo, use Rotas de callback.
- Publique Flows globaisMonte Flows (formulários nativos do WhatsApp) uma vez e disponibilize a todas as lojas com Flows globais.
Estados que você vai encontrar
| Campo | Valores | Significado |
|---|---|---|
code_verification_status (número) | VERIFIED e outros devolvidos pela Meta | VERIFIED quer dizer que o código foi aceito; o registro na Cloud API ainda é um passo separado |
quality_rating (número) | GREEN, YELLOW, RED ou vazio | Qualidade do número segundo a Meta; vazio quando o número ainda não enviou mensagens |
status (cadastro do número) | pending_verification | Devolvido ao cadastrar o número, até o código ser verificado |
status (Flow) | draft, published | Só Flows published são usados pela IA de atendimento |
active (rota) | true, false | Rota inativa não encaminha mensagens |
Conceitos importantes
WABA, número e phone_number_id
WABA (WhatsApp Business Account) é a conta empresarial da Meta que agrupa os números. Cada número tem um phone_number_id (texto numérico da Meta, não é o telefone). O telefone legível é display_phone_number ou business_phone (formato +5511999998888).
Loja, seller e store_id
Nas rotas de conexão de número, store_id identifica a loja que vai ser dona do número. Aceita o UUID do tenant ou o storefront_id numérico. O número fica ligado a um seller (lojista) dessa loja; se você não informar vendor_id, a plataforma usa o seller mais antigo da loja.
Token e segredo
O token de acesso e o segredo do app ficam criptografados. Em PUT /config, campo vazio significa "manter o valor atual": dá para salvar o formulário sem reenviar o segredo.
Rotas de callback
Uma rota associa um telefone (somente dígitos, com DDI) a uma URL de destino e a um token de verificação. O destino especial platform significa "processar dentro da plataforma Venddor"; uma URL comum encaminha a mensagem para um sistema externo (por exemplo, uma loja antiga ainda não migrada). Cada rota tem sua própria api_key de 64 caracteres.
Flows
Um Flow é um formulário nativo do WhatsApp (telas com campos, listas e botões) descrito por um JSON no formato da Meta. A Venddor guarda o JSON, valida e publica na Meta. Flows globais ficam no banco mestre e valem para todas as lojas; uma loja pode ter um Flow próprio com a mesma flow_key, que prevalece sobre o global.
Endpoints
| Método | Caminho | Para que serve | Auth |
|---|---|---|---|
| GET | /api/v1/admin/whatsapp-platform/config | Ler as credenciais (segredos mascarados) | admin (root) |
| PUT | /api/v1/admin/whatsapp-platform/config | Gravar as credenciais | admin (root) |
| GET | /api/v1/admin/whatsapp-platform/health | Saúde da integração | admin (root) |
| GET | /api/v1/admin/whatsapp-platform/numbers | Números da WABA | admin (root) |
| GET | /api/v1/admin/whatsapp-platform/webhook | Estado do webhook | admin (root) |
| POST | /api/v1/admin/whatsapp-platform/webhook/subscribe | Assinar o app na WABA | admin (root) |
| POST | /api/v1/admin/whatsapp-platform/setup/register | Cadastrar o número | admin (root) |
| POST | /api/v1/admin/whatsapp-platform/setup/request-code | Pedir o código | admin (root) |
| POST | /api/v1/admin/whatsapp-platform/setup/verify | Verificar o código | admin (root) |
| GET | /api/v1/admin/whatsapp-platform/setup/status | Consultar o número | admin (root) |
| GET | /api/v1/admin/whatsapp-platform/routes | Listar rotas | admin (root) |
| POST | /api/v1/admin/whatsapp-platform/routes | Criar ou atualizar rota | admin (root) |
| DELETE | /api/v1/admin/whatsapp-platform/routes/{id} | Apagar rota | admin (root) |
| POST | /api/v1/admin/whatsapp-platform/routes/{id}/toggle | Ligar ou desligar rota | admin (root) |
| GET | /api/v1/admin/whatsapp-platform/routes/config | Chave mestra e URL padrão | admin (root) |
| PUT | /api/v1/admin/whatsapp-platform/routes/config | Salvar a URL padrão | admin (root) |
| POST | /api/v1/admin/whatsapp-platform/routes/master-key/regenerate | Gerar nova chave mestra | admin (root) |
| GET | /api/v1/admin/whatsapp-platform/flows | Listar Flows globais | admin (root) |
| POST | /api/v1/admin/whatsapp-platform/flows | Criar Flow global | admin (root) |
| GET | /api/v1/admin/whatsapp-platform/flows/{id} | Consultar Flow | admin (root) |
| PUT | /api/v1/admin/whatsapp-platform/flows/{id} | Atualizar Flow | admin (root) |
| DELETE | /api/v1/admin/whatsapp-platform/flows/{id} | Apagar Flow | admin (root) |
| POST | /api/v1/admin/whatsapp-platform/flows/{id}/publish | Publicar na Meta | admin (root) |
| GET | /api/v1/admin/whatsapp-platform/flows/{id}/preview | Pré-visualizar | admin (root) |
| POST | /api/v1/admin/whatsapp-platform/flows/generate | Gerar Flow com IA | admin (root) |
| POST | /api/v1/admin/whatsapp-platform/flows/decide | Testar a escolha de Flow | admin (root) |
| GET | /api/v1/storefront/whatsapp/settings | Configuração pública do botão | nenhuma |
| GET | /api/v1/storefront/wa-page-layouts | Telas do mini-shop | nenhuma |
Erros comuns
- Esperar
200num erro de validação de número. Campos faltando no cadastro do número (phone_number,display_name) voltam como500, não400. Valide antes de chamar. - Chamar com o token de um administrador comum. Só
root_adminpassa; o retorno é403 insufficient permissions. - Achar que o
GET /routes/configsó lê. Na primeira leitura ele gera e grava a chave mestra. - Salvar um Flow sem reenviar o
status. OPUTdo Flow volta o status paradraftquando o campo vem vazio, mesmo que o Flow estivesse publicado. - Pedir o código de verificação várias vezes seguidas. Há espera mínima de 60 segundos entre pedidos do mesmo método, que dobra a cada bloqueio imposto pela Meta, até 15 minutos.
- Usar um telefone estrangeiro nas rotas. O número ganha o prefixo
55quando não começa com55, então um telefone de outro país é gravado errado.