API REST do Mantis
Versão estável: v1 · Base URL: https://app.mantis.marfin.co/api/v1
Autenticação
Toda requisição precisa de um token Bearer no header. Crie tokens em Configurações → API. Cada token tem escopos (read:assets, write:assets, etc.) e pode ser revogado.
Authorization: Bearer mtk_xxxxxxxxxxxxxxxxxxxxxxxx
GET /api/v1/assets
Lista os ativos do tenant. Suporta filtros por kind, status, paginação.
curl -H "Authorization: Bearer mtk_xxx" \ "https://app.mantis.marfin.co/api/v1/assets?kind=equipment&limit=20&offset=0"
Resposta
{
"total": 87,
"limit": 20,
"offset": 0,
"items": [
{
"id": "...",
"tag": "BB-101",
"name": "Bomba centrífuga 50 cv",
"kind": "equipment",
"status": "running",
"criticality": "A",
"created_at": "2026-05-10T18:00:00Z"
}
]
}GET /api/health
Status público da plataforma. Não requer autenticação. Útil pra monitoring.
curl https://app.mantis.marfin.co/api/health
# {"status":"ok","checks":{"db":{"ok":true,"ms":42}}}Webhooks
Configure webhooks em Configurações → Webhooks. Cada evento dispara um POST com payload JSON e header X-Mantis-Signature: sha256=... assinado com seu secret.
Eventos disponíveis
asset.created·asset.updated·asset.archivedwork_order.created·work_order.status_changed·work_order.completedplan.created·plan.materializedinventory.low_stockmanual.processed
Payload exemplo
{
"event": "work_order.created",
"timestamp": "2026-05-11T10:14:25Z",
"tenant_id": "...",
"data": {
"number": "OS-4823",
"type": "CM",
"priority": "A",
"title": "Vibração radial fora de banda",
"asset_id": "..."
}
}Validação da assinatura (Node.js)
import { createHmac } from 'node:crypto';
function verify(signature, body, secret) {
const expected = 'sha256=' + createHmac('sha256', secret).update(body).digest('hex');
return expected === signature;
}Rate limits
1.000 requisições por minuto, por token. Headers de resposta:
X-RateLimit-Limit: 1000 X-RateLimit-Remaining: 987 X-RateLimit-Reset: 1715432400
Erros
Status HTTP padrão. Body com { "error": "..." }.
401— token ausente, inválido ou expirado403— token sem o escopo necessário404— recurso não encontrado429— rate limit excedido500— erro interno
Suporte
Dúvidas: contato@marfin.co · Status: /api/health