HTTP chain detail page
The HTTP chain detail page is what you land on when you click a Wolverine row in the HTTP explorer. It shows what Wolverine actually generated for one route — the C# class your handler runs through, and the OpenAPI shape consumers will see.
Route: /service/:serviceId/http/:chainId
Each chain id is a stable hash of (HTTP method + route + handler) so bookmarking the URL stays valid across redeploys until the route or the handler method moves.
Hero bar
The top of the page packs everything you need to recognise the endpoint at a glance:
- HTTP method badge(s) — color-coded
GET/POST/PUT/DELETE/PATCH - The full route pattern, e.g.
/orders/{id} - The handler —
Type.Method - Chips:
- Transactional — when
[Transactional]is applied (or a runtime policy made it transactional) - Outbox — when the chain depends on
IMessageBus/MessageContext(Wolverine wraps it in the outbox) - vN — one chip per declared API version (collapsed multi-version chains)
- Deprecated — when the chain is deprecated for the current version
- Any free-form tags the chain declares
- Transactional — when
If the chain has an OpenAPI summary, it appears under the chips. (Authorization details render on the ASP.NET endpoint detail page for non-Wolverine endpoints; the Wolverine chain page doesn't carry an Authorize chip.)
Cards
The page is a stacked card layout — Overview, Configuration, Generated Code, OpenAPI, and a Cause & Effect graph — not a tab strip; scroll rather than click between sections.
Overview
Plain operator-friendly summary of the endpoint:
- Operation id
- Description (from XML doc /
EndpointDescription) - Method signature
- Request type (when present)
- Resource type (response payload type)
- Tenancy
- Conneg mode (content negotiation)
If the chain emits cascading messages (events, follow-up commands), they appear as chips you can click to jump to the per-message-type page.
The middleware / handler / postprocessor pipeline is no longer rendered as its own visual — a one-line pointer under the hero notes that the pipeline is readable, in exact order, in the Generated Code card below (that's the code Wolverine actually compiled, so it can't drift from reality).
Configuration
Endpoint configuration captured from the chain's compiled metadata, as label/value rows. Shows "No configuration captured for this chain." when the service reported none.
Generated Code
Loads automatically when the page opens — CritterWatch sends a RequestHttpChainSourceCode message keyed by the stable chain id; the running service materializes the C# class Wolverine emits, replies with HttpChainSourceCodeReported, and the card swaps its loading note for a syntax-highlighted preview with Copy and Refresh buttons.
The result is cached per (service, chain id) until the service version rolls or you hit Refresh.
This is the actual code Wolverine compiles and runs against the request. Reading it is the easiest way to understand exactly what middleware ran, in what order, and what data the handler saw.
Precompiled-mode caveat. If the host runs Wolverine in precompiled (static) codegen mode, the runtime never materializes per-chain source code — the preview can't be reconstructed and the card shows a warning alert carrying the service's own explanation (falling back to "Source code preview unavailable.") with a Try again button. The other cards are unaffected. Hosts opt in to the round-trip by adding services.AddCritterWatchHttp() from the Wolverine.CritterWatch.Http package; pure-Wolverine workers without ASP.NET Core skip the dependency entirely.
OpenAPI
Three sub-sections mirror the OpenAPI document layout:
- Request — parameters table (path / query / header) plus a request-body schema tree
- Responses — one card per status code with one schema tree per media type
- Security — auth schemes, scopes, OAuth2 flow data when available (only rendered when present)
Schema trees expand on click; deeply nested types surface the full type name so you know what's underneath.
Cause & Effect
A focused workflow-graph neighborhood for this endpoint — the messages that lead into it and the messages it causes — the same rendering the Workflow page uses, scoped to one chain.
When fields are empty
- If
Wolverine.Httpisn't on the host or no chain matched, the chain id you bookmarked may have changed across a deploy that touched the route or method name. The page renders a "not currently known" message. - If
AddEndpointsApiExplorer()wasn't called on the host, the OpenAPI card shows an info alert — "No OpenAPI metadata captured for this chain" — with theservices.AddEndpointsApiExplorer()remediation, even though the rest of the page renders.
