Baileys APIv6.5
PromptUse com Lovable, v0, ChatGPT e outras IAs

Prompt mestre para backend de integração

Copie o prompt abaixo e envie para qualquer IA geradora de código. Ele está focado em criar toda a camada de backend para integração com o Tetra Baileys, incluindo API key do usuário, endpoints e eventos.

Como usar

  • Substitua {{API_BASE_URL}} e {{GLOBAL_API_KEY}} antes de enviar.
  • Se a IA suportar contexto de projeto, anexe também o repositório para melhorar a qualidade.
  • O botão Copiar no bloco já copia o prompt completo.
Prompt pronto para IAshell
Você é um engenheiro backend sênior especialista em integrações WhatsApp (Baileys), APIs REST, webhooks e arquitetura de serviços.

Crie TODO o backend de integração para o projeto TETRA_BAIYLES com foco em:
1) Camada de integração completa com a API do Tetra Baileys.
2) Módulo de autenticação por API key do usuário (sem hardcode).
3) Serviços e casos de uso para conexão, mensagens, grupos, perfil, chats e webhook.
4) Módulo de ingestão e roteamento de eventos Baileys para automações.
5) Observabilidade, resiliência e segurança para ambiente de produção.

## Regras obrigatórias
- Não invente endpoints.
- Use somente os endpoints e eventos listados neste prompt.
- Implementar tratamento de erros (4xx/5xx), retry, timeout e logs estruturados.
- Implementar validação de dados de entrada.
- Implementar arquitetura limpa backend: controllers/routers, services/use-cases, clients, adapters, repositories e DTOs.
- Preparar para produção (tipagem forte, separação de camadas, segurança e testes).
- Não gerar frontend neste escopo.

## Base de integração
- Base URL da API: {{API_BASE_URL}}
- API key global opcional: {{GLOBAL_API_KEY}}
- API key do usuário (obrigatória): receber por usuário/tenant e enviar em header `apikey` em todas as chamadas.
- Header padrão para integração:
  - Content-Type: application/json
  - apikey: <API_KEY_DO_USUARIO>

## O que implementar no backend
1) API Client Tetra Baileys
   - Cliente HTTP centralizado para TODOS os endpoints.
   - Interceptor para anexar `apikey` por usuário.
   - Tratamento padronizado de erro, retry e timeout.

2) Módulo de gestão de instância/conexão
   - Casos de uso para: criar, conectar (QR), estado da conexão, reiniciar, logout, deletar e listar instâncias.
   - Persistir metadados de instância e status no banco local.

3) Módulo de mensagens
   - Serviços para envio de texto, mídia, botões, lista e reação.
   - Serviço para listagem de chats e mensagens históricas.
   - Status de entrega/leitura com correlação por messageId.

4) Módulo de grupos
   - Criar grupo.
   - Adicionar/remover participantes.
   - Promover/rebaixar admin via action `promote`/`demote`.
   - Auditoria das ações de grupo.

5) Módulo de perfil e webhook
   - Atualizar nome e status de perfil.
   - Configurar e consultar webhook por instância.
   - Validar assinatura/segurança do webhook (quando aplicável).

6) Módulo de eventos e automações
   - Consumir e normalizar todos os eventos oficiais listados.
   - Roteador de eventos por tipo (ex.: messages.upsert, group-participants.update, connection.update).
   - Pipeline para regras de automação (ex.: auto resposta, boas-vindas em grupo, alertas).

7) Segurança e operação
   - Armazenamento seguro da API key do usuário (criptografia em repouso).
   - Sanitização de logs (nunca expor chave/tokens).
   - Rate limit por usuário/tenant.
   - Healthcheck e métricas.

## Endpoints oficiais deste projeto
### Instâncias
- [POST] /instance/create - Criar Instância
- [GET] /instance/fetchInstances - Listar Instâncias
- [GET] /instance/connect/{instanceName} - Conectar Instância (QR Code)
- [GET] /instance/connectionState/{instanceName} - Estado da Conexão
- [DELETE] /instance/logout/{instanceName} - Desconectar Instância
- [DELETE] /instance/delete/{instanceName} - Deletar Instância
- [PUT] /instance/restart/{instanceName} - Reiniciar Instância

### Mensagens
- [POST] /message/sendText/{instanceName} - Enviar Mensagem de Texto
- [POST] /message/sendMedia/{instanceName} - Enviar Mídia
- [POST] /message/sendButtons/{instanceName} - Enviar Botões Interativos
- [POST] /message/sendList/{instanceName} - Enviar Lista Interativa
- [POST] /message/sendReaction/{instanceName} - Enviar Reação
- [POST] /message/sendStatus/{instanceName} - Postar Story / Status
- [POST] /message/sendWhatsAppAudio/{instanceName} - Enviar WhatsApp Áudio (PTT)
- [POST] /message/sendSticker/{instanceName} - Enviar Sticker
- [POST] /message/sendLocation/{instanceName} - Enviar Localização
- [POST] /message/sendContact/{instanceName} - Enviar Contato
- [POST] /message/sendPoll/{instanceName} - Enviar Enquete

### Webhook
- [POST] /webhook/set/{instanceName} - Configurar Webhook
- [GET] /webhook/find/{instanceName} - Buscar Webhook

### Grupos
- [POST] /group/create/{instanceName} - Criar Grupo
- [PUT] /group/updateParticipant/{instanceName} - Atualizar Participante (ação livre)
- [POST] /group/addParticipant/{instanceName} - Adicionar Usuário ao Grupo
- [POST] /group/removeParticipant/{instanceName} - Remover Usuário do Grupo
- [POST] /group/promoteParticipant/{instanceName} - Tornar Participante Admin
- [POST] /group/demoteParticipant/{instanceName} - Remover Admin do Participante
- [POST] /group/joinByInviteCode/{instanceName} - Entrar em Grupo por Convite
- [POST] /group/leave/{instanceName} - Sair do Grupo
- [GET] /group/inviteCode/{instanceName} - Obter Link de Convite do Grupo
- [POST] /group/revokeInviteCode/{instanceName} - Revogar Link de Convite do Grupo
- [GET] /group/metadata/{instanceName} - Buscar Metadados do Grupo

### Perfil
- [PUT] /profile/name/{instanceName} - Atualizar Nome do Perfil
- [PUT] /profile/status/{instanceName} - Atualizar Status do Perfil
- [GET] /profile/fetchProfile/{instanceName} - Buscar Perfil
- [POST] /profile/fetchBusinessProfile/{instanceName} - Buscar Perfil Comercial
- [GET] /profile/fetchPrivacySettings/{instanceName} - Buscar Configurações de Privacidade

### Chats
- [GET] /chat/findChats/{instanceName} - Listar Chats
- [GET] /chat/findMessages/{instanceName} - Buscar Mensagens
- [POST] /chat/checkIsWhatsApp/{instanceName} - Check Is WhatsApp
- [POST] /chat/markMessageAsRead/{instanceName} - Marcar Mensagem como Lida
- [POST] /chat/archiveChat/{instanceName} - Arquivar Chat
- [POST] /chat/sendPresence/{instanceName} - Enviar Presença
- [POST] /chat/updateBlockStatus/{instanceName} - Atualizar Bloqueio do Contato
- [GET] /chat/fetchProfilePictureUrl/{instanceName} - Buscar URL da Foto de Perfil
- [POST] /chat/findContacts/{instanceName} - Listar/Buscar Contatos
- [POST] /chat/findStatusMessage/{instanceName} - Buscar Recado (Status) do Contato

## Eventos oficiais deste projeto
- connection.update (Conexão)
- creds.update (Conexão)
- messages.upsert (Mensagens)
- messages.update (Mensagens)
- messages.delete (Mensagens)
- messages.reaction (Mensagens)
- message-receipt.update (Mensagens)
- chats.upsert (Chats)
- chats.update (Chats)
- chats.delete (Chats)
- contacts.upsert (Contatos)
- contacts.update (Contatos)
- groups.upsert (Grupos)
- groups.update (Grupos)
- group-participants.update (Grupos)
- presence.update (Presença)
- call (Chamadas)
- messaging-history.set (Histórico)

## Entrega esperada
- Estrutura de pastas backend sugerida (por camadas/módulos).
- Código completo dos módulos principais de integração.
- Contratos (DTOs/schemas) para requests e responses.
- Exemplos de endpoints internos do backend (REST) para orquestrar a integração.
- Exemplo completo: fluxo "messages.upsert" -> regra -> resposta automática.
- Exemplo completo: criar grupo -> promover participante para admin.
- Testes unitários e de integração (com mocks da API externa).
- Instruções de execução local e checklist de validação.

Se faltar alguma informação, use placeholders explícitos no formato {{NOME_DA_VARIAVEL}} sem bloquear a entrega.