Aller au contenu principal

Cycle de Vie des Abonnements

Comment les abonnements passent de la demande à la clé API active — avec les workflows d'approbation, les transitions d'état et le provisionnement gateway.

Vue d'Ensemble

Tout accès à une API ou un outil MCP dans STOA passe par un abonnement. Les abonnements connectent un consommateur (qui veut accéder) à une API (ce à quoi il veut accéder) via un plan (le niveau d'accès accordé).

États des Abonnements

ÉtatAccèsTransition DepuisTransition Vers
pendingAucun — en attente d'approbation[*]active, revoked
activeAccès complet à l'APIpending, suspendedsuspended, revoked, expired
suspendedBloqué temporairementactiveactive, revoked
revokedAnnulé définitivementpending, active, suspendedTerminal
expiredExpiré automatiquementactiveTerminal

Format des Clés API

Lorsqu'un abonnement est approuvé, STOA génère une clé API unique :

stoa_sk_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4
└──────┘ └──────────────────────────────────┘
prefix 32 hex characters (128 bits entropy)
VariantePréfixeUtilisation
Abonnement API RESTstoa_sk_Accès API standard via l'en-tête X-API-Key
Abonnement serveur MCPstoa_mcp_Accès aux outils MCP via gateway

Sécurité :

  • La clé API complète est retournée une seule fois à la création — stockez-la en lieu sûr
  • STOA ne stocke qu'un hash SHA-256 — la clé ne peut pas être récupérée
  • Le préfixe (stoa_sk_a1b2) est stocké pour identification dans les tableaux de bord
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.

Créer un Abonnement

Via l'API REST

curl -X POST "${STOA_API_URL}/v1/subscriptions" \
-H "Authorization: Bearer ${TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"api_id": "billing-api",
"plan_name": "gold",
"application_name": "my-payment-app"
}'

Réponse :

{
"id": "sub-uuid-123",
"status": "pending",
"api_key": "stoa_sk_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"api_key_prefix": "stoa_sk_a1b2",
"api_name": "billing-api",
"plan_name": "gold",
"created_at": "2026-02-13T10:00:00Z"
}
Sauvegardez Votre Clé API

Le champ api_key n'est retourné qu'une seule fois. Copiez-le dans un endroit sécurisé (par exemple Infisical, variable d'environnement). Il ne pourra pas être récupéré ultérieurement — seulement renouvelé.

Via le Portail Développeur

  1. Parcourez le Catalogue d'API sur portal.<YOUR_DOMAIN>
  2. Cliquez sur S'abonner sur n'importe quelle API
  3. Sélectionnez un plan (par exemple Gold, Silver, Community)
  4. Nommez votre application
  5. Cliquez sur Demander l'Accès
  6. Copiez votre clé API depuis l'écran de confirmation

Workflows d'Approbation

Approbation Manuelle (Par Défaut)

Lorsqu'un plan a requires_approval: true, les abonnements démarrent à l'état pending :

# Admin : Lister les abonnements en attente pour votre tenant
curl "${STOA_API_URL}/v1/subscriptions/tenant/${TENANT_ID}/pending" \
-H "Authorization: Bearer ${TOKEN}"

# Admin : Approuver un abonnement
curl -X POST "${STOA_API_URL}/v1/subscriptions/${SUB_ID}/approve" \
-H "Authorization: Bearer ${TOKEN}"

Auto-Approbation

Les plans peuvent définir des rôles qui contournent l'approbation manuelle :

{
"slug": "community",
"name": "Community Plan",
"requires_approval": false,
"auto_approve_roles": ["tenant-admin", "devops"]
}

Lorsque requires_approval est false, les abonnements passent directement à l'état active et la clé API est utilisable immédiatement.

Transitions d'État

Suspendre un Abonnement

Bloque temporairement l'accès (par exemple problèmes de facturation, détection d'abus) :

curl -X POST "${STOA_API_URL}/v1/subscriptions/${SUB_ID}/suspend" \
-H "Authorization: Bearer ${TOKEN}" \
-H "Content-Type: application/json" \
-d '{"reason": "Payment overdue"}'

Le consommateur reçoit une erreur 401 Unauthorized lors des appels API. La clé API n'est pas supprimée — elle peut être réactivée.

Réactiver un Abonnement

curl -X POST "${STOA_API_URL}/v1/subscriptions/${SUB_ID}/reactivate" \
-H "Authorization: Bearer ${TOKEN}"

Révoquer un Abonnement

Annule définitivement l'accès — irréversible :

curl -X POST "${STOA_API_URL}/v1/subscriptions/${SUB_ID}/revoke" \
-H "Authorization: Bearer ${TOKEN}" \
-H "Content-Type: application/json" \
-d '{"reason": "Terms of service violation"}'

Provisionnement Gateway

Lorsqu'un abonnement est approuvé, STOA provisionne la route API sur le gateway. Ce processus est suivi via un statut de provisionnement séparé :

Statut de ProvisionnementSignification
noneAucun provisionnement gateway nécessaire
pendingEn attente de provisionnement
provisioningRoute en cours de création sur le gateway
readyRoute active — trafic en cours
failedErreur de provisionnement (vérifier provisioning_error)
deprovisioningRoute en cours de suppression
deprovisionedRoute supprimée du gateway

Utiliser Votre Clé API

Une fois votre abonnement actif et le provisionnement prêt, utilisez la clé API :

curl "${STOA_GATEWAY_URL}/apis/${TENANT_ID}/${API_NAME}/v1/endpoint" \
-H "X-API-Key: stoa_sk_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"

Le gateway valide la clé, vérifie le statut de l'abonnement et applique les limites de débit du plan avant de transmettre au backend.

Plans d'Abonnement

Les plans définissent les quotas et les règles d'approbation pour les abonnements :

ChampTypeDescription
slugstringIdentifiant unique par tenant (par exemple gold)
rate_limit_per_secondintNombre maximum de requêtes par seconde
rate_limit_per_minuteintNombre maximum de requêtes par minute
daily_request_limitintNombre maximum de requêtes par jour
monthly_request_limitintNombre maximum de requêtes par mois
burst_limitintNombre maximum de requêtes simultanées
requires_approvalboolSi un administrateur doit approuver
auto_approve_roleslistRôles qui contournent l'approbation

Exemples de Plans

PlanDébit/minJournalierMensuelApprobation
Community6010 000100 000Auto
Silver30050 0001 000 000Auto
Gold1 000500 00010 000 000Manuelle
EnterprisePersonnaliséPersonnaliséPersonnaliséManuelle

Voir Aussi