Aller au contenu principal

Référence stoa.yaml

stoa.yaml est le format de configuration API déclaratif de STOA Platform. Il est utilisé comme entrée pour :

  • stoactl deploy ./stoa.yaml — Déploiement piloté par CLI
  • Console UI — Import / Export via le formulaire API
  • MCP Copilot — Déploiements générés et validés par AI

Consultez ADR-045 pour la justification complète de la conception.


Exemple Minimal​

name: customer-api
version: 1.2.0

Déploie avec les paramètres par défaut : rate limit 1000 req/min, sans auth, sans filtrage d'endpoint.


Exemple Complet​

name: customer-api
version: 2.0.0
tags:
- payments
- crm

endpoints:
- path: /customers
method: GET
description: Lister tous les clients
tags: [read]
- path: /customers/{id}
method: GET
description: Obtenir un client par ID
- path: /customers
method: POST
description: Créer un nouveau client
tags: [write]

rate_limit:
requests_per_minute: 1000
burst: 50

auth:
type: oauth2
issuer: ${STOA_AUTH_URL}/realms/acme
required: true

Référence des Champs​

Champs de Niveau Supérieur​

ChampTypeObligatoireDéfautDescription
namestringOui—Identifiant unique de l'API. 255 caractères max. Utilisé comme nom de l'API dans le Control Plane.
versionstringNon1.0.0Version sémantique (ex : 1.2.0, 2.0.0-beta). Doit correspondre au pattern MAJOR.MINOR.PATCH.
tagsstring[]Non[]Tags optionnels attachés à l'API pour le filtrage et le regroupement.
endpointsobject[]Non[]Définitions d'endpoints. Si vide, tout le trafic passe sans routage au niveau endpoint.
rate_limitobjectNonnullPolitique de rate limiting. Si absent, aucun rate limit n'est appliqué.
authobjectNonnullPolitique d'authentification. Si absent, aucune authentification n'est requise.

endpoints[]​

Chaque entrée définit un endpoint à exposer via le gateway.

ChampTypeObligatoireDéfautDescription
pathstringOui—Chemin URL (ex : /customers, /users/{id}).
methodstringNonGETMéthode HTTP : GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS.
descriptionstringNon""Description lisible par un humain affichée dans la Console et le Portal.
tagsstring[]Non[]Tags au niveau endpoint pour le filtrage dans le Portal.

rate_limit​

ChampTypeObligatoireDéfautDescription
requests_per_minuteintOui—Requêtes maximum par minute. Doit être > 0.
burstintNon0Tolérance de rafale au-dessus de requests_per_minute pour les pics brefs.

Exemple :

rate_limit:
requests_per_minute: 500
burst: 100

auth​

ChampTypeObligatoireDéfautDescription
typestringOui—Mécanisme d'auth : jwt, api_key, mtls, oauth2, none.
issuerstringNon—URL de l'émetteur JWT/OAuth2 (ex : https://auth.acme.com/realms/prod).
headerstringNon—Nom d'en-tête personnalisé pour l'auth par clé API (défaut : Authorization).
requiredboolNonfalseSi true, les requêtes non authentifiées sont rejetées avec 401. Si false, l'auth est optionnelle.

Valeurs du type auth :

ValeurDescription
jwtValider les tokens JWT Bearer. Utiliser issuer pour spécifier l'endpoint JWKS.
api_keyValider les clés API via l'en-tête ou le paramètre de requête.
oauth2Introspection de token OAuth 2.0. Utiliser issuer pour le serveur d'autorisation.
mtlsValidation de certificat client TLS mutuel.
noneAucune authentification (passthrough).

Déploiement via CLI​

Déploiement basé sur fichier (recommandé)​

stoactl deploy ./stoa.yaml --env production
stoactl deploy ./stoa.yaml --env dev --watch

La CLI lit et valide stoa.yaml localement avant de soumettre au Control Plane.

Valider sans déployer​

stoactl validate ./stoa.yaml   # (planifié — voir roadmap)

Exporter la configuration d'une API existante​

stoactl get apis customer-api -o yaml > stoa.yaml

Variables d'Environnement​

Utilisez des variables shell dans les valeurs de chaînes pour éviter de coder en dur les URLs spécifiques à l'environnement :

auth:
type: oauth2
issuer: ${STOA_AUTH_URL}/realms/acme

La CLI développe les variables depuis l'environnement shell courant avant l'analyse.


Récapitulatif des Valeurs par Défaut​

ChampDéfaut quand absent
version1.0.0
endpoints[].methodGET
auth.requiredfalse
rate_limit (bloc entier)Aucun rate limiting appliqué
auth (bloc entier)Aucune auth requise

Erreurs de Validation​

La CLI valide stoa.yaml avant l'envoi à l'API et retourne des erreurs lisibles par un humain :

ErreurCause
'name' is requiredLe champ name est manquant ou vide
'name' must be 255 characters or fewerNom trop long
'version' must be a semantic versionFormat invalide (ex : v1.0 au lieu de 1.0.0)
endpoints[N].path is requiredUne entrée endpoint manque le champ path
rate_limit.requests_per_minute must be > 0Rate limit nul ou négatif
auth.type must be one of: jwt, api_key, mtls, oauth2, noneType d'auth inconnu

Voir Aussi​