šŸš€ WuzAPI - API REST Multi-UsuĆ”rio para WhatsApp

:rocket: WuzAPI - API REST Multi-UsuƔrio para WhatsApp

:clipboard: ƍndice


:bullseye: O que Ć© a WuzAPI?

A WuzAPI é uma API REST moderna e ultra-eficiente que permite integrar o WhatsApp em qualquer aplicação de forma profissional. Desenvolvida em Go, ela oferece uma solução completa para automação e integração com WhatsApp, suportando múltiplos usuÔrios e dispositivos simultaneamente.

:wrench: Arquitetura Moderna

  • Backend em Go: Performance excepcional e baixo consumo de recursos
  • Multi-usuĆ”rio: Gerenciamento centralizado de mĆŗltiplas contas WhatsApp
  • Multi-dispositivo: Suporte nativo para WhatsApp Multi-Device
  • RESTful API: Interface padronizada e fĆ”cil de integrar
  • Webhook System: Recebimento de mensagens em tempo real

:bullseye: Problemas que Resolve

1. LimitaƧƵes das SoluƧƵes Tradicionais

  • :cross_mark: APIs nĆ£o-oficiais instĆ”veis e com bloqueios frequentes
  • :cross_mark: SoluƧƵes baseadas em navegador com alto consumo de recursos
  • :cross_mark: Falta de suporte multi-usuĆ”rio robusto
  • :cross_mark: Dificuldade de escalabilidade horizontal

2. Desafios de Infraestrutura

  • :cross_mark: Alto consumo de CPU e memória
  • :cross_mark: Complexidade na implementação e manutenção
  • :cross_mark: Dificuldade para implementar em containers

3. Problemas de Integração

  • :cross_mark: APIs inconsistentes e mal documentadas
  • :cross_mark: Falta de webhooks confiĆ”veis
  • :cross_mark: AusĆŖncia de autenticação robusta
  • :cross_mark: LimitaƧƵes para envio de mĆ­dias

:star: Principais Vantagens

:rocket: Performance Excepcional

  • Ultra-leve: Apenas 75MB de tamanho total
  • Baixo consumo: 1 core CPU + 6GB RAM para +1000 instĆ¢ncias
  • Velocidade: Resposta ultra-rĆ”pida em todas as operaƧƵes
  • EficiĆŖncia: Otimizada para ambientes containerizados

:locked: SeguranƧa e Robustez

  • Autenticação dupla: Tokens de usuĆ”rio e admin separados
  • Isolamento: Cada usuĆ”rio possui sua própria sessĆ£o isolada
  • Logs detalhados: Monitoramento completo de todas as operaƧƵes
  • Recuperação automĆ”tica: ReconexĆ£o automĆ”tica em caso de falhas

:globe_with_meridians: Facilidade de Implementação

  • Docker Ready: Imagem oficial otimizada
  • Docker Swarm: Configuração pronta para produção
  • Cloud Native: CompatĆ­vel com qualquer provedor cloud
  • Portainer: Interface grĆ”fica para gerenciamento

:chart_increasing: Escalabilidade Horizontal

  • Multi-instĆ¢ncia: Suporte para milhares de instĆ¢ncias simultĆ¢neas
  • Load Balancing: Distribuição automĆ”tica de carga
  • Auto-scaling: Escalonamento automĆ”tico baseado em demanda
  • Zero Downtime: AtualizaƧƵes sem interrupção do serviƧo

:bar_chart: EspecificaƧƵes TƩcnicas

:laptop: Requisitos MĆ­nimos

CPU: 1 core
RAM: 6GB (para +1000 instâncias)
Storage: 100MB por instância
Network: 1Mbps por 100 instâncias ativas

:spouting_whale: Container Specifications

Image Size: 75MB
Base Image: Alpine Linux
Runtime: Go Binary
Ports: 8080 (HTTP)
Health Check: Built-in endpoint

:file_cabinet: Banco de Dados

Suporte: PostgreSQL, MySQL, SQLite
ConexƵes: Pool otimizado
Migrations: AutomƔticas
Backup: Compatível com ferramentas padrão

:building_construction: Implementação em Infraestrutura

:spouting_whale: Docker Swarm com Portainer

1. Configuração do Swarm

# Inicializar Docker Swarm
docker swarm init

# Criar rede overlay
docker network create --driver overlay network_public

2. Deploy com Docker Compose

version: '3.7'

services:
  wuzapi-server:
    image: setupautomatizado/wuzapi-server:latest
    networks:
      - network_public
    environment:
      - WUZAPI_ADMIN_TOKEN=SeuTokenSeguro123
      - DB_USER=wuzapi
      - DB_PASSWORD=senhaSegura123
      - DB_NAME=wuzapi
      - DB_HOST=db
      - DB_PORT=5432
      - TZ=America/Sao_Paulo
      - WEBHOOK_FORMAT=json
      - SESSION_DEVICE_NAME=WuzAPI
    deploy:
      mode: replicated
      replicas: 3
      restart_policy:
        condition: on-failure
      placement:
        constraints: [node.role == manager]
      resources:
        limits:
          cpus: "1"
          memory: 512MB
        reservations:
          cpus: "0.5"
          memory: 256MB
      labels:
        - traefik.enable=true
        - traefik.http.routers.wuzapi.rule=Host(`api.wuzapi.seudominio.com`)
        - traefik.http.routers.wuzapi.entrypoints=websecure
        - traefik.http.routers.wuzapi.tls.certresolver=letsencrypt
        - traefik.http.services.wuzapi.loadbalancer.server.port=8080
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

  db:
    image: postgres:15-alpine
    environment:
      - POSTGRES_DB=wuzapi
      - POSTGRES_USER=wuzapi
      - POSTGRES_PASSWORD=senhaSegura123
    volumes:
      - postgres_data:/var/lib/postgresql/data
    deploy:
      placement:
        constraints: [node.role == manager]

volumes:
  postgres_data:

networks:
  network_public:
    external: true

3. Deploy via Portainer

  1. Acesse o Portainer: https://portainer.seudominio.com
  2. Navegue para Stacks → Add Stack
  3. Cole a configuração Docker Compose acima
  4. Configure as variƔveis de ambiente
  5. Clique em Deploy the stack

:cloud: Implementação em Cloud

AWS (Amazon Web Services)

# ECS Fargate
aws ecs create-cluster --cluster-name wuzapi-cluster
aws ecs create-service --cluster wuzapi-cluster --service-name wuzapi

Google Cloud Platform

# Google Kubernetes Engine
gcloud container clusters create wuzapi-cluster
kubectl apply -f wuzapi-deployment.yaml

Microsoft Azure

# Azure Container Instances
az container create --resource-group wuzapi-rg --name wuzapi --image setupautomatizado/wuzapi-server:latest

DigitalOcean

# App Platform
doctl apps create --spec wuzapi-app.yaml

:chart_increasing: Escalabilidade

Configuração para Alta Demanda

Pequena Escala (atƩ 100 usuƔrios)

Resources:
  CPU: 1 core
  RAM: 2GB
  Replicas: 2
  Database: PostgreSQL (2 cores, 4GB)

MƩdia Escala (atƩ 500 usuƔrios)

Resources:
  CPU: 2 cores
  RAM: 4GB
  Replicas: 5
  Database: PostgreSQL (4 cores, 8GB)
  Load Balancer: Traefik/Nginx

Grande Escala (atƩ 1000+ usuƔrios)

Resources:
  CPU: 1 core por instância
  RAM: 6GB total
  Replicas: 10+
  Database: PostgreSQL Cluster
  Cache: Redis Cluster
  Monitoring: Prometheus + Grafana

Auto-scaling Configuration

deploy:
  update_config:
    parallelism: 2
    delay: 10s
    failure_action: rollback
  restart_policy:
    condition: on-failure
    delay: 5s
    max_attempts: 3

:hammer_and_wrench: Recursos e Funcionalidades

:mobile_phone: Gestão de Sessões

  • :white_check_mark: ConexĆ£o via QR Code
  • :white_check_mark: Pareamento por nĆŗmero de telefone
  • :white_check_mark: ReconexĆ£o automĆ”tica
  • :white_check_mark: Status de conexĆ£o em tempo real
  • :white_check_mark: Logout seguro

:speech_balloon: Envio de Mensagens

  • :white_check_mark: Texto simples e formatado
  • :white_check_mark: Imagens, vĆ­deos e documentos
  • :white_check_mark: Ɓudios e stickers
  • :white_check_mark: Localização e contatos
  • :white_check_mark: BotƵes interativos (Em Breve)
  • :white_check_mark: Listas de opƧƵes (Em Breve)
  • :white_check_mark: Enquetes (polls)

:busts_in_silhouette: Gestão de Grupos

  • :white_check_mark: Criar e gerenciar grupos
  • :white_check_mark: Adicionar/remover participantes
  • :white_check_mark: Promover/rebaixar administradores
  • :white_check_mark: Configurar descrição e foto
  • :white_check_mark: Link de convite
  • :white_check_mark: ConfiguraƧƵes de privacidade

:bell: Sistema de Webhooks

  • :white_check_mark: Recebimento de mensagens
  • :white_check_mark: Status de entrega e leitura
  • :white_check_mark: Eventos de presenƧa
  • :white_check_mark: Sincronização de histórico
  • :white_check_mark: Eventos de grupo

:bust_in_silhouette: Gestão Multi-usuÔrio

  • :white_check_mark: Criação de usuĆ”rios via API
  • :white_check_mark: Tokens individuais de autenticação
  • :white_check_mark: Configuração de webhooks por usuĆ”rio
  • :white_check_mark: Isolamento completo entre usuĆ”rios
  • :white_check_mark: Painel administrativo

:wrench: Recursos AvanƧados

  • :white_check_mark: Proxy support (SOCKS5/HTTP)
  • :white_check_mark: Integração com S3 para mĆ­dias
  • :white_check_mark: Rate limiting inteligente
  • :white_check_mark: Logs estruturados
  • :white_check_mark: MĆ©tricas de performance
  • :white_check_mark: Health checks

:television: VĆ­deo Explicativo

:movie_camera: Tutorial Completo - Implementação da WuzAPI

<div style="position: relative; width: 100%; height: 0; padding-bottom: 56.25%;">
    <iframe 
        style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" 
        src="https://www.youtube.com/embed/I557BU3_3zE" 
        title="WuzAPI - Esta API permitiu 1.000 instâncias de Whatsapp em apenas 1 Core" 
        frameborder="0" 
        allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
        allowfullscreen>
    </iframe>
</div>

:clipboard: ConteĆŗdo do VĆ­deo:

  • :white_check_mark: Introdução Ć  WuzAPI e seus benefĆ­cios
  • :white_check_mark: Configuração do ambiente Docker Swarm
  • :white_check_mark: Deploy com Portainer passo a passo
  • :white_check_mark: Configuração de usuĆ”rios e webhooks
  • :white_check_mark: Testes de envio e recebimento de mensagens
  • :white_check_mark: Monitoramento e troubleshooting
  • :white_check_mark: Escalabilidade e otimizaƧƵes
  • :white_check_mark: Casos de uso prĆ”ticos

:books: Documentação da API

:link: Endpoints Principais

Autenticação

# Token de usuÔrio para endpoints padrão
Authorization: Bearer SEU_TOKEN_USUARIO

# Token admin para endpoints administrativos
Authorization: Bearer SEU_TOKEN_ADMIN

Gestão de UsuÔrios (Admin)

GET    /admin/users              # Listar usuƔrios
POST   /admin/users              # Criar usuƔrio
DELETE /admin/users/{id}         # Deletar usuƔrio
DELETE /admin/users/{id}/full    # Deletar usuƔrio completo

Sessão WhatsApp

POST   /connect                  # Conectar ao WhatsApp
POST   /disconnect               # Desconectar
GET    /qr                       # Obter QR Code
POST   /pair-phone               # Parear por telefone
GET    /status                   # Status da conexão
POST   /logout                   # Logout

Envio de Mensagens

POST   /send/text                # Enviar texto
POST   /send/image               # Enviar imagem
POST   /send/document            # Enviar documento
POST   /send/audio               # Enviar Ɣudio
POST   /send/video               # Enviar vĆ­deo
POST   /send/sticker             # Enviar sticker
POST   /send/location            # Enviar localização
POST   /send/contact             # Enviar contato
POST   /send/buttons             # Enviar botƵes
POST   /send/list                # Enviar lista
POST   /send/poll                # Enviar enquete

Gestão de Grupos

GET    /groups                   # Listar grupos
POST   /groups                   # Criar grupo
GET    /groups/{id}              # Info do grupo
POST   /groups/{id}/participants # Gerenciar participantes
POST   /groups/{id}/photo        # Definir foto
POST   /groups/{id}/name         # Definir nome
POST   /groups/{id}/description  # Definir descrição
GET    /groups/{id}/invite       # Link de convite
POST   /groups/{id}/leave        # Sair do grupo

Webhooks

GET    /webhook                  # Obter webhook configurado
POST   /webhook                  # Configurar webhook
DELETE /webhook                  # Remover webhook

:memo: Exemplo de Uso

1. Criar UsuƔrio

curl -X POST http://localhost:8080/admin/users \
  -H "Authorization: Bearer SEU_TOKEN_ADMIN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Usuario Teste",
    "token": "token_usuario_123",
    "webhook": "https://seusite.com/webhook",
    "events": ["Message", "ReadReceipt"]
  }'

2. Conectar ao WhatsApp

curl -X POST http://localhost:8080/connect \
  -H "Authorization: Bearer token_usuario_123" \
  -H "Content-Type: application/json" \
  -d '{
    "subscribe": ["Message"],
    "immediate": true
  }'

3. Enviar Mensagem

curl -X POST http://localhost:8080/send/text \
  -H "Authorization: Bearer token_usuario_123" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "5511999999999",
    "body": "OlĆ”! Esta Ć© uma mensagem da WuzAPI šŸš€",
    "id": "msg_001"
  }'

4. Configurar Webhook

curl -X POST http://localhost:8080/webhook \
  -H "Authorization: Bearer token_usuario_123" \
  -H "Content-Type: application/json" \
  -d '{
    "webhookURL": "https://seusite.com/webhook",
    "events": ["Message", "ReadReceipt", "ChatPresence"]
  }'

:bullseye: Casos de Uso

:briefcase: Empresarial

  • :white_check_mark: Atendimento ao cliente automatizado
  • :white_check_mark: NotificaƧƵes de sistema
  • :white_check_mark: Marketing direto
  • :white_check_mark: Suporte tĆ©cnico
  • :white_check_mark: ConfirmaƧƵes de pedidos

:convenience_store: E-commerce

  • :white_check_mark: Confirmação de compras
  • :white_check_mark: Rastreamento de entregas
  • :white_check_mark: Recuperação de carrinho abandonado
  • :white_check_mark: PromoƧƵes personalizadas
  • :white_check_mark: AvaliaƧƵes pós-venda

:hospital: SaĆŗde

  • :white_check_mark: Lembretes de consultas
  • :white_check_mark: Resultados de exames
  • :white_check_mark: Campanhas de vacinação
  • :white_check_mark: OrientaƧƵes mĆ©dicas
  • :white_check_mark: Agendamentos

:graduation_cap: Educação

  • :white_check_mark: Comunicados escolares
  • :white_check_mark: Notas e boletins
  • :white_check_mark: Lembretes de eventos
  • :white_check_mark: Material didĆ”tico
  • :white_check_mark: Comunicação com pais

:rocket: ComeƧar Agora

1. Deploy RƔpido

# Clone o repositório
git clone https://github.com/asternic/wuzapi.git

# Deploy com Docker Compose
docker-compose up -d

# Acesse o dashboard
http://localhost:8080/dashboard

2. Configuração Inicial

  1. Acesse o dashboard administrativo
  2. Crie seu primeiro usuƔrio
  3. Configure o webhook
  4. Conecte ao WhatsApp via QR Code
  5. Envie sua primeira mensagem!

:page_facing_up: LicenƧa

A WuzAPI Ʃ distribuƭda sob a licenƧa MIT. Consulte o arquivo LICENSE para mais detalhes.


:glowing_star: WuzAPI - A solução definitiva para integração WhatsApp em escala empresarial!

Desenvolvido com :heart: pela comunidade open source