Referência da API

Toda rota que o mock responde, do envio ao webhook: a API nativa em JSON, a compatível com a Twilio, o envio simples de uma linha e as rotas de controle que o painel e os testes usam. Abra uma operação para ver os parâmetros, o exemplo de requisição e cada resposta, erros incluídos.

Convenções

  • URL base: http://localhost:8899, a porta do container. As três APIs de envio moram na mesma raiz.
  • Sem chave de API: a API nativa aceita qualquer Bearer, a compatível com a Twilio aceita qualquer Basic — ou nenhum. O mock existe para ser chamado sem segredo.
  • Erros: a API nativa responde {"error":{"code","message","field"}}; a compatível com a Twilio usa o envelope dela, {"code","message","more_info","status"}; a simples troca o invólucro por {"status":"error","code","message"}.
  • Webhooks: uma chamada a cada mudança de status (message.status) e outra a cada resposta do aparelho (message.inbound), assinadas com x-sms-signature: sha256=<hmac> quando SMS_WEBHOOK_SECRET está definido.
  • Proteção local: toda rota, exceto /health, confere o cabeçalho Host; as que mudam o estado conferem também o Origin; o handshake de /ws e o GET /sms/send recusam uma origem estrangeira. As recusas são 403, com forbidden_host ou forbidden_origin.

O painel fica em http://localhost:8899: ele é o aparelho, e o que a sua aplicação envia aparece ali como o aparelho recebeu.

As operações

A API nativa, a compatível com a Twilio e o envio simples, com os parâmetros, os exemplos de requisição e cada resposta que elas devolvem. Filtre pelo método, pela rota ou pelo texto da operação.

Números mágicos

Os quatro últimos dígitos do destino decidem o desfecho da mensagem, para o teste não depender de sorte. O mesmo número falha em qualquer máquina, em qualquer teste.

Final do númeroDesfechoEstado finalCódigoResposta HTTP
0001Handset inalcançávelfailed30003201
0002Handset desconhecidoundelivered30005201
0003Rejeitada pela API, na hora do envio——400
0004Fica parada em sent, como se a operadora nunca confirmassesent—201
0005Filtrada pela operadorafailed30007201
qualquer outroEntrega normaldelivered—201

O número 0003 nunca vira mensagem: a API nativa e a simples respondem 400 com rejected_number, e a compatível com a Twilio responde 400 com 21211. Nos outros desfechos, o código vem no errorCode da mensagem.

As rotas do mock

As rotas que o mock usa para consigo, as que o painel e os testes chamam: responder como o aparelho, mudar um status na mão, ler e mudar os ajustes, ver e limpar o log de webhooks, semear a caixa de exemplo, limpar tudo e o feed ao vivo. Abra uma rota para ver o que ela recebe e o que responde.