Restaurer une révision de configuration
POST /v1/config-revisions/{revision_id}:restore · permissions config:write, config:read et les permissions de lecture des types de la révision
Crée un nouveau plan qui annule l'application ayant enregistré la révision. Rien ne change encore : examinez le plan, puis appliquez-le avec POST /v1/config-plans/{plan_id}:apply. Le retour en arrière passe par le même chemin plan → application que toute autre modification ; les mêmes règles de contrôle de fraîcheur, de confirmation de suppression, de secrets et de permissions s'appliquent donc.
La cible du plan est la révision :
- Les ressources que l'application a modifiées ou supprimées retrouvent la spécification qu'elles avaient avant l'application. Les ressources supprimées sont à nouveau créées.
- Les ressources que l'application a créées sont supprimées. Dans ce cas, le plan a
prune: trueet couvre chaque ressource actuelle des types de la révision ; les ressources que l'application n'a pas touchées sont planifiées enno_op, de sorte que seules les ressources créées sont supprimées. Son application exigeconfirm_deletions, comme pour tout plan avec suppressions. - Les types que la révision ne couvre pas ne sont pas touchés.
Les révisions ne contiennent aucune valeur secrète. Une connexion à nouveau créée a besoin de son secret client au moment de l'application du plan (requires_secret, un avertissement secret_required). Un secret modifié par l'application d'origine n'est pas restauré.
Requête
| Paramètre | Description |
|---|---|
revision_id |
L'identifiant de la révision, cfgr_…, issu de la liste des révisions. |
La requête n'a pas de corps. Un corps vide, {} ou null est accepté ; tout champ est rejeté. Envoyez un en-tête Idempotency-Key pour que les nouvelles tentatives soient sûres.
Réponse
201 Created avec Location: /v1/config-plans/{plan_id} et Cache-Control: no-store. Le corps est un plan, dans la même forme que la réponse de création de plan. Le plan est valide 1 heure et compte dans la limite de débit et le quota de plans de l'environnement. L'entrée config_plan.created du journal de gestion de l'environnement indique que le plan provient de cette révision.
Erreurs
| HTTP | code | Quand |
|---|---|---|
| 400 | malformed_request, unknown_field |
Le corps n'est pas vide, {} ou null. |
| 401 | unauthenticated |
L'identifiant est absent, invalide ou révoqué. |
| 403 | insufficient_permissions |
L'identifiant n'a pas une permission nécessaire au plan ; required_permissions les liste toutes. |
| 404 | not_found |
La révision n'existe pas, appartient à un autre environnement ou a plus de 90 jours. |
| 413 | config_document_too_large |
Le document du plan dépasserait 5 000 ressources ou 10 Mio. |
| 422 | validation_failed |
La révision ne peut plus être restaurée ; voir ci-dessous. errors[].pointer pointe dans la révision (/revision/<kind>/<key>/...). |
| 429 | rate_limited |
La limite de débit des plans ou le quota de plans de l'environnement a été atteint ; réessayez après la durée indiquée par Retry-After. |
| 503 | service_unavailable |
La capacité de planification est saturée ou une dépendance est temporairement indisponible ; réessayez après la durée indiquée par Retry-After. |
errors[].code |
Signification |
|---|---|
not_restorable |
/revision_id : la révision couvre un type qui n'existe plus. |
invalid |
Une spécification enregistrée ne correspond plus au schéma de configuration actuel. |
unresolved_reference |
Une ressource restaurée fait référence à une key qui n'existera pas. |
key_in_use |
La key appartient désormais à une application ou à une API que la configuration ne gère pas. |
still_referenced |
/revision/created : une ressource créée par l'application est encore référencée par une ressource conservée. |
Exemple
curl -X POST "https://api.eu.keenauth.com/v1/config-revisions/cfgr_01m4qpqtywfs7930tb6kqn5rc5:restore" \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Idempotency-Key: $(uuidgen)"
keenauth config revisions restore cfgr_01m4qpqtywfs7930tb6kqn5rc5
keenauth config apply cfgp_01m4qpqtywfs7930tb6kqn5rc5