Skip to content

Référence API

Présentation

L'API CoreSight est une API REST exposée sur HTTPS. Toutes les réponses sont au format JSON.

Base URL : https://votre-serveur (ou https://votre-domaine.com)

Authentification

Toutes les routes API (sauf les routes publiques) nécessitent un token d'authentification transmis dans le header Authorization :

http
Authorization: Bearer <token>

Obtenir un token (connexion)

bash
curl -X POST https://votre-serveur/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email": "admin@coresight.io", "password": "votre-mdp"}'

Réponse :

json
{
  "token": "abc123...",
  "user": {
    "id": "1",
    "email": "admin@coresight.io",
    "name": "Admin",
    "role": "admin"
  }
}

Clés API (ingestion automatisée)

Pour les intégrations automatisées, utilisez des clés API (sans expiration) plutôt que des tokens de session.

Créez une clé depuis Mon Compte → Clés API → Générer.

bash
# Exemple avec clé API
curl -X POST https://votre-serveur/api/integrations/ingest \
  -H "Authorization: Bearer <votre-clé-api>" \
  -H "Content-Type: application/json" \
  -d '{...}'

Endpoint de santé (public)

http
GET /api/health

Réponse :

json
{
  "status": "ok",
  "message": "CoreSight backend en ligne",
  "version": "1.1.0",
  "uptime": 3600
}

Actifs

Lister les actifs

http
GET /api/assets

Paramètres de requête :

ParamètreTypeDescription
limitentierNombre de résultats (défaut: 100)
offsetentierDécalage pour la pagination
searchchaîneRecherche textuelle
typechaîneFiltrer par type

Réponse :

json
{
  "assets": [
    {
      "id": "asset-001",
      "name": "Switch-Core-01",
      "ip": "10.0.1.1",
      "type": "switch",
      "vendor": "Cisco",
      "risk_score": 3,
      "createdAt": "2026-01-15T10:00:00Z"
    }
  ],
  "total": 142
}

Créer un actif

http
POST /api/assets
Content-Type: application/json

{
  "name": "Switch-Core-01",
  "ip": "10.0.1.1",
  "type": "switch",
  "vendor": "Cisco",
  "model": "Catalyst 9300",
  "risk_score": 3,
  "site": "Paris DC"
}

Modifier un actif

http
PUT /api/assets/:id
Content-Type: application/json

{ "risk_score": 7, "os_version": "IOS-XE 17.9" }

Supprimer un actif

http
DELETE /api/assets/:id

Ingestion (import en masse)

Ingérer des actifs et relations

http
POST /api/integrations/ingest
Authorization: Bearer <clé-api>
Content-Type: application/json

Corps :

json
{
  "assets": [
    {
      "id": "ext-001",
      "name": "Switch-Core-01",
      "ip": "10.0.1.1",
      "type": "switch",
      "vendor": "Cisco",
      "vulnerabilities": [
        {
          "id": "CVE-2024-1234",
          "score": 8.5,
          "summary": "Buffer overflow in...",
          "publishedDate": "2024-03-01"
        }
      ]
    }
  ],
  "relations": [
    {
      "sourceAssetId": "ext-001",
      "targetAssetId": "ext-002",
      "type": "connects",
      "direction": "bi"
    }
  ],
  "options": {
    "mode": "merge",
    "deleteStale": false
  }
}

Modes d'ingestion :

ModeDescription
mergeMet à jour les actifs existants (par id ou ip)
replaceRemplace tout l'inventaire
appendAjoute sans vérifier les doublons

Réponse :

json
{
  "success": true,
  "stats": {
    "assetsCreated": 15,
    "assetsUpdated": 8,
    "relationsCreated": 12,
    "duration": "340ms"
  }
}

Relations

Lister les relations

http
GET /api/relations

Créer une relation

http
POST /api/relations
Content-Type: application/json

{
  "sourceAssetId": "asset-001",
  "targetAssetId": "asset-002",
  "type": "connects",
  "direction": "mono",
  "protocol": "HTTPS",
  "toPorts": "443"
}

Supprimer une relation

http
DELETE /api/relations/:id

Codes d'erreur

Code HTTPDescription
200Succès
201Ressource créée
400Requête invalide (voir error dans la réponse)
401Non authentifié (token manquant ou expiré)
403Accès refusé (rôle insuffisant)
404Ressource introuvable
409Conflit (email déjà utilisé, etc.)
429Trop de requêtes (rate limiting)
500Erreur serveur interne

Format des erreurs :

json
{
  "error": "Description lisible de l'erreur"
}

CoreSight Documentation