🔐 Autenticação
Todas as requisições usam Bearer token no header Authorization. Tokens são emitidos no painel da empresa em Configurações → API.
Base URL: https://api.madssolutions.com.br
Configurações → API → Revogar.🔬 Diagnóstico
POST/diagnostico/iniciar
Inicia novo diagnóstico para uma empresa. Retorna ID que vai ser usado nos passos seguintes.
Response
📋 NF-e / NFS-e
POST/fiscal/nfse/emitir
Emite NFS-e via Focus NFe ou NFe.io (roteamento automático).
| Campo | Tipo | Obrigatório |
|---|---|---|
prestador_cnpj | string | sim |
tomador.cpf_cnpj | string | sim |
servico.codigo_municipal | string | sim |
servico.valor | decimal | sim |
🛡 Sentinela
POST/sentinela/evento
Recebe evento de câmera + faz cross-reference com PDV/estoque/histórico. Threshold 75% antes de notificar humano.
GET/sentinela/eventos
Lista eventos com filtros: ?desde=2026-04-01&tipo=furto&status=confirmado
GET/sentinela/dossie/:id
Dossiê completo de um perpetrador: histórico de eventos, frames, valor recuperável, score de reincidência.
💵 Vendas
POST/vendas/registrar
Efeitos colaterais: baixa estoque, lança no fiscal, atualiza DRE em tempo real.
📦 Estoque
GET/estoque/produtos
Filtros: ?abaixo_minimo=true&categoria=bebidas&vencendo_em=30
POST/estoque/entrada
Lança entrada de mercadoria a partir de NF-e (XML) ou manualmente.
🔔 Webhooks
Configure URL em Configurações → Webhooks. Eventos enviam POST com signature HMAC-SHA256 no header X-Mads-Signature.
| Evento | Payload contém |
|---|---|
diagnostico.concluido | id, score, top_3_oportunidades |
nfse.emitida | id, numero, valor, link_pdf |
nfse.rejeitada | id, motivo, codigo_sefaz |
sentinela.alerta_critico | id, camera, perpetrador, frame_url |
estoque.ruptura | sku, nome, ultimo_giro |
fiscal.das_vence_3d | cnpj, valor, data_venc |
Validação de signature
⚠️ Códigos de erro
| Status | Código | Significado |
|---|---|---|
| 400 | VALIDATION_ERROR | Payload inválido. Veja details no JSON de resposta. |
| 401 | AUTH_INVALID | Token ausente, expirado ou revogado. |
| 403 | TENANT_FORBIDDEN | Token não tem acesso a esse CNPJ. |
| 404 | NOT_FOUND | Recurso (id) não encontrado. |
| 409 | CONFLICT | Estado inconsistente (ex: NFS-e já emitida). |
| 429 | RATE_LIMIT | Excedeu 60 req/min. Aguarde 60s ou peça aumento. |
| 500 | SERVER_ERROR | Erro interno. Reportar com request_id do header. |
| 503 | UPSTREAM_DOWN | Focus NFe ou SEFAZ indisponíveis. Tente em 5min. |
📚 SDKs e exemplos
Em desenvolvimento. Por enquanto, qualquer cliente HTTP funciona. Curl, Postman, Insomnia, Hoppscotch — todos OK.
| Linguagem | Status |
|---|---|
| Node.js / TypeScript | ✓ disponível · @madssolutions/sdk |
| Python | beta · pip install mads-sdk |
| PHP | em breve |
| Go | em breve |
Postman collection: peça por WhatsApp