Aller au contenu principal

API Admin du Gateway

Référence complète des endpoints administratifs du STOA Gateway. Ces endpoints sont utilisés par le Control Plane pour gérer les routes, les politiques et l'état d'exécution.

Authentification​

Tous les endpoints /admin/* nécessitent un Bearer token configuré comme token admin du gateway :

curl -H "Authorization: Bearer ${ADMIN_TOKEN}" \
"${STOA_GATEWAY_URL}/admin/health"
RéponseSignification
200 OKAuthentifié, requête traitée
401 UnauthorizedToken admin manquant ou invalide
503 Service UnavailableAPI admin désactivée (aucun token configuré)

Santé​

GET /admin/health​

Retourne le statut et les statistiques du gateway.

curl "${STOA_GATEWAY_URL}/admin/health" \
-H "Authorization: Bearer ${ADMIN_TOKEN}"
{
"status": "ok",
"version": "0.12.0",
"routes_count": 42,
"policies_count": 15
}

Gestion des Routes API​

POST /admin/apis​

Créer ou mettre à jour une route API (upsert).

curl -X POST "${STOA_GATEWAY_URL}/admin/apis" \
-H "Authorization: Bearer ${ADMIN_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"id": "api-123",
"name": "payments",
"tenant_id": "acme",
"path_prefix": "/apis/acme/payments",
"backend_url": "https://api.example.com",
"methods": ["GET", "POST", "PUT"],
"spec_hash": "abc123def456",
"activated": true
}'
StatutSignification
201 CreatedNouvelle route créée
200 OKRoute existante mise à jour

GET /admin/apis​

Lister toutes les routes API enregistrées.

[
{
"id": "api-123",
"name": "payments",
"tenant_id": "acme",
"path_prefix": "/apis/acme/payments",
"backend_url": "https://api.example.com",
"methods": ["GET", "POST"],
"spec_hash": "abc123",
"activated": true
}
]

GET /admin/apis/:id​

Obtenir une route API par son identifiant. Retourne 404 Not Found si la route n'existe pas.

DELETE /admin/apis/:id​

Supprimer une route API. Retourne 204 No Content en cas de succès, 404 Not Found si absente. La suppression est idempotente — supprimer une route inexistante est sans effet.


Gestion des Politiques​

POST /admin/policies​

Créer ou mettre à jour une politique (upsert). Les politiques appliquent des limites de débit, du CORS et d'autres règles aux routes API.

curl -X POST "${STOA_GATEWAY_URL}/admin/policies" \
-H "Authorization: Bearer ${ADMIN_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"id": "policy-123",
"name": "rate-limit-gold",
"policy_type": "rate_limit",
"config": {
"limit": 1000,
"window_secs": 60
},
"priority": 1,
"api_id": "api-123"
}'
StatutSignification
201 CreatedNouvelle politique créée
200 OKPolitique existante mise à jour

GET /admin/policies​

Lister toutes les politiques.

DELETE /admin/policies/:id​

Supprimer une politique. Retourne 204 No Content ou 404 Not Found.


Gestion des Circuit Breakers​

Le gateway utilise des circuit breakers pour se protéger contre les défaillances des backends. Quand un backend échoue de manière répétée, le circuit s'ouvre et les requêtes sont rejetées immédiatement plutôt que d'attendre des délais d'expiration.

GET /admin/circuit-breaker/stats​

Obtenir les statistiques du circuit breaker principal (connexion à l'API Control Plane).

{
"name": "cp-api-breaker",
"state": "closed",
"success_count": 1234,
"failure_count": 5,
"consecutive_failures": 0,
"open_count": 2,
"rejected_count": 0
}
ÉtatSignification
closedFonctionnement normal — les requêtes passent
openBackend défaillant — requêtes rejetées immédiatement
half_openTest de récupération — requêtes limitées autorisées

POST /admin/circuit-breaker/reset​

Réinitialiser le circuit breaker principal à l'état closed.

{
"status": "ok",
"message": "Circuit breaker reset to closed"
}

GET /admin/circuit-breakers​

Lister tous les circuit breakers par upstream (un par URL backend).

POST /admin/circuit-breakers/:name/reset​

Réinitialiser un circuit breaker upstream spécifique. Retourne 404 si le circuit breaker nommé n'existe pas.


Gestion du Cache​

Le gateway met en cache les validations de clés API et les réponses des outils pour réduire la latence.

GET /admin/cache/stats​

{
"hits": 523,
"misses": 127,
"entry_count": 45,
"hit_rate": 0.804
}

POST /admin/cache/clear​

Vider toutes les entrées du cache. À utiliser après les rotations de clés ou les modifications de politiques nécessitant un effet immédiat.

{
"status": "ok",
"message": "Cache cleared"
}

Gestion des Sessions​

Les sessions SSE pour les connexions au protocole MCP sont suivies par le gateway.

GET /admin/sessions/stats​

{
"active_sessions": 42,
"zombie_count": 2,
"tracked_sessions": 44
}
ChampDescription
active_sessionsSessions avec activité récente
zombie_countSessions dépassant le TTL, en attente de nettoyage
tracked_sessionsTotal des sessions en mémoire

Configuration mTLS​

GET /admin/mtls/config​

Obtenir la configuration mTLS actuelle.

{
"enabled": true,
"require_client_cert": true,
"trusted_proxies": "[redacted]"
}

GET /admin/mtls/stats​

Obtenir les statistiques de validation mTLS.

{
"total_requests": 1000,
"cert_validated": 950,
"cert_missing": 30,
"cert_invalid": 20
}

Gestion des Quotas​

GET /admin/quotas​

Lister les statistiques de quota pour tous les consumers.

[
{
"consumer_id": "user-123",
"daily_count": 450,
"daily_limit": 1000,
"monthly_count": 12500,
"monthly_limit": 50000,
"daily_remaining": 550,
"monthly_remaining": 37500
}
]

GET /admin/quotas/:consumer_id​

Obtenir les statistiques de quota pour un consumer spécifique. Retourne 404 si le consumer n'a pas de données de quota.

POST /admin/quotas/:consumer_id/reset​

Réinitialiser les compteurs de quota d'un consumer (compteurs quotidien et mensuel remis à zéro).

{
"status": "ok",
"message": "Quota reset for consumer 'user-123'"
}

Sondes de Santé​

Ces endpoints sont destinés aux sondes de vivacité et de disponibilité Kubernetes (aucune authentification requise) :

EndpointObjectif
GET /health/readySonde de disponibilité — le gateway peut traiter le trafic
GET /health/liveSonde de vivacité — le processus gateway est actif

Récapitulatif des Endpoints​

EndpointMéthodeDescription
/admin/healthGETSanté et statistiques du gateway
/admin/apisPOSTCréer/mettre à jour une route API
/admin/apisGETLister toutes les routes API
/admin/apis/:idGETObtenir une route API
/admin/apis/:idDELETESupprimer une route API
/admin/policiesPOSTCréer/mettre à jour une politique
/admin/policiesGETLister toutes les politiques
/admin/policies/:idDELETESupprimer une politique
/admin/circuit-breaker/statsGETStatistiques du CB principal
/admin/circuit-breaker/resetPOSTRéinitialiser le CB principal
/admin/circuit-breakersGETLister les CBs par upstream
/admin/circuit-breakers/:name/resetPOSTRéinitialiser un CB spécifique
/admin/cache/statsGETStatistiques du cache
/admin/cache/clearPOSTVider tout le cache
/admin/sessions/statsGETStatistiques des sessions SSE
/admin/mtls/configGETConfiguration mTLS
/admin/mtls/statsGETStatistiques mTLS
/admin/quotasGETLister les quotas des consumers
/admin/quotas/:consumer_idGETObtenir le quota d'un consumer
/admin/quotas/:consumer_id/resetPOSTRéinitialiser le quota d'un consumer
/health/readyGETSonde de disponibilité K8s
/health/liveGETSonde de vivacité K8s

Voir Aussi​