Caché

Ver en Markdown

Purga lo que el borde guardó en caché de una zona, todo o por URL, prefijo, nombre o etiqueta, y sigue las purgas recientes.

En esta página

Purga la caché del borde de una zona y sigue hasta dónde ha llegado cada purga. Una purga llega a los nodos del borde en un segundo aproximadamente; queda en la auditoría, no como versión de configuración.

OperaciónRuta
Purgar la cachéPOST /v1/orgs/{org}/zones/{zone}/cache/purge
Listar purgasGET /v1/orgs/{org}/zones/{zone}/cache/purges

Purgar la caché

POST /v1/orgs/{org}/zones/{zone}/cache/purge

Purga lo que el borde guardó en caché para la zona. El cuerpo lleva exactamente uno de purge_everything (true), files (URL, u objetos {"url": …}; se purgan todas las variantes de cada URL), prefixes (nombre/ruta), hosts o tags (valores de Cache-Tag), con como mucho 100 valores. Los valores se normalizan (esquema y nombre en minúsculas, sin el puerto por defecto ni el fragmento, ruta canónica) y sus nombres deben ser de la zona.

Los nodos del borde aplican la purga en un segundo aproximadamente. Una purga no es una versión de configuración: queda en la auditoría con su motivo. Por organización, 10 purgas por minuto con ráfagas de 30 para todo, nombres, prefijos y etiquetas, y 500 URL por minuto. Con dry_run=1 solo se valida y normaliza, y no cuenta para el límite.

Rol necesario: tech o superior. También lo pueden llamar los tokens de la zona que solo purgan la caché.

Controles de cambio: dry_run · X-Change-Reason (opcional)

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
zonerutastring (uuid)SíId de la zona (consulta Listar zonas).
X-Change-ReasoncabecerastringNoMotivo del cambio (1-500 caracteres UTF-8, sin caracteres de control); por defecto, el alta de la zona. De 1 a 500 caracteres.
dry_runconsultastringNo1/true simula el cambio: responde 200 con el plan (Applied) y no guarda nada. Admite 0/false; otro valor: 400. Uno de 1, true, 0, false.

Cuerpo de la petición

Tipo de contenido application/json. Esquema: PurgeRequest.

Exactamente uno de los campos

CampoTipoObligatorioDescripción
purge_everythingbooleanNo
filesarray de string o objectNoURL http(s) de la zona; se purgan todas sus variantes. Como mucho 100 elementos.
files[].urlstringSí
prefixesarray de stringNohost/ruta (sin query ni fragmento). Como mucho 100 elementos.
hostsarray de stringNoComo mucho 100 elementos.
tagsarray de stringNoEtiquetas de Cache-Tag (se guardan en minúsculas). Como mucho 100 elementos.

Respuesta

  • 200: Purga aceptada (o simulada). Devuelve PurgeResult.
CampoTipoDescripción
dry_runbooleantrue en una simulación.
seqintegerPosición de la purga (0 en una simulación).
kindstringUno de everything, host, url, prefix, tag.
valuesarray de stringValores normalizados.
epochintegerÉpoca nueva (everything y host).
created_atstring (date-time)Fecha de creación.
warningsarray de stringAvisos (el cambio sigue siendo válido).

Errores

EstadoDescripción
400Petición mal formada (bad_request).
403El rol o los límites del token no lo permiten (forbidden).
404No existe o el token no lo ve (not_found).
409zone_merged: la zona está fusionada en otra (solo lectura hasta que se separe o se purgue).
422Error de validación (invalid) o motivo ausente/no válido (reason_required).
429rate_limited: demasiadas purgas; Retry-After en segundos.

Ejemplo

curl -X POST "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d/cache/purge" \
  -H "Authorization: Bearer $OPENWAF_TOKEN" \
  -H "X-Change-Reason: Deploy of the new home page" \
  -H "Content-Type: application/json" \
  --data '{
    "files": [
      "https://www.example.com/index.html"
    ]
  }'
200
{
  "dry_run": false,
  "seq": 0,
  "kind": "everything",
  "values": [
    "https://www.example.com/index.html"
  ],
  "epoch": 0,
  "created_at": "2026-10-27T09:30:00Z",
  "warnings": []
}

Listar purgas

GET /v1/orgs/{org}/zones/{zone}/cache/purges

Lista las purgas de los últimos 7 días, de la más reciente a la más antigua, con cuántos de los nodos activos con caché que sirven la zona (nodes) han aplicado ya cada una (applied).

Rol necesario: readonly o superior.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
zonerutastring (uuid)SíId de la zona (consulta Listar zonas).
limitconsultaintegerNoNúmero máximo de elementos. Por defecto 20. De 1 a 100.

Respuesta

CampoTipoDescripción
items[].seqinteger
items[].zone_idstring (uuid)Id de la zona.
items[].kindstringUno de everything, host, url, prefix, tag.
items[].valuesarray de string
items[].actorstringQuién hizo el cambio: un token, un usuario u OpenWAF.
items[].created_atstring (date-time)Fecha de creación.
items[].nodesintegerNodos activos con caché que sirven la zona.
items[].appliedintegerCuántos de ellos ya la han recibido.

Errores

EstadoDescripción
404No existe o el token no lo ve (not_found).

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d/cache/purges" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "items": [
    {
      "seq": 0,
      "zone_id": "6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d",
      "kind": "everything",
      "values": [
        "https://www.example.com/index.html"
      ],
      "actor": "token:11111111-2222-4333-8444-555555555555",
      "created_at": "2026-10-27T09:30:00Z",
      "nodes": 0,
      "applied": 0
    }
  ]
}

Última actualización:

↑↓ para moverte↵ para abriresc para cerrar