Todas las rutas son GET /v1/orgs/{org}/zones/{zone}/rum/… en https://dash.openwaf.dev. Cualquier rol de la organización puede consultarlas, incluidos los tokens de solo lectura y los limitados a una zona.
Ruta
Respuesta
…/rum/summary
visits, prev_visits, injection y, por métrica, {p50, p75, p90, count, good, needs_improvement, poor, prev_p75, prev_count}.
…/rum/timeseries?step=<s>
{step, points: [{ts, visits, lcp, inp, cls, fcp, ttfb}]} con el p75 de cada métrica por intervalo. step es un múltiplo de 60 segundos; por defecto, el menor entre 5 minutos y 1 día que da como mucho 60 puntos.
…/rum/breakdown?by=…&limit=10
Filas {key, visits, metrics} por visitas (como mucho 100). by ∈ path, country, node, device, connection, nav_type, host, viewport.
…/rum/lcp-parts[?by=device|path]
{lcp_p75, count, parts, all}: las fases del LCP de las vistas lentas (parts) y de todas (all); con by, además rows (10).
Todo lo que necesita el panel en una llamada: summary, timeseries, breakdowns (path 25 filas; country, node, device, connection 10), lcp_parts por dispositivo, offenders (lcp_element, inp_target, inp_script, cls_target) y los settings de RUM de la zona. breakdowns.device ignora el filtro device.
Los valores de las métricas van en milisegundos, salvo el CLS (sin unidad), con como mucho 4 decimales. Sin datos, null.
count es el número de vistas medidas que tienen la métrica; visits es la estimación de vistas reales (cada vista medida cuenta 1/sample_rate).
Los valores prev_* cubren el periodo de la misma duración justo antes de since.
Los intervalos de las series se alinean en UTC e incluyen los vacíos (visits0, métricas null).
injection suma los contadores de inyección del borde del periodo: injected, csp_nonce (inyectado reutilizando el nonce de tu CSP), csp_blocked (no inyectado por tu CSP), no_head (sin </head> antes del que inyectar) y sampled_out.
GET /v1/orgs/{org}/zones/{zone}/edge siempre devuelve "rum": {"enabled": false, "sample_rate": 1, "exclude_paths": []} o los valores actuales. Se cambian con PATCH en la misma ruta (JSON merge patch: los campos enviados sustituyen a los actuales, exclude_paths entera; un campo a null vuelve a su valor por defecto y "rum": null al objeto por defecto). Consulta Monitorización de usuarios reales.