Restaurar una revisión de configuración
POST /v1/config-revisions/{revision_id}:restore · permisos config:write, config:read y los permisos de lectura de los tipos de la revisión
Crea un nuevo plan que deshace la aplicación que guardó la revisión. Todavía no cambia nada: revisa el plan y luego aplícalo con POST /v1/config-plans/{plan_id}:apply. La restauración sigue el mismo camino plan → aplicación que cualquier otro cambio, así que se aplican las mismas reglas de comprobación de obsolescencia, confirmación de eliminaciones, secretos y permisos.
El destino del plan es la revisión:
- Los recursos que la aplicación actualizó o eliminó recuperan la especificación que tenían antes de la aplicación. Los recursos eliminados se vuelven a crear.
- Los recursos que la aplicación creó se eliminan. En ese caso el plan tiene
prune: truey cubre cada recurso actual de los tipos de la revisión; los recursos que la aplicación no tocó se planifican comono_op, de modo que solo se eliminan los creados. Aplicarlo necesitaconfirm_deletions, como cualquier plan con eliminaciones. - Los tipos que la revisión no cubre no se modifican.
Las revisiones no contienen valores secretos. Una conexión que se vuelve a crear necesita su secreto de cliente al aplicar el plan (requires_secret, una advertencia secret_required). Un secreto cambiado por la aplicación original no se restaura.
Solicitud
| Parámetro | Descripción |
|---|---|
revision_id |
El id de la revisión, cfgr_…, de la lista de revisiones. |
La solicitud no tiene cuerpo. Se acepta un cuerpo vacío, {} o null; cualquier campo se rechaza. Envía una cabecera Idempotency-Key para que los reintentos sean seguros.
Respuesta
201 Created con Location: /v1/config-plans/{plan_id} y Cache-Control: no-store. El cuerpo es un plan, con la misma forma que la respuesta de creación de plan. El plan es válido durante 1 hora y cuenta para el límite de frecuencia y la cuota de planes del entorno. La entrada config_plan.created del registro de gestión del entorno indica que el plan proviene de esta revisión.
Errores
| HTTP | code | Cuándo |
|---|---|---|
| 400 | malformed_request, unknown_field |
El cuerpo no está vacío, no es {} ni null. |
| 401 | unauthenticated |
La credencial falta, no es válida o está revocada. |
| 403 | insufficient_permissions |
La credencial carece de un permiso que necesita el plan; required_permissions los lista todos. |
| 404 | not_found |
La revisión no existe, pertenece a otro entorno o tiene más de 90 días. |
| 413 | config_document_too_large |
El documento del plan superaría 5.000 recursos o 10 MiB. |
| 422 | validation_failed |
La revisión ya no se puede restaurar; véase abajo. errors[].pointer apunta dentro de la revisión (/revision/<kind>/<key>/...). |
| 429 | rate_limited |
Se alcanzó el límite de frecuencia de planes o la cuota de planes del entorno; reintenta después del periodo de Retry-After. |
| 503 | service_unavailable |
La capacidad de planificación está llena o una dependencia no está disponible temporalmente; reintenta después del periodo de Retry-After. |
errors[].code |
Significado |
|---|---|
not_restorable |
/revision_id: la revisión cubre un tipo que ya no existe. |
invalid |
Una especificación guardada ya no coincide con el esquema de configuración actual. |
unresolved_reference |
Un recurso restaurado hace referencia a una key que no existirá. |
key_in_use |
La key ahora pertenece a una aplicación o API que la configuración no gestiona. |
still_referenced |
/revision/created: un recurso que creó la aplicación sigue referenciado por un recurso que permanece. |
Ejemplo
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