SecuAAS Docs
SecuMon

API reference

Complete reference for the SecuMon v2 API: authentication, roles and the 62 endpoints grouped by module, with examples.

Overview

The SecuMon v2 API is a JSON REST API. All resources are isolated to your organization: you only see and manipulate your own data.

Base URL

EnvironmentBase URL
Productionhttps://api.secumon.secuaas.ovh/api/v2
Developmenthttps://api.secumon.secuaas.dev/api/v2

Authentication

Each request must carry your session Bearer token, obtained by logging in to the portal:

Authorization: Bearer <your-token>
curl -s https://api.secumon.secuaas.ovh/api/v2/status \
  -H "Authorization: Bearer $SECUMON_TOKEN"

A request without a valid token is rejected. Log in to the portal, retrieve your token, and place it in the Authorization header: that is all you need.

Required roles

The minimum role depends on the action:

  • Read (list, detail, graphs, costs): all roles (owner, admin, operator, viewer).
  • Write (create, edit, delete) on hosts, checks, policies, status pages, maintenance windows, on-call schedules, workers, AI tagging: owner / admin.
  • Incident actions (create, acknowledge, resolve, updates, AI mode): owner / admin / operator.
  • Run a check on demand: owner / admin / operator.

Conventions

  • Request and response bodies are JSON (Content-Type: application/json).
  • Dates are in RFC3339 format (2026-06-23T12:00:00Z).
  • Identifiers are UUIDs.
  • Common return codes: 200 OK, 201 resource created, 204 success with no body, 400 invalid request, 403 insufficient role, 404 not found, 503 dependency unavailable.
  • The examples use the fictitious host web-prod-01 (10.0.0.12).

Hosts

GET /hosts

Lists hosts. Role: all. Params: active=true (optional).

curl -s "https://api.secumon.secuaas.ovh/api/v2/hosts?active=true" \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "count": 1, "hosts": [ { "id": "8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f", "name": "web-prod-01", "hostname": "10.0.0.12", "is_active": true } ] }

GET /hosts/:id

Detail of a host. Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/hosts/8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "id": "8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f", "name": "web-prod-01", "hostname": "10.0.0.12", "host_type": "server", "tags": { "env": "prod" }, "is_active": true }

POST /hosts

Creates a host. Role: owner/admin. Required: name, hostname.

curl -s -X POST https://api.secumon.secuaas.ovh/api/v2/hosts \
  -H "Authorization: Bearer $SECUMON_TOKEN" -H "Content-Type: application/json" \
  -d '{ "name": "web-prod-01", "hostname": "10.0.0.12", "host_type": "server", "tags": { "env": "prod" } }'
{ "id": "8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f", "name": "web-prod-01", "hostname": "10.0.0.12", "is_active": true, "created_at": "2026-06-23T12:00:00Z" }

PUT /hosts/:id

Edits a host (partial fields). Role: owner/admin.

curl -s -X PUT https://api.secumon.secuaas.ovh/api/v2/hosts/8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f \
  -H "Authorization: Bearer $SECUMON_TOKEN" -H "Content-Type: application/json" \
  -d '{ "is_active": false }'
{ "id": "8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f", "name": "web-prod-01", "is_active": false, "updated_at": "2026-06-23T12:30:00Z" }

DELETE /hosts/:id

Deletes a host. Role: owner/admin. Response: 204.

curl -s -X DELETE https://api.secumon.secuaas.ovh/api/v2/hosts/8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f \
  -H "Authorization: Bearer $SECUMON_TOKEN"

GET /hosts/:id/latest

Latest result of each check of the host. Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/hosts/8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f/latest \
  -H "Authorization: Bearer $SECUMON_TOKEN"
[ { "check_id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d", "time": "2026-06-23T12:01:30Z", "status": 0, "latency_ms": 1.5, "output": "pong 1.5ms", "error_msg": "" } ]

GET /hosts/:id/snmp-metrics

SNMP series of the host. Role: all. Params: from, to (RFC3339, default: 6 h).

curl -s "https://api.secumon.secuaas.ovh/api/v2/hosts/8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f/snmp-metrics" \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "checks": [ { "check_id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d", "check_name": "snmp web-prod-01", "points": [] } ] }

GET /hosts/:id/uptime

Ping uptime. Role: all. Params: window=24h|7d|30d (default 24h).

curl -s "https://api.secumon.secuaas.ovh/api/v2/hosts/8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f/uptime?window=7d" \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "uptime_pct": 99.87, "samples": 10080, "window": "7d" }

GET /hosts/:id/logs

Correlated logs of the host. Role: all. Params: from, to (max 24 h), limit (1–5000, default 100).

curl -s "https://api.secumon.secuaas.ovh/api/v2/hosts/8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f/logs?limit=50" \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "enabled": true, "count": 0, "entries": [] }

POST /hosts/ai-tag

AI tagging of all hosts (sequential, max 200). Role: owner/admin. Optional body: { "active_only": true }.

curl -s -X POST https://api.secumon.secuaas.ovh/api/v2/hosts/ai-tag \
  -H "Authorization: Bearer $SECUMON_TOKEN" -H "Content-Type: application/json" \
  -d '{ "active_only": true }'
{ "tagged": 1, "failed": 0, "results": [ { "host_id": "8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f", "status": "ok", "ai_tags": { "role": "web-server" }, "confidence": 0.82 } ] }

POST /hosts/:id/ai-tag

AI tagging of a single host. Role: owner/admin.

curl -s -X POST https://api.secumon.secuaas.ovh/api/v2/hosts/8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f/ai-tag \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "host": { "id": "8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f", "name": "web-prod-01" }, "ai_tags": { "role": "web-server" }, "confidence": 0.82, "cost_usd": 0.0004, "tags": { "env": "prod", "ai:role": "web-server" } }

Checks

GET /checks

Lists checks. Role: all. Params: host_id (optional).

curl -s "https://api.secumon.secuaas.ovh/api/v2/checks?host_id=8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f" \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "count": 1, "checks": [ { "id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d", "host_id": "8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f", "name": "ping web-prod-01", "check_type": "ping", "interval_sec": 60, "enabled": true } ] }

GET /checks/:id

Detail of a check. Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/checks/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d \
  -H "Authorization: Bearer $SECUMON_TOKEN"

POST /checks

Creates a check. Role: owner/admin. Required: host_id, name, check_type.

curl -s -X POST https://api.secumon.secuaas.ovh/api/v2/checks \
  -H "Authorization: Bearer $SECUMON_TOKEN" -H "Content-Type: application/json" \
  -d '{ "host_id": "8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f", "name": "ping web-prod-01", "check_type": "ping", "config": { "host": "10.0.0.12" }, "interval_sec": 60, "timeout_sec": 10 }'
{ "id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d", "host_id": "8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f", "name": "ping web-prod-01", "check_type": "ping", "interval_sec": 60, "timeout_sec": 10, "enabled": true }

PUT /checks/:id

Edits a check (partial fields). Role: owner/admin.

curl -s -X PUT https://api.secumon.secuaas.ovh/api/v2/checks/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d \
  -H "Authorization: Bearer $SECUMON_TOKEN" -H "Content-Type: application/json" \
  -d '{ "interval_sec": 120, "enabled": false }'

DELETE /checks/:id

Deletes a check. Role: owner/admin. Response: 204.

curl -s -X DELETE https://api.secumon.secuaas.ovh/api/v2/checks/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d \
  -H "Authorization: Bearer $SECUMON_TOKEN"

GET /checks/:id/last-result

Latest raw result. Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/checks/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d/last-result \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "check_id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d", "host_id": "8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f", "time": "2026-06-23T12:01:30Z", "status": 0, "latency_ms": 1.5, "output": "pong 1.5ms", "error_msg": "" }

POST /checks/:id/run

Forces an immediate run. Role: owner/admin/operator. Response: 202.

curl -s -X POST https://api.secumon.secuaas.ovh/api/v2/checks/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d/run \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "queued": true, "check_id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d", "run_id": "c0ffee00-1234-4abc-9def-0123456789ab" }

GET /metrics/checks

Aggregated results of a check. Role: all. Params: check_id (required), from, to, granularity (raw|1min|5min|1h|1d).

curl -s "https://api.secumon.secuaas.ovh/api/v2/metrics/checks?check_id=1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d&granularity=5min" \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "check_id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d", "from": "2026-06-23T11:00:00Z", "to": "2026-06-23T12:00:00Z", "granularity": "5min", "count": 12, "results": [] }

SNMP

GET /snmp-devices

Inventory of SNMP devices (derived from snmp checks). Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/snmp-devices \
  -H "Authorization: Bearer $SECUMON_TOKEN"
[ { "id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d", "host_id": "8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f", "name": "snmp web-prod-01", "hostname": "10.0.0.12", "metrics": {} } ]

Incidents

GET /incidents

Lists open incidents. Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/incidents \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "count": 1, "incidents": [ { "id": "9d8c7b6a-1234-4abc-9def-001122334455", "title": "web-prod-01 no longer responds to ping", "severity": "critical", "status": "investigating" } ] }

GET /incidents/:id

Detail of an incident. Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/incidents/9d8c7b6a-1234-4abc-9def-001122334455 \
  -H "Authorization: Bearer $SECUMON_TOKEN"

POST /incidents

Creates an incident manually. Role: owner/admin/operator. Required: title.

curl -s -X POST https://api.secumon.secuaas.ovh/api/v2/incidents \
  -H "Authorization: Bearer $SECUMON_TOKEN" -H "Content-Type: application/json" \
  -d '{ "title": "web-prod-01 degradation", "severity": "major" }'
{ "id": "9d8c7b6a-1234-4abc-9def-001122334455", "title": "web-prod-01 degradation", "severity": "major", "status": "investigating", "tags": { "source": "manual" } }

POST /incidents/:id/ack

Acknowledges an incident (shortcut). Role: owner/admin/operator.

curl -s -X POST https://api.secumon.secuaas.ovh/api/v2/incidents/9d8c7b6a-1234-4abc-9def-001122334455/ack \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "status": "acknowledged" }

PUT /incidents/:id/acknowledge

Acknowledges an incident. Role: owner/admin/operator.

curl -s -X PUT https://api.secumon.secuaas.ovh/api/v2/incidents/9d8c7b6a-1234-4abc-9def-001122334455/acknowledge \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "status": "acknowledged" }

POST /incidents/:id/resolve

Resolves an incident (shortcut). Role: owner/admin/operator.

curl -s -X POST https://api.secumon.secuaas.ovh/api/v2/incidents/9d8c7b6a-1234-4abc-9def-001122334455/resolve \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "status": "resolved", "resolved_at": "2026-06-23T12:10:00Z" }

PUT /incidents/:id/resolve

Resolves an incident. Role: owner/admin/operator.

curl -s -X PUT https://api.secumon.secuaas.ovh/api/v2/incidents/9d8c7b6a-1234-4abc-9def-001122334455/resolve \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "status": "resolved", "resolved_at": "2026-06-23T12:10:00Z" }

POST /incidents/:id/updates

Adds an update to the timeline. Role: owner/admin/operator. Required: note. Optional: status.

curl -s -X POST https://api.secumon.secuaas.ovh/api/v2/incidents/9d8c7b6a-1234-4abc-9def-001122334455/updates \
  -H "Authorization: Bearer $SECUMON_TOKEN" -H "Content-Type: application/json" \
  -d '{ "note": "Mitigation applied.", "status": "acknowledged" }'
{ "ok": true, "event": { "time": "2026-06-23T12:05:00Z", "action": "update", "note": "Mitigation applied.", "status": "acknowledged" } }

POST /incidents/:id/ai-mode

Enables AI analysis mode (critical incident only). Role: owner/admin/operator. Required: provider, justification. Optional: budget_usd (default 50, max 200), operator.

curl -s -X POST https://api.secumon.secuaas.ovh/api/v2/incidents/9d8c7b6a-1234-4abc-9def-001122334455/ai-mode \
  -H "Authorization: Bearer $SECUMON_TOKEN" -H "Content-Type: application/json" \
  -d '{ "provider": "claude", "justification": "Critical outage, fast analysis.", "budget_usd": 50 }'
{ "incident_id": "9d8c7b6a-1234-4abc-9def-001122334455", "provider": "anthropic", "budget_usd": 50, "started_at": "2026-06-23T12:06:00Z", "active": true }

DELETE /incidents/:id/ai-mode

Disables AI analysis mode. Role: owner/admin/operator.

curl -s -X DELETE https://api.secumon.secuaas.ovh/api/v2/incidents/9d8c7b6a-1234-4abc-9def-001122334455/ai-mode \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "incident_id": "9d8c7b6a-1234-4abc-9def-001122334455", "total_usd": 3.42, "status": "ended" }

GET /incidents/:id/ai-cost

Cost of AI analysis mode. Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/incidents/9d8c7b6a-1234-4abc-9def-001122334455/ai-cost \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "incident_id": "9d8c7b6a-1234-4abc-9def-001122334455", "spent_usd": 3.42, "budget_usd": 50, "active": true, "started_at": "2026-06-23T12:06:00Z" }

Alert policies

GET /alert-policies

Lists policies. Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/alert-policies \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "count": 1, "policies": [ { "id": "7c6d5e4f-1111-4222-9333-444455556666", "name": "Critical → on-call", "enabled": true, "cooldown_sec": 300 } ] }

GET /alert-policies/:id

Detail of a policy. Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/alert-policies/7c6d5e4f-1111-4222-9333-444455556666 \
  -H "Authorization: Bearer $SECUMON_TOKEN"

POST /alert-policies

Creates a policy. Role: owner/admin. Required: name.

curl -s -X POST https://api.secumon.secuaas.ovh/api/v2/alert-policies \
  -H "Authorization: Bearer $SECUMON_TOKEN" -H "Content-Type: application/json" \
  -d '{ "name": "Critical → on-call", "conditions": { "severity": ["critical"] }, "channels": { "email": ["oncall@example.com"] }, "cooldown_sec": 300 }'
{ "id": "7c6d5e4f-1111-4222-9333-444455556666", "name": "Critical → on-call", "enabled": true, "cooldown_sec": 300 }

PUT /alert-policies/:id

Edits a policy. Role: owner/admin. Required: name.

curl -s -X PUT https://api.secumon.secuaas.ovh/api/v2/alert-policies/7c6d5e4f-1111-4222-9333-444455556666 \
  -H "Authorization: Bearer $SECUMON_TOKEN" -H "Content-Type: application/json" \
  -d '{ "name": "Critical → on-call", "enabled": false, "cooldown_sec": 600 }'

DELETE /alert-policies/:id

Deletes a policy. Role: owner/admin. Response: 204.

curl -s -X DELETE https://api.secumon.secuaas.ovh/api/v2/alert-policies/7c6d5e4f-1111-4222-9333-444455556666 \
  -H "Authorization: Bearer $SECUMON_TOKEN"

On-call

GET /oncall-schedules

Lists schedules. Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/oncall-schedules \
  -H "Authorization: Bearer $SECUMON_TOKEN"
[ { "id": "5b4a3c2d-aaaa-4bbb-9ccc-ddddeeeeffff", "name": "Web on-call", "timezone": "America/Toronto", "rotation_type": "weekly" } ]

GET /oncall-schedules/:id

Detail of a schedule + current on-call. Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/oncall-schedules/5b4a3c2d-aaaa-4bbb-9ccc-ddddeeeeffff \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "schedule": { "id": "5b4a3c2d-aaaa-4bbb-9ccc-ddddeeeeffff", "name": "Web on-call" }, "current_oncall": { "name": "Alice", "email": "alice@example.com" } }

POST /oncall-schedules

Creates a schedule. Role: owner/admin. Required: name. Defaults: timezone=America/Toronto, rotation_type=weekly.

curl -s -X POST https://api.secumon.secuaas.ovh/api/v2/oncall-schedules \
  -H "Authorization: Bearer $SECUMON_TOKEN" -H "Content-Type: application/json" \
  -d '{ "name": "Web on-call", "members": [ { "name": "Alice", "email": "alice@example.com" } ] }'
{ "id": "5b4a3c2d-aaaa-4bbb-9ccc-ddddeeeeffff", "name": "Web on-call", "timezone": "America/Toronto", "rotation_type": "weekly" }

PUT /oncall-schedules/:id

Edits a schedule. Role: owner/admin. Response: 204.

curl -s -X PUT https://api.secumon.secuaas.ovh/api/v2/oncall-schedules/5b4a3c2d-aaaa-4bbb-9ccc-ddddeeeeffff \
  -H "Authorization: Bearer $SECUMON_TOKEN" -H "Content-Type: application/json" \
  -d '{ "name": "Web on-call", "timezone": "America/Toronto", "rotation_type": "weekly", "members": [ { "name": "Bob", "email": "bob@example.com" } ] }'

DELETE /oncall-schedules/:id

Deletes a schedule. Role: owner/admin. Response: 204.

curl -s -X DELETE https://api.secumon.secuaas.ovh/api/v2/oncall-schedules/5b4a3c2d-aaaa-4bbb-9ccc-ddddeeeeffff \
  -H "Authorization: Bearer $SECUMON_TOKEN"

GET /oncall/current

Current on-call across all schedules. Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/oncall/current \
  -H "Authorization: Bearer $SECUMON_TOKEN"
[ { "schedule_id": "5b4a3c2d-aaaa-4bbb-9ccc-ddddeeeeffff", "schedule_name": "Web on-call", "on_call": { "name": "Alice", "email": "alice@example.com" } } ]

Status pages

GET /status-pages

Lists status pages. Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/status-pages \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "count": 1, "status_pages": [ { "id": "abcd1234-5678-4abc-9def-0011aabbccdd", "slug": "web-prod", "title": "Web services status", "is_public": true } ] }

GET /status-pages/:id

Detail of a page. Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/status-pages/abcd1234-5678-4abc-9def-0011aabbccdd \
  -H "Authorization: Bearer $SECUMON_TOKEN"

POST /status-pages

Creates a page. Role: owner/admin. Required: slug, title. Defaults: is_public=true, show_history_days=90.

curl -s -X POST https://api.secumon.secuaas.ovh/api/v2/status-pages \
  -H "Authorization: Bearer $SECUMON_TOKEN" -H "Content-Type: application/json" \
  -d '{ "slug": "web-prod", "title": "Web services status", "is_public": true }'
{ "id": "abcd1234-5678-4abc-9def-0011aabbccdd", "slug": "web-prod", "title": "Web services status", "is_public": true, "show_history_days": 90 }

PUT /status-pages/:id

Edits a page (partial fields). Role: owner/admin.

curl -s -X PUT https://api.secumon.secuaas.ovh/api/v2/status-pages/abcd1234-5678-4abc-9def-0011aabbccdd \
  -H "Authorization: Bearer $SECUMON_TOKEN" -H "Content-Type: application/json" \
  -d '{ "title": "Status — Web Services", "show_history_days": 60 }'

DELETE /status-pages/:id

Deletes a page. Role: owner/admin. Response: 204.

curl -s -X DELETE https://api.secumon.secuaas.ovh/api/v2/status-pages/abcd1234-5678-4abc-9def-0011aabbccdd \
  -H "Authorization: Bearer $SECUMON_TOKEN"

The public pages (anonymous consultation) are served outside /api/v2: GET /status/<slug>, GET /status/<slug>/api, GET /status/<slug>/badge/<component>, GET /status/<slug>/rss. See the Status pages page.


Maintenance windows

GET /maintenance-windows

Lists windows. Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/maintenance-windows \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "count": 1, "maintenance_windows": [ { "id": "f0f1f2f3-1234-4abc-9def-aabbccddeeff", "title": "Update web-prod-01", "status": "scheduled" } ] }

GET /maintenance-windows/:id

Detail of a window. Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/maintenance-windows/f0f1f2f3-1234-4abc-9def-aabbccddeeff \
  -H "Authorization: Bearer $SECUMON_TOKEN"

POST /maintenance-windows

Creates a window. Role: owner/admin. Required: title, start_time, end_time (RFC3339).

curl -s -X POST https://api.secumon.secuaas.ovh/api/v2/maintenance-windows \
  -H "Authorization: Bearer $SECUMON_TOKEN" -H "Content-Type: application/json" \
  -d '{ "title": "Update web-prod-01", "start_time": "2026-06-24T02:00:00Z", "end_time": "2026-06-24T03:00:00Z", "suppress_alerts": true, "affected_hosts": ["8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f"] }'
{ "id": "f0f1f2f3-1234-4abc-9def-aabbccddeeff", "title": "Update web-prod-01", "start_time": "2026-06-24T02:00:00Z", "end_time": "2026-06-24T03:00:00Z", "suppress_alerts": true, "notify_subscribers": true, "status": "scheduled" }

PUT /maintenance-windows/:id

Edits a window (partial fields). Role: owner/admin.

curl -s -X PUT https://api.secumon.secuaas.ovh/api/v2/maintenance-windows/f0f1f2f3-1234-4abc-9def-aabbccddeeff \
  -H "Authorization: Bearer $SECUMON_TOKEN" -H "Content-Type: application/json" \
  -d '{ "end_time": "2026-06-24T03:30:00Z" }'

POST /maintenance-windows/:id/start

Starts a window (scheduledactive). Role: owner/admin.

curl -s -X POST https://api.secumon.secuaas.ovh/api/v2/maintenance-windows/f0f1f2f3-1234-4abc-9def-aabbccddeeff/start \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "id": "f0f1f2f3-1234-4abc-9def-aabbccddeeff", "status": "active" }

POST /maintenance-windows/:id/end

Ends a window (activecompleted). Role: owner/admin.

curl -s -X POST https://api.secumon.secuaas.ovh/api/v2/maintenance-windows/f0f1f2f3-1234-4abc-9def-aabbccddeeff/end \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "id": "f0f1f2f3-1234-4abc-9def-aabbccddeeff", "status": "completed" }

POST /maintenance-windows/:id/cancel

Cancels a window (→ cancelled). Role: owner/admin. Response: 204.

curl -s -X POST https://api.secumon.secuaas.ovh/api/v2/maintenance-windows/f0f1f2f3-1234-4abc-9def-aabbccddeeff/cancel \
  -H "Authorization: Bearer $SECUMON_TOKEN"

Dashboard and status

GET /status

Status overview (counters). Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/status \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "hosts": { "total": 12, "active": 11 }, "checks": { "total": 34, "enabled": 32, "failing": 1, "failing_pct": 3.1 }, "active_incidents": 2, "active_storms": 0, "workers": 2 }

GET /events

Real-time feed (SSE) of the dashboard summary. Role: all.

curl -N https://api.secumon.secuaas.ovh/api/v2/events \
  -H "Authorization: Bearer $SECUMON_TOKEN"
data: {"hosts_total":12,"checks_enabled":32,"incidents_open":2,"recent_incidents":[]}

: ping

GET /dashboard

Dashboard summary. Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/dashboard \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "hosts_total": 12, "checks_enabled": 34, "incidents_open": 2, "recent_incidents": [] }

GET /dashboards/app-security

Application security posture. Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/dashboards/app-security \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "generated_at": "2026-06-23T12:00:00Z", "projects": [], "top_findings": [], "trend_30d": [], "totals_by_severity": {}, "totals_by_status": {}, "sub_categories": ["dependency_vulnerabilities", "container_image_hygiene", "runtime_compromise", "network_security_posture"] }

Storms

GET /storms

Lists storms. Role: all. Params: active=true (optional).

curl -s "https://api.secumon.secuaas.ovh/api/v2/storms?active=true" \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "count": 1, "storms": [ { "id": "e1e2e3e4-1234-4abc-9def-aabbccddeeff", "started_at": "2026-06-23T11:58:00Z", "total_alerts": 14, "affected_hosts": 3, "affected_checks": 9, "root_cause_type": "network", "confidence": 0.88, "status": "active" } ] }

Workers

GET /workers

Lists collection points. Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/workers \
  -H "Authorization: Bearer $SECUMON_TOKEN"
[ { "id": "9a8b7c6d-1234-4abc-9def-aabbccddeeff", "name": "collecteur-bhs-1", "location": "OVH BHS", "status": "active", "checks_executed": 0, "last_heartbeat": "2026-06-23T12:00:30Z" } ]

DELETE /workers/:id

Removes a collection point. Role: owner/admin. Response: 204.

curl -s -X DELETE https://api.secumon.secuaas.ovh/api/v2/workers/9a8b7c6d-1234-4abc-9def-aabbccddeeff \
  -H "Authorization: Bearer $SECUMON_TOKEN"

Workspaces

GET /workspaces

Lists the workspaces attached to your session and the active workspace. Role: all.

curl -s https://api.secumon.secuaas.ovh/api/v2/workspaces \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "workspaces": [ { "workspace_id": "81cdc29b-541f-4274-97d8-c743f303a205", "slug": "engineering", "name": "Engineering", "role": "admin" } ], "active_workspace_id": "81cdc29b-541f-4274-97d8-c743f303a205" }

If your session has no workspaces, the response is {"workspaces": [], "active_workspace_id": ""}.


Summary of the 62 endpoints

#MethodPathMinimum role
1GET/hostsall
2GET/hosts/:idall
3POST/hostsowner/admin
4PUT/hosts/:idowner/admin
5DELETE/hosts/:idowner/admin
6GET/hosts/:id/latestall
7GET/hosts/:id/snmp-metricsall
8GET/hosts/:id/uptimeall
9GET/hosts/:id/logsall
10POST/hosts/ai-tagowner/admin
11POST/hosts/:id/ai-tagowner/admin
12GET/checksall
13GET/checks/:idall
14POST/checksowner/admin
15PUT/checks/:idowner/admin
16DELETE/checks/:idowner/admin
17GET/checks/:id/last-resultall
18POST/checks/:id/runowner/admin/operator
19GET/metrics/checksall
20GET/snmp-devicesall
21GET/incidentsall
22GET/incidents/:idall
23POST/incidentsowner/admin/operator
24POST/incidents/:id/ackowner/admin/operator
25PUT/incidents/:id/acknowledgeowner/admin/operator
26POST/incidents/:id/resolveowner/admin/operator
27PUT/incidents/:id/resolveowner/admin/operator
28POST/incidents/:id/updatesowner/admin/operator
29POST/incidents/:id/ai-modeowner/admin/operator
30DELETE/incidents/:id/ai-modeowner/admin/operator
31GET/incidents/:id/ai-costall
32GET/alert-policiesall
33GET/alert-policies/:idall
34POST/alert-policiesowner/admin
35PUT/alert-policies/:idowner/admin
36DELETE/alert-policies/:idowner/admin
37GET/oncall-schedulesall
38GET/oncall-schedules/:idall
39POST/oncall-schedulesowner/admin
40PUT/oncall-schedules/:idowner/admin
41DELETE/oncall-schedules/:idowner/admin
42GET/oncall/currentall
43GET/status-pagesall
44GET/status-pages/:idall
45POST/status-pagesowner/admin
46PUT/status-pages/:idowner/admin
47DELETE/status-pages/:idowner/admin
48GET/maintenance-windowsall
49GET/maintenance-windows/:idall
50POST/maintenance-windowsowner/admin
51PUT/maintenance-windows/:idowner/admin
52POST/maintenance-windows/:id/startowner/admin
53POST/maintenance-windows/:id/endowner/admin
54POST/maintenance-windows/:id/cancelowner/admin
55GET/statusall
56GET/eventsall
57GET/dashboardall
58GET/dashboards/app-securityall
59GET/stormsall
60GET/workersall
61DELETE/workers/:idowner/admin
62GET/workspacesall

On this page