Reference API
Reference complete de l'API REST SecuSIEM pour un utilisateur connecte : authentification, recherche de logs, ingestion, alertes, incidents, sources, regles, tableaux de bord, rapports, statut et portail
Reference API SecuSIEM
Cette reference documente l'API REST de SecuSIEM dans le perimetre d'un utilisateur connecte d'une organisation cliente. Toutes les routes decrites sont limitees a votre tenant (votre organisation) et, le cas echeant, a votre espace de travail. Les chemins et parametres correspondent au comportement reel du service.
Pour une prise en main par module (vue portail), voir le Guide utilisateur.
URL de base
| Surface | Adresse |
|---|---|
| API REST | https://api.secusiem.secuaas.com |
| Ingestion OTLP gRPC | otlp.secusiem.secuaas.com:4317 |
Toutes les routes REST sont prefixees par /api/v1 (les routes du portail par /v1/portal). Sauf indication contraire, les requetes et reponses sont au format JSON (Content-Type: application/json).
Authentification
L'API s'authentifie par cle d'API, via l'en-tete HTTP X-API-Key.
| En-tete | Obligatoire | Description |
|---|---|---|
X-API-Key | Oui | Votre cle d'API tenant (fournie par votre administrateur) ou votre cle d'ingestion par espace de travail (pour l'envoi de logs uniquement). |
X-Workspace-Id | Non | Limite la requete a un espace de travail precis dont vous etes membre. En son absence, la requete porte sur l'ensemble de votre tenant. |
Le filtrage par organisation est toujours applique cote serveur : votre identifiant de tenant est injecte a partir de votre cle, vous n'avez jamais a le transmettre.
Deux types de cles. Une cle d'ingestion par espace de travail est en ecriture seule (
logs:write) : elle ne sert qu'aux endpoints d'ingestion et est refusee (403) sur les routes de lecture/gestion. Pour lire des logs, des alertes ou gerer des ressources, utilisez votre cle d'API tenant.
Exemple d'en-tetes :
-H "X-API-Key: <VOTRE_CLE_API>" \
-H "X-Workspace-Id: <UUID_ESPACE_DE_TRAVAIL>" # optionnelCodes d'erreur communs
| Code | Signification |
|---|---|
400 Bad Request | Corps ou parametre invalide (ex. requete LogQL malformee, severite inconnue). |
401 Unauthorized | Cle d'API absente ou invalide. |
403 Forbidden | Cle non autorisee pour cette route (ex. cle d'ingestion sur une route de lecture) ou espace de travail dont vous n'etes pas membre. |
404 Not Found | Ressource introuvable dans votre perimetre. |
429 Too Many Requests | Quota d'appels ou d'ingestion depasse. |
502 / 503 | Service de stockage de logs indisponible ou en erreur amont. |
Le corps d'erreur a la forme {"error": "...", "detail": "..."} (le champ detail est optionnel).
Recherche de logs
GET /api/v1/logs/query
Interroge le moteur de stockage de logs, strictement limite a votre tenant (et a votre espace de travail si l'en-tete est present).
Parametres (query)
| Parametre | Type | Defaut | Description |
|---|---|---|---|
query | string | (logs recents) | Requete LogQL restreinte. Selecteur de flux avec l'operateur d'egalite = uniquement ; labels utilisables : job, source, level, service, host, namespace_name. Ne passez pas tenant_id : il est injecte cote serveur et toute tentative est ignoree. |
start | string | dependant de since | Borne de debut, au format RFC3339. |
end | string | maintenant | Borne de fin, au format RFC3339. |
since | string | 1h | Duree relative (ex. 15m, 1h, 24h) utilisee si start/end sont absents. |
limit | entier | 100 | Nombre maximum de lignes, de 1 a 5000. |
Exemple
curl -G "https://api.secusiem.secuaas.com/api/v1/logs/query" \
-H "X-API-Key: <VOTRE_CLE_API>" \
--data-urlencode 'query={namespace_name="prod", level="error"} |= "timeout"' \
--data-urlencode "since=1h" \
--data-urlencode "limit=200"Reponse 200
{
"status": "success",
"count": 2,
"entries": [
{
"timestamp": "1718800000000000000",
"line": "connection timeout to upstream",
"labels": { "namespace_name": "prod", "level": "error" }
},
{
"timestamp": "1718800001000000000",
"line": "request timeout after 30s",
"labels": { "namespace_name": "prod", "level": "error" }
}
],
"query": "{namespace_name=\"prod\", level=\"error\"} |= \"timeout\"",
"start": "2026-06-23T10:00:00Z",
"end": "2026-06-23T11:00:00Z"
}Le champ
timestampde chaque entree est exprime en nanosecondes (format Loki).
Erreurs : 400 (requete invalide), 502 (echec de requete), 503 (stockage non configure).
GET /api/v1/logs/labels
Liste les noms de labels disponibles pour votre tenant, pour vous aider a construire vos selecteurs.
curl "https://api.secusiem.secuaas.com/api/v1/logs/labels" \
-H "X-API-Key: <VOTRE_CLE_API>"Reponse 200
{ "labels": ["job", "source", "level", "service", "host", "namespace_name"] }Ingestion de logs
Les endpoints d'ingestion acceptent vos logs (logs:write). Utilisez de preference une cle d'ingestion par espace de travail (voir Portail). Plusieurs protocoles sont exposes simultanement.
POST /api/v1/logs/ingest
Ingestion JSON generique. Maximum 1000 evenements par requete.
Corps
| Champ | Type | Description |
|---|---|---|
events[] | tableau | Liste d'evenements (1 a 1000). |
events[].source | string | Origine du log (ex. api, firewall). |
events[].level | string | Niveau (ex. info, warn, error). |
events[].message | string | Contenu du log. |
events[].labels | objet | Labels cle/valeur (optionnel). |
events[].metadata | objet | Metadonnees libres (optionnel). |
curl -X POST "https://api.secusiem.secuaas.com/api/v1/logs/ingest" \
-H "X-API-Key: <VOTRE_CLE_INGESTION>" \
-H "Content-Type: application/json" \
-d '{
"events": [
{ "source": "api", "level": "error", "message": "auth failed for user admin",
"labels": { "host": "web-01", "namespace_name": "prod" } }
]
}'Reponse 200
{ "accepted": 1, "alerts_raised": 0 }Erreurs : 400 (corps invalide, aucun evenement, ou plus de 1000 evenements), 429 (quota d'ingestion depasse).
POST /api/v1/loki/api/v1/push
Endpoint compatible Loki push (Fluent Bit, Grafana Alloy, Promtail). Le corps suit le format de push Loki standard (streams[].stream + streams[].values).
curl -X POST "https://api.secusiem.secuaas.com/api/v1/loki/api/v1/push" \
-H "X-API-Key: <VOTRE_CLE_INGESTION>" \
-H "Content-Type: application/json" \
-d '{
"streams": [
{ "stream": { "namespace_name": "prod", "level": "info" },
"values": [ ["1718800000000000000", "service started"] ] }
]
}'POST /api/v1/logs/webhook
Reception de charges utiles via webhook (JSON ou texte brut). A utiliser pour des emetteurs qui poussent un payload arbitraire.
curl -X POST "https://api.secusiem.secuaas.com/api/v1/logs/webhook" \
-H "X-API-Key: <VOTRE_CLE_INGESTION>" \
-H "Content-Type: application/json" \
-d '{ "message": "deploy completed", "level": "info" }'Compatibilite Elasticsearch (bulk)
Endpoints compatibles avec l'API Bulk d'Elasticsearch, pour reutiliser les agents et SDK de l'ecosysteme Elastic.
| Methode | Chemin | Description |
|---|---|---|
POST | /api/v1/_bulk | API Bulk (corps NDJSON). |
POST | /api/v1/:index/_bulk | API Bulk vers un index nomme. |
POST | /api/v1/:index/_doc | Indexation d'un document unique. |
curl -X POST "https://api.secusiem.secuaas.com/api/v1/_bulk" \
-H "X-API-Key: <VOTRE_CLE_INGESTION>" \
-H "Content-Type: application/x-ndjson" \
--data-binary $'{"index":{}}\n{"message":"login ok","level":"info"}\n'OpenTelemetry (OTLP)
| Transport | Adresse | Description |
|---|---|---|
| OTLP/HTTP | POST https://api.secusiem.secuaas.com/api/v1/v1/logs | Export de logs OTLP en JSON (encodage OTLP/HTTP standard). |
| OTLP/gRPC | otlp.secusiem.secuaas.com:4317 | Export de logs OTLP haute performance via gRPC. |
curl -X POST "https://api.secusiem.secuaas.com/api/v1/v1/logs" \
-H "X-API-Key: <VOTRE_CLE_INGESTION>" \
-H "Content-Type: application/json" \
-d '{
"resourceLogs": [
{ "resource": { "attributes": [ { "key": "service.name",
"value": { "stringValue": "checkout" } } ] },
"scopeLogs": [ { "logRecords": [
{ "timeUnixNano": "1718800000000000000",
"severityText": "ERROR",
"body": { "stringValue": "payment declined" } } ] } ] }
]
}'Pour l'authentification OTLP, transmettez votre cle d'ingestion via l'en-tete X-API-Key (et le metadata equivalent cote gRPC).
Alertes
Base : /api/v1/alerts.
GET /api/v1/alerts
Liste paginee des alertes levees sur vos logs.
Parametres (query)
| Parametre | Type | Defaut | Description |
|---|---|---|---|
severity | string | — | Filtre par severite (low, medium, high, critical). |
status | string | — | Filtre par statut (ex. ouvert, pris en charge, resolu). |
rule_id | string | — | Filtre par regle ayant declenche l'alerte. |
namespace | string | — | Filtre par namespace. |
since | string | — | today, week, ou un horodatage RFC3339. |
page | entier | 1 | Numero de page. |
page_size | entier | 50 | Taille de page. |
curl -G "https://api.secusiem.secuaas.com/api/v1/alerts" \
-H "X-API-Key: <VOTRE_CLE_API>" \
--data-urlencode "severity=high" \
--data-urlencode "since=today"Reponse 200
{
"alerts": [
{
"id": "alrt_01H...",
"rule_id": "ssh-bruteforce",
"severity": "high",
"status": "open",
"namespace": "prod",
"created_at": "2026-06-23T10:42:00Z"
}
],
"total": 1,
"page": 1
}GET /api/v1/alerts/:id
Detail d'une alerte. Reponse 200 : l'objet alerte complet. 404 si l'alerte n'existe pas dans votre perimetre.
curl "https://api.secusiem.secuaas.com/api/v1/alerts/alrt_01H..." \
-H "X-API-Key: <VOTRE_CLE_API>"GET /api/v1/alerts/:id/threat-matches
Correspondances de renseignement sur les menaces associees a une alerte (correlation avec des indicateurs de compromission connus).
Reponse 200
{ "alert_id": "alrt_01H...", "matches": [], "count": 0 }503 si le renseignement sur les menaces n'est pas configure.
Cycle de vie d'une alerte
| Methode | Chemin | Action |
|---|---|---|
POST ou PUT | /api/v1/alerts/:id/acknowledge | Prendre en charge l'alerte. |
POST ou PUT | /api/v1/alerts/:id/resolve | Resoudre (cloturer) l'alerte. |
PUT | /api/v1/alerts/:id/reopen | Rouvrir une alerte resolue. |
curl -X POST "https://api.secusiem.secuaas.com/api/v1/alerts/alrt_01H.../acknowledge" \
-H "X-API-Key: <VOTRE_CLE_API>"Reponse 200 : { "message": "alert acknowledged" } (resp. alert resolved, alert reopened).
POST /api/v1/alerts/:id/feedback
Consigne votre verdict d'analyse sur une alerte (disposition, correction de severite, corrections de techniques MITRE, commentaire). Ce retour ajuste la disposition de l'alerte.
curl -X POST "https://api.secusiem.secuaas.com/api/v1/alerts/alrt_01H.../feedback" \
-H "X-API-Key: <VOTRE_CLE_API>" \
-H "Content-Type: application/json" \
-d '{ "disposition": "false_positive", "comment": "trafic interne legitime" }'Incidents (cas)
Base : /api/v1/incidents. Un incident regroupe plusieurs alertes liees a un meme evenement.
GET /api/v1/incidents
Liste des incidents. Filtre optionnel par statut.
Parametres (query)
| Parametre | Type | Description |
|---|---|---|
status | string | open, investigating, contained, resolved, closed. |
curl -G "https://api.secusiem.secuaas.com/api/v1/incidents" \
-H "X-API-Key: <VOTRE_CLE_API>" \
--data-urlencode "status=open"Reponse 200
{ "incidents": [], "total": 0 }POST /api/v1/incidents
Cree un incident.
Corps
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
title | string | Oui | Titre de l'incident. |
severity | string | Non | low, medium, high, critical (medium par defaut). |
status | string | Non | Statut initial (open par defaut). |
assignee | string | Non | Responsable. |
curl -X POST "https://api.secusiem.secuaas.com/api/v1/incidents" \
-H "X-API-Key: <VOTRE_CLE_API>" \
-H "Content-Type: application/json" \
-d '{ "title": "Tentatives de brute force SSH", "severity": "high" }'Reponse 201
{
"id": "inc_01H...",
"tenant_id": "...",
"title": "Tentatives de brute force SSH",
"status": "open",
"severity": "high",
"kill_chain": [],
"timeline": []
}GET /api/v1/incidents/:id
Detail d'un incident (avec sa timeline et son eventuelle kill_chain). 404 si introuvable.
PATCH /api/v1/incidents/:id
Met a jour le titre, le statut, la severite ou le responsable. Chaque champ est optionnel ; tout changement est consigne dans la chronologie.
curl -X PATCH "https://api.secusiem.secuaas.com/api/v1/incidents/inc_01H..." \
-H "X-API-Key: <VOTRE_CLE_API>" \
-H "Content-Type: application/json" \
-d '{ "status": "investigating", "assignee": "alice" }'POST /api/v1/incidents/:id/notes
Ajoute une note d'analyste a la chronologie.
curl -X POST "https://api.secusiem.secuaas.com/api/v1/incidents/inc_01H.../notes" \
-H "X-API-Key: <VOTRE_CLE_API>" \
-H "Content-Type: application/json" \
-d '{ "note": "Source identifiee : 203.0.113.7" }'POST /api/v1/incidents/:id/alerts
Lie une alerte a l'incident.
curl -X POST "https://api.secusiem.secuaas.com/api/v1/incidents/inc_01H.../alerts" \
-H "X-API-Key: <VOTRE_CLE_API>" \
-H "Content-Type: application/json" \
-d '{ "alert_id": "alrt_01H..." }'Sources de logs
Base : /api/v1/sources. Declarez et gerez les emetteurs de logs de votre organisation.
GET /api/v1/sources
Liste des sources declarees.
Parametres (query)
| Parametre | Type | Description |
|---|---|---|
source_type | string | Filtre par type (syslog, kubernetes, application, firewall, cloud). |
protocol | string | Filtre par protocole (api, loki, syslog, s3_poll, otlp, webhook). |
enabled | bool | Filtre par etat actif/inactif. |
curl -G "https://api.secusiem.secuaas.com/api/v1/sources" \
-H "X-API-Key: <VOTRE_CLE_API>" \
--data-urlencode "source_type=firewall"Reponse 200
{ "sources": [], "count": 0 }GET /api/v1/sources/discovered
Liste les emetteurs decouverts automatiquement (ex. namespaces Kubernetes qui envoient effectivement des logs), avec leur volume.
Reponse 200 : tableau de sources decouvertes, chacune avec namespace, source_type, protocol, status, log_count.
POST /api/v1/sources
Cree une source.
Corps
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
name | string | Oui | Nom de la source. |
source_type | string | Non | syslog, kubernetes, application, firewall, cloud (application par defaut). |
protocol | string | Non | api, loki, syslog, s3_poll, otlp, webhook (api par defaut). |
pipeline_types | string[] | Non | Pipelines cibles (ops par defaut). |
config | objet | Non | Configuration specifique. |
enabled | bool | Non | Etat actif/inactif. |
workspace_id | string | Non | Espace de travail d'affectation. |
curl -X POST "https://api.secusiem.secuaas.com/api/v1/sources" \
-H "X-API-Key: <VOTRE_CLE_API>" \
-H "Content-Type: application/json" \
-d '{ "name": "Pare-feu siege", "source_type": "firewall", "protocol": "syslog",
"pipeline_types": ["siem"] }'Reponse 201 : l'objet source cree.
GET /api/v1/sources/:id, PUT /api/v1/sources/:id, DELETE /api/v1/sources/:id
Consultez, modifiez ou supprimez une source par son identifiant.
curl -X DELETE "https://api.secusiem.secuaas.com/api/v1/sources/src_01H..." \
-H "X-API-Key: <VOTRE_CLE_API>"Regles de detection
Base : /api/v1/rules. La lecture requiert le scope alerts:read ; la creation et la modification requierent rules:write.
| Methode | Chemin | Scope | Description |
|---|---|---|---|
GET | /api/v1/rules | alerts:read | Liste vos regles. |
GET | /api/v1/rules/:id | alerts:read | Detail d'une regle. |
POST | /api/v1/rules | rules:write | Cree une regle. |
PUT | /api/v1/rules/:id | rules:write | Modifie une regle. |
DELETE | /api/v1/rules/:id | rules:write | Supprime une regle. |
curl "https://api.secusiem.secuaas.com/api/v1/rules" \
-H "X-API-Key: <VOTRE_CLE_API>"GET /api/v1/detection/rules
Catalogue des regles de detection integrees (informations descriptives, sans exposer les patterns).
Reponse 200 : tableau d'objets { rule_id, name, description, severity, mitre_tactic, mitre_technique, mitre_subtechnique, threshold_count }.
Tableau de bord
GET /api/v1/dashboard/stats
Statistiques d'alertes et volumetrie de logs pour votre tenant (ou l'espace de travail selectionne). Les compteurs sont servis depuis un cache.
curl "https://api.secusiem.secuaas.com/api/v1/dashboard/stats" \
-H "X-API-Key: <VOTRE_CLE_API>"Reponse 200
{
"total_alerts": 128,
"critical_alerts": 3,
"high_alerts": 12,
"medium_alerts": 40,
"low_alerts": 73,
"open_alerts": 9,
"alerts_today": 5,
"alerts_this_week": 31,
"logs_ingested_mb": 1843.2,
"events_today": 91240,
"top_rules": [],
"severity_breakdown": { "critical": 3, "high": 12, "medium": 40, "low": 73 },
"recent_alerts": [],
"log_errors_24h": 214
}Rapports
GET /api/v1/reports/monthly
Genere le rapport mensuel d'activite de votre organisation, avec synthese redigee par l'IA.
Parametres (query)
| Parametre | Type | Defaut | Description |
|---|---|---|---|
year | entier | annee courante | Annee du rapport. |
month | entier | mois courant | Mois (1 a 12). |
format | string | json | json (exploitable par programme) ou html (mise en page lisible). |
curl -G "https://api.secusiem.secuaas.com/api/v1/reports/monthly" \
-H "X-API-Key: <VOTRE_CLE_API>" \
--data-urlencode "year=2026" \
--data-urlencode "month=5" \
--data-urlencode "format=json"En format=json, la reponse est l'objet rapport ; en format=html, le corps est la page HTML (text/html).
Erreurs : 400 (annee/mois invalides).
Statut systeme
GET /api/v1/system/status
Etat operationnel de la plateforme pour votre tenant : volumetrie de logs, stockage, infrastructure et retention. Les metriques sont servies depuis un cache.
curl "https://api.secusiem.secuaas.com/api/v1/system/status" \
-H "X-API-Key: <VOTRE_CLE_API>"Reponse 200
{
"logs": {
"total_ingested_24h": 1284000,
"total_ingested_bytes_24h": "1.8 GB",
"rate_per_second": 14.8,
"by_namespace": [
{ "namespace": "prod", "count": 980000, "bytes": "1.4 GB" }
]
},
"storage": {
"hot_bucket": { "name": "hot", "size_gb": 12.4, "objects": 320, "configured": true },
"warm_bucket": { "name": "warm", "size_gb": 88.1, "objects": 2104, "configured": true },
"archive_bucket": { "name": "archive", "size_gb": 410.0, "objects": 9870, "configured": true }
},
"infrastructure": {
"loki_status": "ok",
"grafana_status": "ok",
"fluent_bit_pods": 8,
"fluent_bit_healthy": 8,
"api_uptime_hours": 712.5
},
"retention": { "hot_days": 7, "warm_days": 90 },
"loading": false
}Le champ loading vaut true tant que le cache n'a pas ete renseigne (premier calcul en cours) ; la page repond neanmoins immediatement.
Diagnostics de sante
GET /api/v1/health/tenant
Execute une serie de verifications sur la configuration de votre tenant et retourne un statut global accompagne du detail de chaque controle.
curl "https://api.secusiem.secuaas.com/api/v1/health/tenant" \
-H "X-API-Key: <VOTRE_CLE_API>"Reponse 200
{
"tenant_id": "...",
"status": "healthy",
"checks": [
{ "name": "tenant_active", "status": "ok", "message": "Tenant status: active" }
],
"checked_at": "2026-06-23T11:00:00Z"
}Le status global vaut healthy, degraded ou critical ; chaque controle a un status ok, warning ou error.
Assistant IA sur les logs
POST /api/v1/ai/chat
Interroge vos logs en langage naturel. L'assistant construit la requete cote serveur, recupere les logs pertinents (limites a votre tenant et a votre espace de travail) et repond avec ses sources.
Corps
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
question | string | Oui | Question en langage naturel. |
namespace | string | Non | Restreint a un namespace. |
timerange | string | Non | Fenetre temporelle (ex. 15m, 1h, 6h, 24h). |
severity | string | Non | Restreint a une severite. |
curl -X POST "https://api.secusiem.secuaas.com/api/v1/ai/chat" \
-H "X-API-Key: <VOTRE_CLE_API>" \
-H "Content-Type: application/json" \
-d '{ "question": "Quelles erreurs d'\''authentification dans le namespace prod cette derniere heure ?",
"namespace": "prod", "timerange": "1h" }'Reponse 200
{
"answer": "12 echecs d'authentification, concentres sur l'utilisateur admin depuis 203.0.113.7.",
"sources": [
{ "timestamp": "2026-06-23T10:42:00Z", "pod": "auth-7c9", "namespace": "prod",
"message": "auth failed for user admin" }
],
"query_used": "{namespace_name=\"prod\"} |= \"auth failed\"",
"provider": "secuai-auto",
"latency_ms": 1820
}400 si la question est absente ; 502 en cas d'echec de requete des logs ; 503 si le stockage n'est pas configure.
Portail
Surface du portail (prefixe /v1/portal), pour la gestion de votre acces, de vos cles d'ingestion par espace de travail et de vos jetons MCP personnels.
GET /v1/portal/me/access
Retourne votre identite et la liste des espaces de travail dont vous etes membre.
curl "https://api.secusiem.secuaas.com/v1/portal/me/access" \
-H "X-API-Key: <VOTRE_CLE_API>"Reponse 200
{
"tenant_id": "...",
"tenant_slug": "mon-org",
"user_sub": "...",
"email": "alice@mon-org.com",
"workspaces": [
{ "workspace_id": "...", "slug": "prod", "name": "Production", "role": "admin" }
]
}GET /v1/portal/workspace-ingest-keys
Liste vos espaces de travail avec l'etat de leur cle d'ingestion.
curl "https://api.secusiem.secuaas.com/v1/portal/workspace-ingest-keys" \
-H "X-API-Key: <VOTRE_CLE_API>"Reponse 200
{
"workspaces": [
{ "workspace_id": "...", "name": "Production", "retrievable": true }
]
}POST /v1/portal/workspace-ingest-keys/:workspace_id/rotate
Fait pivoter la cle d'ingestion d'un de vos espaces de travail : l'ancienne est revoquee et une nouvelle est generee. La nouvelle cle n'est affichee qu'une seule fois. Necessite une session utilisateur connectee ; un espace dont vous n'etes pas membre renvoie 404.
curl -X POST "https://api.secusiem.secuaas.com/v1/portal/workspace-ingest-keys/<UUID_ESPACE>/rotate" \
-H "X-API-Key: <VOTRE_CLE_API>"Reponse 200
{ "workspace_id": "...", "ingest_key": "<CLE_BRUTE_AFFICHEE_UNE_FOIS>", "retrievable": true }Jetons MCP personnels
Base : /v1/portal/me/mcp-tokens. Gerez vos propres jetons MCP (connecteur vers un client compatible). Vous ne gerez que vos jetons ; la gestion requiert une session utilisateur connectee.
| Methode | Chemin | Description |
|---|---|---|
POST | /v1/portal/me/mcp-tokens | Cree un jeton (corps { "name": "..." }). La cle brute est affichee une seule fois. |
GET | /v1/portal/me/mcp-tokens | Liste vos jetons (sans re-afficher la cle). |
DELETE | /v1/portal/me/mcp-tokens/:id | Revoque un jeton. |
curl -X POST "https://api.secusiem.secuaas.com/v1/portal/me/mcp-tokens" \
-H "X-API-Key: <VOTRE_CLE_API>" \
-H "Content-Type: application/json" \
-d '{ "name": "Mon assistant" }'Reponse 201 (cle brute revelee une seule fois)
{
"id": "...",
"name": "Mon assistant",
"key_prefix": "mcp_...",
"kind": "user-mcp",
"scopes": ["..."],
"is_active": true,
"created_at": "2026-06-23T11:00:00Z"
}# Lister
curl "https://api.secusiem.secuaas.com/v1/portal/me/mcp-tokens" \
-H "X-API-Key: <VOTRE_CLE_API>"
# Revoquer
curl -X DELETE "https://api.secusiem.secuaas.com/v1/portal/me/mcp-tokens/<ID>" \
-H "X-API-Key: <VOTRE_CLE_API>"Reponse 200 a la revocation : { "revoked": "<ID>" }.
Guide utilisateur
Prise en main complete de SecuSIEM : portail, recherche de logs, alertes, incidents, sources, rapports, statut, settings et assistant IA
SecuAI — Plateforme IA Souveraine
Plateforme d'intelligence artificielle souveraine SaaS pour le Québec : API compatible OpenAI, hébergement 100% québécois, anonymisation des données personnelles, conformité Loi 25 et facturation en dollars canadiens.