MANTIS· DocsEntrar

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.archived
  • work_order.created · work_order.status_changed · work_order.completed
  • plan.created · plan.materialized
  • inventory.low_stock
  • manual.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 expirado
  • 403 — token sem o escopo necessário
  • 404 — recurso não encontrado
  • 429 — rate limit excedido
  • 500 — erro interno

Suporte

Dúvidas: contato@marfin.co · Status: /api/health