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