MantovaniTec API

Referência completa de todos os endpoints do ecossistema MantovaniTec.

Autenticação

A maioria dos endpoints exige um Bearer token JWT RS256 emitido por id.mantovanitec.com.

Authorization: Bearer <access_token>

Identity Provider

Base URL: https://id.mantovanitec.com

POST /auth/register

Cria uma nova conta de usuário. Envia e-mail de verificação.

Body (JSON)

{ "name": "string", "email": "string", "password": "string (min 8)" }

Response 201

{ "ok": true, "message": "Conta criada. Verifique seu e-mail." }
POST /auth/password/forgot

Envia link de recuperação de senha por e-mail.

{ "email": "string" }
POST /auth/password/reset
{ "token": "string", "password": "string (min 8)" }

OAuth2 / OIDC

GET /.well-known/openid-configuration

Discovery document OIDC. Sem autenticação.

GET /.well-known/jwks.json

Chave pública RSA para verificação de tokens (RS256).

GET /oauth/authorize

Inicia o fluxo Authorization Code. Redireciona para login.

Query params

response_type=code
client_id=<seu_client_id>
redirect_uri=<sua_uri>
scope=openid+profile+email
state=<random_state>
POST /oauth/token

Troca código por tokens ou renova com refresh_token.

grant_type=authorization_code
code=<code>
client_id=<id>
client_secret=<secret>
redirect_uri=<uri>

# Response
{
  "access_token": "eyJ...",
  "id_token": "eyJ...",
  "refresh_token": "...",
  "token_type": "Bearer",
  "expires_in": 3600
}
GET /oauth/userinfo

Retorna claims do usuário autenticado. Requer Bearer token.

POST /oauth/introspect

Valida um token e retorna seus metadados. Requer client credentials.

token=<token>&client_id=<id>&client_secret=<secret>

Perfil

GET /profile

Retorna dados do perfil do usuário autenticado. Requer Bearer token.

Response 200

{ "id": "uuid", "name": "string", "email": "string", "emailVerified": true, "mfaEnabled": false, "createdAt": "iso8601" }
PATCH /profile

Atualiza nome ou senha do usuário.

{ "name": "string", "currentPassword": "string", "newPassword": "string (min 8)" }
POST /profile/verify-email

Reenviar e-mail de verificação.

# Response 200
{ "ok": true, "message": "E-mail de verificação enviado." }

MFA (TOTP)

POST /mfa/setup

Inicia configuração de MFA. Retorna QR code e secret TOTP.

{ "secret": "BASE32STRING", "qrCode": "data:image/png;base64,..." }
POST /mfa/verify

Ativa MFA confirmando com um código TOTP válido.

{ "code": "123456" }

# Response 200
{ "ok": true, "backupCodes": ["xxxx-xxxx", "..."] }
DELETE /mfa

Desativa MFA. Requer código TOTP atual e senha.

{ "code": "123456", "password": "string" }

Security Platform

Base URL por serviço: https://<serviço>.mantovanitec.com

Autenticação via Bearer token do MantovaniTec ID, exceto onde indicado.

Vault — Gestão de Secrets

Base URL: https://vault.mantovanitec.com

GET /api/secrets

Lista secrets do namespace do usuário (nomes apenas, sem valores).

[{ "id": "uuid", "name": "DB_PASSWORD", "createdAt": "iso8601", "lastAccessedAt": "iso8601" }]
POST /api/secrets

Cria ou atualiza um secret. Valor é cifrado em repouso (AES-256).

{ "name": "DB_PASSWORD", "value": "secret_value", "description": "string" }
GET /api/secrets/:name

Recupera o valor de um secret. Registra acesso no audit log.

{ "name": "DB_PASSWORD", "value": "secret_value" }
DELETE /api/secrets/:name

Remove um secret permanentemente.

Security Platform

Base URL: https://siem.mantovanitec.com

POST /ingest

Ingesta eventos de segurança no SIEM. Autenticação via header.

X-SIEM-KEY: <sua_chave>
Content-Type: application/json

{
  "service": "shield | edr | manual",
  "eventType": "AUTH_FAILED | WAF_BLOCK | HONEYPOT_HIT | ...",
  "severity": "LOW | MEDIUM | HIGH | CRITICAL",
  "source": "string",
  "ip": "1.2.3.4",
  "payload": {}
}

IAM — Gestão de Identidade

Base URL: https://iam.mantovanitec.com

GET /api/groups

Lista todos os grupos de acesso. Requer Bearer token.

Response 200

[{ "id": "uuid", "name": "string", "memberCount": 12, "permissions": ["string"] }]
POST /api/groups

Cria um novo grupo de acesso.

{ "name": "string", "permissions": ["vault:read", "siem:ingest", "..."] }
POST /api/groups/:id/members

Adiciona um usuário a um grupo.

{ "userId": "uuid" }
GET /api/audit

Log de auditoria de ações de IAM. Suporta filtros por query string.

Query params

?userId=uuid&action=GROUP_ASSIGN&from=2025-01-01&limit=50

Awareness — Treinamentos

Base URL: https://awareness.mantovanitec.com

GET /api/modules

Lista módulos de treinamento disponíveis.

Response 200

[{ "id": "uuid", "title": "string", "category": "phishing|lgpd|senhas", "durationMin": 15 }]
GET /api/enrollments

Retorna progresso dos treinamentos do usuário autenticado.

[{ "moduleId": "uuid", "status": "pending|in_progress|completed", "score": 85, "completedAt": "iso8601" }]
POST /api/enrollments/:moduleId/quiz

Submete respostas do quiz de um módulo.

{ "answers": [{ "questionId": "uuid", "choice": "A" }] }

# Response 200
{ "score": 85, "passed": true, "certificate": "https://awareness.mantovanitec.com/cert/uuid" }

Backup Manager

Base URL: https://backup.mantovanitec.com

GET /api/policies

Lista políticas de backup configuradas.

[{ "id": "uuid", "name": "string", "schedule": "0 3 * * *", "retention": 30, "status": "active" }]
POST /api/policies/:id/run

Dispara um backup imediato fora do agendamento.

# Response 202
{ "jobId": "uuid", "status": "queued", "startedAt": "iso8601" }
GET /api/jobs

Histórico de execuções de backup.

?policyId=uuid&status=success|failed&limit=50

# Response 200
[{ "id": "uuid", "policyId": "uuid", "status": "success", "sizeBytes": 104857600, "duration": 42, "completedAt": "iso8601" }]
POST /api/jobs/:id/restore

Solicita restauração de um backup específico.

{ "target": "original | staging", "confirm": true }

SOAR — Orquestração e Resposta

Base URL: https://soar.mantovanitec.com

GET /api/incidents

Lista incidentes de segurança. Filtros por status e severidade.

Query params

?status=OPEN|INVESTIGATING|RESOLVED&severity=LOW|MEDIUM|HIGH|CRITICAL&limit=50

# Response 200
[{ "id": "uuid", "title": "string", "severity": "HIGH", "status": "OPEN", "source": "siem|manual", "createdAt": "iso8601" }]
POST /api/incidents

Cria um incidente manualmente.

{ "title": "string", "severity": "HIGH", "description": "string", "sourceIp": "1.2.3.4" }
PATCH /api/incidents/:id

Atualiza status ou adiciona notas a um incidente.

{ "status": "INVESTIGATING | RESOLVED", "note": "string" }
POST /api/playbooks/:id/run

Executa um playbook de resposta automática para um incidente.

{ "incidentId": "uuid" }

# Response 202
{ "executionId": "uuid", "steps": ["block_ip", "notify_team", "create_ticket"], "status": "running" }