OpenWAF Verify

Ver en Markdown

Retos emitidos, resueltos y fallidos del reto de navegador y de los widgets Verify de una zona, respuestas de siteverify y puntuación de riesgo.

Analítica de OpenWAF Verify en una zona, la página del reto de navegador (barrera, límites de peticiones, control de rastreadores IA, modo bajo ataque) y los widgets. Los ajustes son el bloque challenge de los ajustes de borde de la zona.

OperaciónRuta
Ver la analítica de VerifyGET /v1/orgs/{org}/zones/{zone}/challenge/analytics

Ver la analítica de Verify

GET /v1/orgs/{org}/zones/{zone}/challenge/analytics

Devuelve, para los últimos days (1–30, 7 por defecto), los retos emitidos, resueltos, fallidos, abandonados y resueltos con un clic (interactive), la tasa y el tiempo de resolución, los fallos por causa, las respuestas de siteverify, una fila por disparador (gate, rate_rule, ai_agents, pipeline, crawler, under_attack) y por widget, y una por día. risk es el modo y los umbrales de la puntuación de riesgo de la zona y lo que decidió en la ventana, siempre presente (ceros sin datos); en modo log, sus niveles, escaladas y bloqueos son lo que se habría aplicado. Consulta la analítica del reto de navegador.

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).
daysconsultaintegerNoDías UTC terminando hoy. Por defecto 7. De 1 a 30.

Respuesta

CampoTipoDescripción
zonestring
daysinteger
fromstring (date-time)
tostring (date-time)
totalsobject
totals.issuedinteger
totals.solvedinteger
totals.failedinteger
totals.abandonedinteger
totals.interactiveinteger
totals.solve_ratenumber
totals.latency_p50_msinteger
totals.latency_p95_msinteger
totals.latency_mean_msinteger
failuresobject
failures.invalidinteger
failures.expiredinteger
failures.replayedinteger
failures.solutioninteger
failures.elsewhereinteger
siteverifyobject
siteverify.okinteger
siteverify.invalidinteger
siteverify.duplicateinteger
siteverify.expiredinteger
siteverify.bad_secretinteger
siteverify.remoteip_mismatchinteger
siteverify.errorinteger
by_labelarray de object
by_label[].sourcestringUno de interstitial, widget.
by_label[].widget_idstring
by_label[].widget_namestring
by_label[].labelstring
by_label[].issuedinteger
by_label[].solvedinteger
by_label[].failedinteger
by_label[].solve_ratenumber
by_label[].latency_p50_msinteger
by_label[].latency_p95_msinteger
by_label[].risk_levelsChallengeRiskLevels
dailyarray de object
daily[].datestring (date)
daily[].issuedinteger
daily[].solvedinteger
daily[].failedinteger
riskChallengeRiskReport
settingsZoneEdgeChallenge

Errores

EstadoDescripción
400Petición mal formada (bad_request).
404No existe o el token no lo ve (not_found).
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

Aún sin método en los SDK: usa la petición HTTP.

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d/challenge/analytics?days=7" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "zone": "example.com",
  "days": 0,
  "from": "2026-10-27T09:30:00Z",
  "to": "2026-10-27T09:30:00Z",
  "totals": {
    "issued": 0,
    "solved": 0,
    "failed": 0,
    "abandoned": 0,
    "interactive": 0,
    "solve_rate": 0.5,
    "latency_p50_ms": 0,
    "latency_p95_ms": 0,
    "latency_mean_ms": 0
  },
  "failures": {
    "invalid": 0,
    "expired": 0,
    "replayed": 0,
    "solution": 0,
    "elsewhere": 0
  },
  "siteverify": {
    "ok": 0,
    "invalid": 0,
    "duplicate": 0,
    "expired": 0,
    "bad_secret": 0,
    "remoteip_mismatch": 0,
    "error": 0
  },
  "by_label": [
    {
      "source": "interstitial",
      "widget_id": "b37fe5d7-b6b8-4af4-ad93-0e98076dac07",
      "widget_name": "example",
      "label": "AI training",
      "issued": 0,
      "solved": 0,
      "failed": 0,
      "solve_rate": 0.5,
      "latency_p50_ms": 0,
      "latency_p95_ms": 0,
      "risk_levels": {
        "pass": 0,
        "harder": 0,
        "interactive": 0,
        "block": 0
      }
    }
  ],
  "daily": [
    {
      "date": "2026-10-27",
      "issued": 0,
      "solved": 0,
      "failed": 0
    }
  ],
  "risk": {
    "mode": "off",
    "thresholds": {
      "harder": 0,
      "interactive": 0,
      "block": 0
    },
    "evaluated": 0,
    "levels": {
      "pass": 0,
      "harder": 0,
      "interactive": 0,
      "block": 0
    },
    "scores": [
      0
    ],
    "top_signals": [
      {
        "signal": "example",
        "count": 128
      }
    ],
    "escalated": 0,
    "blocked": 0
  },
  "settings": {
    "pass_ttl_minutes": 720,
    "difficulty": 16,
    "pass_scope": "host",
    "color": "",
    "gate": {
      "enabled": false,
      "paths": [
        "/checkout"
      ],
      "pages": [
        "example"
      ]
    },
    "under_attack": {
      "enabled": false,
      "until": "2026-10-27T09:30:00Z",
      "hosts": [
        "www.example.com"
      ],
      "exempt_paths": [
        "example"
      ],
      "difficulty": 0,
      "pass_ttl_minutes": 0,
      "interactive": true
    },
    "risk": {
      "mode": "log",
      "thresholds": {
        "harder": 30,
        "interactive": 60,
        "block": 90
      }
    }
  }
}

Última actualización:

↑↓ para moverte↵ para abriresc para cerrar