# Volver a una versión anterior

> Restaura la configuración de una versión anterior como una versión nueva, y qué pasa con los certificados, los clientes y los grupos de nodos.

Volver a una versión restaura la configuración guardada en ella: los registros de la zona (con sus ids originales), sus ajustes de borde y sus reglas. Nunca borra historial. Crea una versión **nueva**, la actual más uno, con la acción `zone.revert` y `restored_from` apuntando a la versión restaurada. Para deshacerlo, vuelve atrás otra vez.

Necesitas el rol **Técnico** o superior en la zona.

## Volver atrás

**Panel**

1. Abre el dominio y ve a **Cambios → Historial**.
2. Busca la versión a la que quieres volver y elige **Volver**.
3. El diálogo explica lo que va a pasar y propone el motivo `Volver a la versión N`; cámbialo si quieres y confirma.
4. Si algún sitio se fuera a quedar sin certificado válido, el panel los enumera y te pide que confirmes otra vez.
**CLI**

```sh
openwaf-cloud ctl zones revert example.com 41 --reason "Deshacer el cambio de nivel del WAF" --dry-run
openwaf-cloud ctl zones revert example.com 41 --reason "Deshacer el cambio de nivel del WAF" --wait
```
La CLI simula la vuelta atrás, enseña las diferencias entre la versión actual y la restaurada y pide confirmación. Con `--wait` espera después a que todos los nodos de borde tengan la versión nueva.
**API**

```sh
curl -sS -X POST "https://dash.openwaf.dev/v1/orgs/$ORG/zones/$ZONE/revert" \
  -H "Authorization: Bearer $OPENWAF_TOKEN" \
  -H "X-Change-Reason: Deshacer el cambio de nivel del WAF" \
  -H 'If-Match: "44"' \
  -H "Content-Type: application/json" \
  -d '{"to_version": 41, "allow_missing_certs": false}'
```
Aquí `If-Match` con la versión actual de la zona es **obligatorio** (sin él, `428 if_match_required`). Añade `?dry_run=1` para ver antes el plan. La respuesta lleva `version` (la nueva), `restored_from`, `diff` y `warnings`.
**MCP**

Pide a tu asistente que vuelva la zona a una versión. Llama a `revert_zone` con `to_version`, te enseña el plan y solo lo aplica cuando confirmas.


## Certificados

Los certificados se versionan solo por referencia, así que volver atrás no los restaura: la zona conserva los certificados que tiene ahora. En las diferencias aparecen aparte, como información.

Si un sitio que existe en la versión que restauras se fuera a quedar sin certificado válido, la vuelta atrás se rechaza con `409 missing_certs` y la lista de nombres, y no se aplica nada. Para volver atrás igualmente:

- CLI: añade `--allow-missing-certs`.
- API y MCP: envía `"allow_missing_certs": true`.
- Panel: confirma el segundo aviso.

Esos sitios fallarán por HTTPS hasta que se les emita un certificado.

## Qué no restaura

- **Los certificados**, como se ha visto.
- **El modo DNS.** Una zona que pasó de DNS externo a delegado sigue delegada.
- **El estado de la zona** (pendiente, activa, desactivada): no es configuración.
- **El contenido purgado de la caché.** Volver atrás nunca recupera lo que quitó una purga.

Dos partes de la configuración necesitan algo más que el rol Técnico. Si la versión que restauras la servían otros grupos de nodos de borde, solo un operador de OpenWAF puede restaurar esas asignaciones; y si la zona era de otro cliente, solo una credencial de toda la organización puede devolverla a él. En ambos casos la API responde `403 forbidden` y no se aplica nada.

## Validación

La configuración restaurada pasa la misma validación que cualquier otra escritura, y la configuración de cada nodo de borde que sirve la zona se construye y se comprueba antes de confirmar el cambio. Si el resultado no fuera válido, la vuelta atrás falla y no cambia nada.
