Você é um engenheiro de software sênior especializado em integrações com APIs de mensageria (WhatsApp Business API via Infobip). Sua tarefa é construir um backend robusto, escalável e desacoplado para integrar com a API da Infobip (WhatsApp), preparado para futura integração com CRMs como HubSpot. --- # 🎯 OBJETIVO PRINCIPAL Criar um sistema backend que permita: 1. Gerenciar templates de WhatsApp (criar, listar, acompanhar aprovação) 2. Enviar mensagens: * individuais * em lote (campanhas) 3. Acompanhar status de mensagens: * enviado * entregue * visualizado * erro 4. Receber eventos em tempo real via webhook 5. Consultar relatórios via API 6. Suportar múltiplos WABA (multi-conta / multi-tenant) 7. Estrutura pronta para integração futura com CRM (ex: HubSpot) --- # 📚 DOCUMENTAÇÕES OFICIAIS (OBRIGATÓRIO USAR) Leia e siga rigorosamente: * https://www.infobip.com/docs/api * https://www.infobip.com/docs/essentials/api-essentials/api-authentication * https://www.infobip.com/docs/api/channels/whatsapp/whatsapp-service-management/create-whatsapp-template * https://developers.facebook.com/documentation/business-messaging/whatsapp/messaging-limits --- # 🏗️ ARQUITETURA EXIGIDA Use Node.js (preferencialmente com Express ou Fastify) Separar em camadas: * controllers * services * providers (Infobip) * repositories (simulado ou com Redis) * routes * webhooks --- # 🔐 AUTENTICAÇÃO INFObip Implementar suporte a API Key: Header obrigatório: Authorization: App {API_KEY} Permitir múltiplas contas (multi-WABA): ```json { "waba_id": "cliente_1", "api_key": "...", "base_url": "https://xxxx.api.infobip.com" } ``` --- # 🧩 FUNCIONALIDADES OBRIGATÓRIAS ## 1. TEMPLATE MANAGER Criar endpoints: POST /templates GET /templates GET /templates/:id/status Funções: * Criar template via Infobip API * Salvar template localmente (mock ou Redis) * Consultar status de aprovação (Meta) Campos: * name * language * category * components (header/body/buttons) --- ## 2. ENVIO DE MENSAGENS Criar endpoints: POST /messages/send POST /messages/bulk Funções: * Enviar mensagem individual (texto ou template) * Enviar lote de mensagens * Permitir uso de: * template * parâmetros dinâmicos * Gerar: * messageId * campaignReferenceId * bulkId --- ## 3. MESSAGE TRACKING (ESSENCIAL) Salvar: * messageId * status * timestamp * telefone * campaignReferenceId --- ## 4. WEBHOOK HANDLER Criar endpoint: POST /webhooks/infobip Processar eventos: * SENT * DELIVERED * SEEN * FAILED Atualizar status no sistema --- ## 5. RELATÓRIOS Criar endpoint: GET /reports Funções: * Buscar dados via: GET /messages-api/1/reports * Permitir filtros: * campaignReferenceId * messageId * data --- ## 6. MULTI-WABA SUPPORT Sistema deve suportar múltiplos clientes: * Cada requisição deve informar qual WABA usar * Selecionar API Key dinamicamente --- ## 7. REDIS (OU SIMULAÇÃO) Usar Redis para: * armazenar mensagens * armazenar status * armazenar templates Estrutura exemplo: ```json { "message:123": { "status": "DELIVERED", "phone": "+5583...", "timestamp": 123456789 } } ``` --- # ⚙️ BOAS PRÁTICAS OBRIGATÓRIAS * Código modular * Uso de async/await * Tratamento de erros da API Infobip * Logs detalhados * Retry básico para falhas * Timeout de requisição --- # 🚀 DIFERENCIAIS (IMPLEMENTAR SE POSSÍVEL) * Queue simples (ex: Bull ou fila manual) * Controle de rate limit * Estrutura pronta para escalar --- # 📦 OUTPUT ESPERADO O projeto deve incluir: * Estrutura completa de pastas * Código funcional * Exemplos de requisição (Postman ou curl) * README explicando como rodar --- # ❗ IMPORTANTE * NÃO implementar SMS * NÃO implementar fallback SMS * Foco exclusivo em WhatsApp via Infobip * Preparar o sistema para ser usado como middleware SaaS --- # 🎯 OBJETIVO FINAL Criar um backend que funcione como: "Motor de mensageria WhatsApp via API, desacoplado, escalável e pronto para integrar com qualquer CRM"