Aller au contenu principal

Référence OpenAPI

L'API Control Plane est documentée en OpenAPI 3.1.0. La spécification est auto-générée à partir des définitions de routes FastAPI et maintenue à jour via CI.

Documentation Interactive

L'API sert une documentation interactive à :

FormatURLDescription
Swagger UIhttps://api.<YOUR_DOMAIN>/docsExplorateur d'API interactif
ReDochttps://api.<YOUR_DOMAIN>/redocDocumentation optimisée pour la lecture
OpenAPI JSONhttps://api.<YOUR_DOMAIN>/openapi.jsonSpécification brute

Catégories d'Endpoints

L'API organise les endpoints dans les groupes suivants :

CatégoriePréfixeEndpointsDescription
APIs/v1/apisCRUD + syncGestion du cycle de vie des APIs
Tenants/v1/tenantsCRUD + membresGestion des tenants
Abonnements/v1/subscriptionsCRUD + approuver/révoquerCycle de vie des abonnements
Consumers/v1/consumersCRUD + clésGestion des consumers
Gateways/v1/gatewaysCRUD + santéGestion des instances gateway
Déploiements/v1/deploymentsLister + promouvoirSuivi des déploiements
Environnements/v1/environmentsListerGestion des environnements
Outils/v1/toolsCRUDCatalogue d'outils MCP
Webhooks/v1/tenants/{id}/webhooksCRUD + testNotifications d'événements
Comptes de Service/v1/service-accountsCRUD + rotationAuthentification M2M
Santé/healthGETVérification de santé de la plateforme
Métriques/metricsGETMétriques Prometheus

Authentification

Tous les endpoints (sauf /health et /openapi.json) nécessitent un Bearer token :

Configure your environment

The examples below use environment variables. Set them for your STOA instance:

export STOA_API_URL="https://api.gostoa.dev"       # Replace with your domain
export STOA_AUTH_URL="https://auth.gostoa.dev" # Keycloak OIDC provider
export STOA_GATEWAY_URL="https://mcp.gostoa.dev" # MCP Gateway endpoint

Self-hosted? Replace gostoa.dev with your domain.

# Obtenir un token
TOKEN=$(curl -s -X POST "${STOA_AUTH_URL}/realms/stoa/protocol/openid-connect/token" \
-d "grant_type=password" \
-d "client_id=control-plane-api" \
-d "username=admin" \
-d "password=demo" \
| jq -r '.access_token')

# Utiliser le token
curl -s "${STOA_API_URL}/v1/apis" \
-H "Authorization: Bearer $TOKEN"

Codes de Réponse Courants

CodeSignificationQuand
200SuccèsGET, PUT, PATCH
201CrééPOST (nouvelle ressource)
204Pas de ContenuDELETE
400Requête IncorrectePayload invalide
401Non AutoriséToken manquant ou invalide
403InterditPermissions insuffisantes
404IntrouvableLa ressource n'existe pas
409ConflitRessource en double
422Non TraitableErreur de validation (avec détails)
429Trop de RequêtesLimite de débit dépassée

Format d'Erreur

Toutes les erreurs suivent un format cohérent :

{
"detail": "API not found",
"status_code": 404,
"error_code": "API_NOT_FOUND"
}

Les erreurs de validation (422) incluent des détails au niveau des champs :

{
"detail": [
{
"loc": ["body", "name"],
"msg": "field required",
"type": "value_error.missing"
}
]
}

Pagination

Les endpoints de liste supportent la pagination :

curl "${STOA_API_URL}/v1/apis?skip=0&limit=20" \
-H "Authorization: Bearer $TOKEN"
ParamètreDéfautMaxDescription
skip0--Nombre d'éléments à ignorer
limit20100Nombre d'éléments à retourner

Télécharger la Spécification

# Télécharger la spécification OpenAPI complète
curl -s "${STOA_API_URL}/openapi.json" | jq '.' > openapi.json

# Compter les endpoints
cat openapi.json | jq '.paths | length'

La spécification peut être importée dans des outils tels que Postman, Insomnia ou tout client compatible OpenAPI.

Tests Contrat

La spécification OpenAPI est validée en CI via des tests de snapshot :

# Générer et comparer (dans control-plane-api/)
pytest tests/test_openapi_contract.py -v

Tout changement d'endpoint qui modifie la spécification nécessite la mise à jour du snapshot.

Voir Aussi