AlfyChat
Langage :
Référence REST/Admin & Monitoring

Admin & Monitoring

Routes réservées aux administrateurs — stats, ban IP, monitoring des microservices et gestion des incidents.

Gateway — /api/admin/gateway

GET
/api/admin/gateway/stats

Stats rate-limiting : requêtes/min, IPs bannies, hit rate

POST
/api/admin/gateway/ban-ip

Bannir une IP — body: { ip, reason? }

DELETE
/api/admin/gateway/ban-ip/:ip

Débannir une IP

Monitoring — /api/admin/monitoring

GET
/api/admin/monitoring

Statut de tous les services + latence + historique 24h

GET
/api/admin/monitoring/service/:name

Historique d'un service — query: hours=24

GET
/api/admin/monitoring/users/chart

Graphique connexions — query: period=30min|10min|hour|day|month

Services — /api/admin/services

GET
/api/admin/services

Liste toutes les instances de microservices enregistrées

GET
/api/admin/services/:type

Instances filtrées par type (users, messages, media…)

POST
/api/admin/services

Enregistrer manuellement une instance

PATCH
/api/admin/services/:id

Activer / désactiver — body: { enabled: boolean }

DELETE
/api/admin/services/:id

Supprimer et bannir définitivement une instance

Incidents — /api/admin/status/incidents

GET
/api/admin/status/incidents

Liste des incidents — query: includeResolved=true

POST
/api/admin/status/incidents

Créer — body: { title, severity, message?, services?, status? }

PATCH
/api/admin/status/incidents/:id

Mettre à jour (résolution, update…)

DELETE
/api/admin/status/incidents/:id

Supprimer un incident

Accès admin requis

Toutes les routes /api/admin/* nécessitent un JWT avec role: "admin". Tout appel sans ce rôle retourne 403 Forbidden.

Public (sans authentification)

GET
/api/status

Statut public des services, incidents actifs et uptime 90 jours

GET
/health

Health check du gateway — { status: 'ok', uptime, connections }

GET
/stats

Statistiques temps réel — { connections, rooms }

GET /api/status
json
{
  "services": [
    { "service": "users",    "status": "up",       "responseTimeMs": 12 },
    { "service": "messages", "status": "up",       "responseTimeMs": 8  },
    { "service": "media",    "status": "degraded", "responseTimeMs": 340 }
  ],
  "incidents": [],
  "uptime": {
    "users": [ { "date": "2026-04-01", "uptime": 100 }, ... ]
  }
}

Interne — /api/internal (microservices uniquement)

POST
/api/internal/service/register

Enregistrer une instance — header: INTERNAL_SECRET — body: { id, serviceType, endpoint, domain, location, metrics }

POST
/api/internal/service/heartbeat

Heartbeat — body: { id, secret, metrics }

POST
/api/internal/service/deregister

Arrêt gracieux — body: { id, secret }

GET
/api/internal/service/list

Lister toutes les instances — header: X-Internal-Secret

Endpoints internes

Réservés aux microservices via INTERNAL_SECRET. Tout appel non autorisé retourne 401. Ne jamais exposer ce secret côté client.