Arquitetura
O WhatIsUp.dev fica entre a sua aplicação e o WhatsApp. Seu código fala com uma API REST limpa; o gateway segura a conexão com o WhatsApp, assina e armazena os registros de entrega, e envia eventos de volta para o seu endpoint.
As peças
- Seu app segura a chave de API, faz as requisições HTTP, e expõe uma URL de webhook onde os eventos de entrega chegam.
- WhatIsUp.dev é o gateway: uma API REST na frente, armazenamento durável para canais + registros de entrega, uma fila de saída com retentativas, e a conexão com o WhatsApp atrás.
- WhatsApp é alcançado pelo protocolo padrão do WhatsApp Web — sem intermediário da Twilio, sem fila de verificação de negócio da Meta.
Cliente / canal / chave de API
customer
├── api key (one or more)
├── channel (one per phone number)
│ ├── webhook endpoint
│ │ └── delivery record (one per event)
│ └── audit event
└── audit event
Um cliente é a sua conta — a fronteira de cobrança e isolamento. Um canal é um número de telefone pareado; você pode rodar quantos o seu plano permitir. Chaves de API têm escopo de cliente; você também pode vincular uma chave a um único canal quando quiser isolamento de menor privilégio (ex.: um app de marketing que só deve conseguir enviar de um número).
Fronteiras de confiança
| Fronteira | O que é garantido |
|---|---|
| Chave de API → cliente | As chaves são armazenadas com hash; o texto puro é mostrado para você exatamente uma vez, na criação. |
| URLs de webhook de saída | Apenas DNS público — loopback, rede privada e IPs de metadados de nuvem são rejeitados na criação e na entrega. Apenas HTTPS em produção. |
| Segredos de assinatura de webhook | Criptografados em repouso, com suporte a rotação. |
| Acesso entre clientes | Toda query é filtrada pelo seu id de cliente. Não existe caminho de "admin global". |
| Log de auditoria | Append-only — toda mudança de estado visível ao cliente deixa uma linha, e as linhas sobrevivem aos recursos que referenciam. |
O que deliberadamente não está aqui
- Sem instalar SDK — a API é HTTP + JSON puro, então o curl é um cliente de primeira classe.
- Sem escrita multi-região na v1. Um banco de dados primário único mantém a consistência simples; é a decisão certa até o formato do tráfego exigir outra coisa.
- Sem superfície caixa-preta de "assistente de IA". O produto é a requisição — o que você constrói por cima é seu.