Endpoints
Inbound HTTP requests made to your Warp-exposed handlers. The outbound mirror is Adapters.
It observes only Warp HTTP endpoints (handlers exposed via MapWarpHttp) — never your own
controllers, the dashboard, health checks or static files. Identity is the HTTP method plus the route
template (GET /orders/{id}), so a path parameter never inflates the row count.
The list gives Calls, Error %, Avg latency and a Health pill per route, over a chart of all endpoints combined.
Detail page
Beyond average latency the detail page reports p90 / p95 / p99, computed from a fixed-bucket histogram
folded through the same Counter → Statistic pipeline as the counts — so they are exact over all calls
and survive log deletion, not sampled from whatever rows remain.
A callers table breaks the same numbers down by group (channel, client, tenant — whatever your
GroupSelector returns), with each caller's last failure.
Call detail
An individual call shows its captured request and response (headers redacted through the denylist, bodies truncated), any enrichment tags, and — the useful part — Related jobs: everything enqueued during that request, reached by shared trace id, with a link into the full trace.
The reverse direction works too. A job spawned inside a request shows an Origin card on its detail page naming the request and the user, linking back to the call above:
What counts as an error
Failed means the final wire status was 5xx, or an exception escaped after the response started. A 4xx is
a client error and stays out of the error rate, so the number keeps meaning "we broke it". 4xx responses
still form issues, filtered out of that view by default.
Nav visibility
The page appears once AddEndpointObservability() is registered. The query service itself is registered by
AddWarp, so a dashboard-only process can serve the data without running the middleware.
See also
- Endpoint observability — setup, capture modes, retention.
- Adapters — the outbound counterpart.