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
namestringOuiIdentifiant 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
pathstringOuiChemin 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_minuteintOuiRequê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
typestringOuiMécanisme d'auth : jwt, api_key, mtls, oauth2, none.
issuerstringNonURL de l'émetteur JWT/OAuth2 (ex : https://auth.acme.com/realms/prod).
headerstringNonNom 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