Skip to content
WhatIsUp.dev

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.

Seu app fala com um único endpoint HTTP. O gateway é dono do lado do WhatsApp.

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

FronteiraO que é garantido
Chave de API → clienteAs chaves são armazenadas com hash; o texto puro é mostrado para você exatamente uma vez, na criação.
URLs de webhook de saídaApenas 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 webhookCriptografados em repouso, com suporte a rotação.
Acesso entre clientesToda query é filtrada pelo seu id de cliente. Não existe caminho de "admin global".
Log de auditoriaAppend-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.