WhatsApp e Asaas rodando na sua máquina.

Simuladores das APIs de que seu produto depende, para desenvolvimento local, testes e CI, começando pelo WhatsApp e pelo Asaas. Aponte sua aplicação para o localhost: mesmos caminhos, mesmos corpos, mesmos webhooks. E o tempo anda quando você manda: um mês de cobrança roda em um segundo, e você vê o seu código reagir.

AMA4DEVS
reprodução de uma execução dos dois mocks
graph.facebook.com/v23.0 localhost:3010/v23.0 api-sandbox.asaas.com/v3 localhost:45445/v3
  1. 27/10/2026
  2. POST /v3/customers 200
    cus_526128665490 Maria Souza
  3. POST /v3/creditCard/tokenizeCreditCard 200
    MASTERCARD 8829, token 5e79adb6…
  4. POST /v3/payments 200
    CREDIT_CARD R$ 350,00 CONFIRMED
    líquido R$ 339,04, crédito em 30/11
  5. webhook PAYMENT_CREATED 200
  6. webhook PAYMENT_CONFIRMED 200
  7. POST /v23.0/1234567890/messages 200
    template appointment_reminder accepted
  8. webhook status sent
  9. webhook status delivered
  10. webhook status read
  11. webhook messages de Maria Souza
    "Oi! Quero remarcar."
  12. 30/11/2026
  13. POST /_admin/clock/advance {"days":34}
  14. webhook PAYMENT_RECEIVED 200
  15. saldo R$ 339,04

Cada linha vem de uma execução real das duas imagens: as chamadas, os eventos de webhook e os valores. Só o papel é desenhado.

Rode na sua máquina.

Quatro jeitos, do mais rápido ao mais completo. As imagens são públicas: nenhum login.

Imagem pronta

O jeito mais rápido: a imagem direto do GHCR.

WhatsApp

docker pull ghcr.io/instituto-ama/whatsapp-mock:latest
docker run -d -p 3010:3010 ghcr.io/instituto-ama/whatsapp-mock:latest

Painel e API em localhost:3010

Mailpit, a caixa dos e-mails ao pagador

docker run -d -p 8025:8025 axllent/mailpit:v1.31.4

Caixa de entrada em localhost:8025

Asaas

docker pull ghcr.io/instituto-ama/asaas-mock:latest
docker run -d -p 45445:45445 -e CLOCK_MODE=VIRTUAL_FLOWING \
  ghcr.io/instituto-ama/asaas-mock:latest

Painel e API em localhost:45445, com o relógio virtual ligado. O Asaas acha o WhatsApp, o SMS e o Mailpit sozinho: cada cobrança já avisa o pagador nos três.

No seu docker-compose

Para subir junto com a sua aplicação, no compose dela. Nada para ligar: o Asaas acha o WhatsApp, o SMS e o Mailpit pelo nome do serviço.

services:
  asaas:
    image: ghcr.io/instituto-ama/asaas-mock:0.11.0
    ports:
      - '45445:45445'
    environment:
      ASAAS_API_KEY: '$$aact_hmlg_local'   # `$$` é um `$` literal no compose
      CLOCK_MODE: VIRTUAL_FLOWING
    depends_on: [whatsapp, mailpit, sms]
    volumes:
      - asaas-data:/data

  whatsapp:
    image: ghcr.io/instituto-ama/whatsapp-mock:0.5.0
    ports:
      - '3010:3010'
    environment:
      WEBHOOK_URL: http://minha-app:4000/webhooks/whatsapp   # a sua aplicação
      MOCK_ALLOWED_HOSTS: whatsapp   # a sua aplicação chama por este nome
    volumes:
      - whatsapp-data:/app/data

  mailpit:
    image: axllent/mailpit:v1.31.4
    ports:
      - '8025:8025'

  sms:
    image: ghcr.io/instituto-ama/sms-mock:0.2.0
    ports:
      - '8899:8899'

volumes:
  asaas-data:
  whatsapp-data:

Da sua aplicação: http://asaas:45445/v3 e http://whatsapp:3010/v23.0. Os avisos ao pagador em localhost:8025 (e-mail), localhost:3010 (WhatsApp) e localhost:8899 (SMS).

Gerar do código

Para rodar a partir do código-fonte, ou depois de alterar um mock.

git clone https://github.com/Instituto-AMA/ama4devs.git
cd ama4devs

WhatsApp

docker build -t whatsapp-mock mocks/whatsapp
docker run -d -p 3010:3010 whatsapp-mock

Asaas

docker build -t asaas-mock mocks/asaas
docker run -d -p 45445:45445 -e CLOCK_MODE=VIRTUAL_FLOWING asaas-mock

Com o WhatsApp, o SMS e o Mailpit no ar, o Asaas acha os três sozinho, como na imagem pronta.

Subir tudo junto

Os mocks e o Mailpit, já conectados. Toda cobrança do Asaas avisa o pagador por e-mail (no Mailpit), por um template de WhatsApp (no mock do WhatsApp) e, para quem tem celular cadastrado, por SMS (no mock de SMS).

git clone https://github.com/Instituto-AMA/ama4devs.git
cd ama4devs
make setup        # sobe tudo e grava os endereços no .env
ServiçoEndereçoO que você abre ali
Mock do WhatsApplocalhost:3010Conversas, templates, números, ligações; a API em /v23.0
Mock do Asaaslocalhost:45445O painel do simulador e o relógio; a API em /v3
Mock do SMSlocalhost:8899As mensagens enviadas aos pagadores
Mailpitlocalhost:8025Os e-mails enviados aos pagadores

Para apontar o seu projeto: grave os endereços no .env dele e troque as URLs base.

make setup TARGET_ENV=../meu-app/.env
- https://graph.facebook.com/v23.0
+ http://localhost:3010/v23.0
- https://api-sandbox.asaas.com/v3
+ http://localhost:45445/v3

Uma coleção de mocks de provedores.

Cada mock é uma imagem Docker para linux/amd64 e linux/arm64. Sobe já configurado, guarda o estado num volume e traz um painel que mostra o que a API real nunca deixa ver. Dois estão prontos hoje; mais provedores de pagamento e bancos estão a caminho.

Mock do WhatsApp

A Cloud API da Meta Graph API v23.0, roteada e validada contra o próprio arquivo OpenAPI da Meta, e um painel no estilo WhatsApp Web onde você é o usuário do outro lado.

O painel do mock do WhatsApp: uma conversa com um template com cabeçalho de imagem, corpo formatado, rodapé e botões de resposta rápida.
  • Mensagens de todos os tipos, templates com revisão, mídia, áudios de voz, confirmações de leitura.
  • Ligações com áudio WebRTC real e a permissão do usuário para ligar.
  • Empresa, WABAs e números, com o onboarding pelo código por SMS.
  • Webhooks assinados com x-hub-signature-256.

Mock do Asaas

A API v3 do Asaas, o gateway de pagamento, com as regras de negócio capturadas do sandbox real e um relógio virtual que você move na mão.

O relógio virtual do mock do Asaas: a hora e o modo do simulador, e os botões para avançar um, sete ou trinta e dois dias.
  • Clientes, Pix, boleto, cartão de crédito, parcelamento, assinatura, split.
  • Webhooks entregues no localhost, com as regras reais de retentativa.
  • Um relógio que você avança: cobranças vencem, o cartão cai em D+32.
  • Cartão salvo cobrado no vencimento, com as retentativas do Asaas.
  • Notificações ao pagador por e-mail, WhatsApp e SMS.

Próximos em pagamentos e bancos

  • Stripe
  • Rede (Itaú)
  • Pagar.me
  • C6 Bank
  • Banco Inter
  • Outras conexões bancárias

Planejados, ainda não construídos. Cada um vai manter a mesma promessa dos dois acima: os caminhos, os corpos e os webhooks da API real, uma imagem, nada para configurar na mão. O contrato que todo mock segue está em mocks/README.md.

Imagens e versões.

ImagemTags
ghcr.io/instituto-ama/whatsapp-mockUma imagem por versão. <versão> é publicada uma vez e nunca muda: fixe-a. latest é a versão mais nova, a mesma imagem.
ghcr.io/instituto-ama/asaas-mock

As imagens são públicas: docker pull não pede login. Um push na master que muda um mock roda os testes dele e o publica.