SecuAAS Docs
SecuMon

Référence API

Référence complète de l'API SecuMon v2 : authentification, rôles et les 62 points d'accès regroupés par module, avec exemples.

Vue d'ensemble

L'API SecuMon v2 est une API REST JSON. Toutes les ressources sont isolées à votre organisation : vous ne voyez et ne manipulez que vos propres données.

URL de base

EnvironnementURL de base
Productionhttps://api.secumon.secuaas.ovh/api/v2
Développementhttps://api.secumon.secuaas.dev/api/v2

Authentification

Chaque requête doit porter votre jeton Bearer de session, obtenu en vous connectant au portail :

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

Une requête sans jeton valide est rejetée. Connectez-vous au portail, récupérez votre jeton, et placez-le dans l'en-tête Authorization : c'est tout ce dont vous avez besoin.

Rôles requis

Le rôle minimal dépend de l'action :

  • Lecture (lister, détail, graphes, coûts) : tous les rôles (owner, admin, operator, viewer).
  • Écriture (créer, modifier, supprimer) sur hôtes, vérifications, politiques, pages de statut, fenêtres de maintenance, gardes, workers, étiquetage IA : owner / admin.
  • Actions sur incidents (créer, acquitter, résoudre, mises à jour, mode IA) : owner / admin / operator.
  • Lancer une vérification à la demande : owner / admin / operator.

Conventions

  • Les corps de requête et de réponse sont en JSON (Content-Type: application/json).
  • Les dates sont au format RFC3339 (2026-06-23T12:00:00Z).
  • Les identifiants sont des UUID.
  • Codes de retour usuels : 200 OK, 201 ressource créée, 204 succès sans corps, 400 requête invalide, 403 rôle insuffisant, 404 introuvable, 503 dépendance indisponible.
  • Les exemples utilisent l'hôte fictif web-prod-01 (10.0.0.12).

Hôtes

GET /hosts

Liste les hôtes. Rôle : tous. Params : active=true (optionnel).

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

Détail d'un hôte. Rôle : tous.

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

Crée un hôte. Rôle : owner/admin. Requis : 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

Modifie un hôte (champs partiels). Rôle : 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

Supprime un hôte. Rôle : owner/admin. Réponse : 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

Dernier résultat de chaque vérification de l'hôte. Rôle : tous.

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

Séries SNMP de l'hôte. Rôle : tous. Params : from, to (RFC3339, défaut : 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

Uptime ping. Rôle : tous. Params : window=24h|7d|30d (défaut 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

Logs corrélés de l'hôte. Rôle : tous. Params : from, to (max 24 h), limit (1–5000, défaut 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

Étiquette IA de tous les hôtes (séquentiel, max 200). Rôle : owner/admin. Corps optionnel : { "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

Étiquette IA d'un hôte. Rôle : 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" } }

Vérifications

GET /checks

Liste les vérifications. Rôle : tous. Params : host_id (optionnel).

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

Détail d'une vérification. Rôle : tous.

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

POST /checks

Crée une vérification. Rôle : owner/admin. Requis : 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

Modifie une vérification (champs partiels). Rôle : 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

Supprime une vérification. Rôle : owner/admin. Réponse : 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

Dernier résultat brut. Rôle : tous.

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

Force une exécution immédiate. Rôle : owner/admin/operator. Réponse : 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

Résultats agrégés d'une vérification. Rôle : tous. Params : check_id (requis), 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

Inventaire des équipements SNMP (dérivé des vérifications snmp). Rôle : tous.

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

Liste les incidents ouverts. Rôle : tous.

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 ne répond plus au ping", "severity": "critical", "status": "investigating" } ] }

GET /incidents/:id

Détail d'un incident. Rôle : tous.

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

POST /incidents

Crée un incident manuellement. Rôle : owner/admin/operator. Requis : 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": "Dégradation web-prod-01", "severity": "major" }'
{ "id": "9d8c7b6a-1234-4abc-9def-001122334455", "title": "Dégradation web-prod-01", "severity": "major", "status": "investigating", "tags": { "source": "manual" } }

POST /incidents/:id/ack

Acquitte un incident (raccourci). Rôle : 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

Acquitte un incident. Rôle : 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

Résout un incident (raccourci). Rôle : 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

Résout un incident. Rôle : 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

Ajoute une mise à jour à la timeline. Rôle : owner/admin/operator. Requis : note. Optionnel : 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 appliquée.", "status": "acknowledged" }'
{ "ok": true, "event": { "time": "2026-06-23T12:05:00Z", "action": "update", "note": "Mitigation appliquée.", "status": "acknowledged" } }

POST /incidents/:id/ai-mode

Active le mode d'analyse IA (incident critical uniquement). Rôle : owner/admin/operator. Requis : provider, justification. Optionnel : budget_usd (défaut 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": "Panne critique, analyse rapide.", "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

Désactive le mode d'analyse IA. Rôle : 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

Coût du mode d'analyse IA. Rôle : tous.

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" }

Politiques d'alerte

GET /alert-policies

Liste les politiques. Rôle : tous.

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": "Critiques → astreinte", "enabled": true, "cooldown_sec": 300 } ] }

GET /alert-policies/:id

Détail d'une politique. Rôle : tous.

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

POST /alert-policies

Crée une politique. Rôle : owner/admin. Requis : 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": "Critiques → astreinte", "conditions": { "severity": ["critical"] }, "channels": { "email": ["astreinte@example.com"] }, "cooldown_sec": 300 }'
{ "id": "7c6d5e4f-1111-4222-9333-444455556666", "name": "Critiques → astreinte", "enabled": true, "cooldown_sec": 300 }

PUT /alert-policies/:id

Modifie une politique. Rôle : owner/admin. Requis : 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": "Critiques → astreinte", "enabled": false, "cooldown_sec": 600 }'

DELETE /alert-policies/:id

Supprime une politique. Rôle : owner/admin. Réponse : 204.

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

Gardes (on-call)

GET /oncall-schedules

Liste les plannings. Rôle : tous.

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

GET /oncall-schedules/:id

Détail d'un planning + garde courante. Rôle : tous.

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": "Astreinte web" }, "current_oncall": { "name": "Alice", "email": "alice@example.com" } }

POST /oncall-schedules

Crée un planning. Rôle : owner/admin. Requis : name. Défauts : 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": "Astreinte web", "members": [ { "name": "Alice", "email": "alice@example.com" } ] }'
{ "id": "5b4a3c2d-aaaa-4bbb-9ccc-ddddeeeeffff", "name": "Astreinte web", "timezone": "America/Toronto", "rotation_type": "weekly" }

PUT /oncall-schedules/:id

Modifie un planning. Rôle : owner/admin. Réponse : 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": "Astreinte web", "timezone": "America/Toronto", "rotation_type": "weekly", "members": [ { "name": "Bob", "email": "bob@example.com" } ] }'

DELETE /oncall-schedules/:id

Supprime un planning. Rôle : owner/admin. Réponse : 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

Garde courante de tous les plannings. Rôle : tous.

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": "Astreinte web", "on_call": { "name": "Alice", "email": "alice@example.com" } } ]

Pages de statut

GET /status-pages

Liste les pages de statut. Rôle : tous.

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": "Statut des services web", "is_public": true } ] }

GET /status-pages/:id

Détail d'une page. Rôle : tous.

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

POST /status-pages

Crée une page. Rôle : owner/admin. Requis : slug, title. Défauts : 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": "Statut des services web", "is_public": true }'
{ "id": "abcd1234-5678-4abc-9def-0011aabbccdd", "slug": "web-prod", "title": "Statut des services web", "is_public": true, "show_history_days": 90 }

PUT /status-pages/:id

Modifie une page (champs partiels). Rôle : 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": "Statut — Services Web", "show_history_days": 60 }'

DELETE /status-pages/:id

Supprime une page. Rôle : owner/admin. Réponse : 204.

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

Les pages publiques (consultation anonyme) sont servies hors /api/v2 : GET /status/<slug>, GET /status/<slug>/api, GET /status/<slug>/badge/<composant>, GET /status/<slug>/rss. Voir la page Pages de statut.


Fenêtres de maintenance

GET /maintenance-windows

Liste les fenêtres. Rôle : tous.

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": "Mise à jour web-prod-01", "status": "scheduled" } ] }

GET /maintenance-windows/:id

Détail d'une fenêtre. Rôle : tous.

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

POST /maintenance-windows

Crée une fenêtre. Rôle : owner/admin. Requis : 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": "Mise à jour 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": "Mise à jour 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

Modifie une fenêtre (champs partiels). Rôle : 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

Démarre une fenêtre (scheduledactive). Rôle : 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

Termine une fenêtre (activecompleted). Rôle : 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

Annule une fenêtre (→ cancelled). Rôle : owner/admin. Réponse : 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"

Tableau de bord et statut

GET /status

Aperçu de statut (compteurs). Rôle : tous.

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

Flux temps réel (SSE) du résumé du tableau de bord. Rôle : tous.

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

Résumé du tableau de bord. Rôle : tous.

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

Posture de sécurité applicative. Rôle : tous.

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"] }

Tempêtes

GET /storms

Liste les tempêtes. Rôle : tous. Params : active=true (optionnel).

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

Liste les points de collecte. Rôle : tous.

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

Retire un point de collecte. Rôle : owner/admin. Réponse : 204.

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

Espaces de travail

GET /workspaces

Liste les espaces de travail rattachés à votre session et l'espace actif. Rôle : tous.

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" }

Si votre session ne comporte pas d'espaces de travail, la réponse est {"workspaces": [], "active_workspace_id": ""}.


Récapitulatif des 62 points d'accès

#MéthodeCheminRôle minimal
1GET/hoststous
2GET/hosts/:idtous
3POST/hostsowner/admin
4PUT/hosts/:idowner/admin
5DELETE/hosts/:idowner/admin
6GET/hosts/:id/latesttous
7GET/hosts/:id/snmp-metricstous
8GET/hosts/:id/uptimetous
9GET/hosts/:id/logstous
10POST/hosts/ai-tagowner/admin
11POST/hosts/:id/ai-tagowner/admin
12GET/checkstous
13GET/checks/:idtous
14POST/checksowner/admin
15PUT/checks/:idowner/admin
16DELETE/checks/:idowner/admin
17GET/checks/:id/last-resulttous
18POST/checks/:id/runowner/admin/operator
19GET/metrics/checkstous
20GET/snmp-devicestous
21GET/incidentstous
22GET/incidents/:idtous
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-costtous
32GET/alert-policiestous
33GET/alert-policies/:idtous
34POST/alert-policiesowner/admin
35PUT/alert-policies/:idowner/admin
36DELETE/alert-policies/:idowner/admin
37GET/oncall-schedulestous
38GET/oncall-schedules/:idtous
39POST/oncall-schedulesowner/admin
40PUT/oncall-schedules/:idowner/admin
41DELETE/oncall-schedules/:idowner/admin
42GET/oncall/currenttous
43GET/status-pagestous
44GET/status-pages/:idtous
45POST/status-pagesowner/admin
46PUT/status-pages/:idowner/admin
47DELETE/status-pages/:idowner/admin
48GET/maintenance-windowstous
49GET/maintenance-windows/:idtous
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/statustous
56GET/eventstous
57GET/dashboardtous
58GET/dashboards/app-securitytous
59GET/stormstous
60GET/workerstous
61DELETE/workers/:idowner/admin
62GET/workspacestous

On this page

Vue d'ensembleURL de baseAuthentificationRôles requisConventionsHôtesGET /hostsGET /hosts/:idPOST /hostsPUT /hosts/:idDELETE /hosts/:idGET /hosts/:id/latestGET /hosts/:id/snmp-metricsGET /hosts/:id/uptimeGET /hosts/:id/logsPOST /hosts/ai-tagPOST /hosts/:id/ai-tagVérificationsGET /checksGET /checks/:idPOST /checksPUT /checks/:idDELETE /checks/:idGET /checks/:id/last-resultPOST /checks/:id/runGET /metrics/checksSNMPGET /snmp-devicesIncidentsGET /incidentsGET /incidents/:idPOST /incidentsPOST /incidents/:id/ackPUT /incidents/:id/acknowledgePOST /incidents/:id/resolvePUT /incidents/:id/resolvePOST /incidents/:id/updatesPOST /incidents/:id/ai-modeDELETE /incidents/:id/ai-modeGET /incidents/:id/ai-costPolitiques d'alerteGET /alert-policiesGET /alert-policies/:idPOST /alert-policiesPUT /alert-policies/:idDELETE /alert-policies/:idGardes (on-call)GET /oncall-schedulesGET /oncall-schedules/:idPOST /oncall-schedulesPUT /oncall-schedules/:idDELETE /oncall-schedules/:idGET /oncall/currentPages de statutGET /status-pagesGET /status-pages/:idPOST /status-pagesPUT /status-pages/:idDELETE /status-pages/:idFenêtres de maintenanceGET /maintenance-windowsGET /maintenance-windows/:idPOST /maintenance-windowsPUT /maintenance-windows/:idPOST /maintenance-windows/:id/startPOST /maintenance-windows/:id/endPOST /maintenance-windows/:id/cancelTableau de bord et statutGET /statusGET /eventsGET /dashboardGET /dashboards/app-securityTempêtesGET /stormsWorkersGET /workersDELETE /workers/:idEspaces de travailGET /workspacesRécapitulatif des 62 points d'accès