Repository navigation
Features
What you get once /folio (or your configured RoutePrefix) is open — this page describes the UI itself, not how to wire it up (see Getting Started for that).
- Endpoint list, grouped and searchable, generated straight from the spec.
- Model / schema catalog — every schema in the spec, browsable and searchable on its own, not just inline per-endpoint.
-
Instant search (press
/) across endpoints. - Markdown-rendered descriptions — endpoint and field descriptions from the spec render as formatted text, not raw markdown.
- Type-aware request builder — parameters and request body fields get the right input control for their schema type (text, number stepper, boolean toggle, enum dropdown, date picker, nested object/array editors), not a raw JSON textarea to hand-edit blind.
- In-browser execution — send the request for real and see the actual response, not just a canned example.
- Response colored by status family — 2xx green, 3xx blue, 4xx amber, 5xx (and network errors) red, so you can tell success from failure at a glance without reading the number.
- Response headers, in their own collapsible section.
- Multiple documented responses per endpoint (e.g. 200 vs 404 vs 500) — browsable as tabs, each with its own example from the spec.
Every request gets an equivalent code snippet, live, before you even hit "Send" — reflecting the current form state as you fill it in:
- cURL
- JavaScript (
fetch) - Python (
requests) - C# (
HttpClient) - Go (
net/http) - PowerShell (
Invoke-RestMethod)
- Switch between base URLs (local, staging, prod, ...) without editing anything — environments are just named base URLs you can add, edit, and swap between from the header.
- Import
servers[]straight from the spec as ready-made environments.
- Global headers — sent with every request (e.g. an API key), configured once.
- Per-endpoint headers — override or add to global headers for a specific endpoint.
- Both are separate from the spec's own declared
in: headerparameters, which still show up per-endpoint as normal fields.
A dedicated modal reads the spec's declared security schemes (apiKey, HTTP Bearer/Basic) and lets you fill in credentials once — applied automatically to every request that needs them.
Each endpoint shows which roles can access it — as a badge next to it in the sidebar (collapsing to "Role +N" on a narrow panel, expanding to the full list once there's room), and as a small icon next to the endpoint header with a hover/focus popover listing the roles on the detail page.
This is read straight from your endpoints' own [Authorize(Roles = "...")] / .RequireAuthorization(...) metadata at request time — nothing is configured separately and nothing is invented; it's a live mirror of whatever your code already declares. No endpoint with role requirements, no badges — turn it off entirely with FolioOptions.ShowRoles.
Every button and section described on this page — Try it out, the code generator, role display, the Schema view, Home, the environment switcher, global headers, the Authorize button, saved examples, and share — can be turned off individually via a FolioOptions.ShowXxx flag (all true by default, so nothing changes unless you set one). See Getting Started for the full list and how to set them from code or appsettings.json.
- Save examples — capture a request body you've filled in, come back to it later without retyping.
- Shareable deep links — every open endpoint has a URL you can copy and send; opening it jumps straight there.
- Dark / light theme, toggled from the header.
-
Keyboard shortcuts —
/search,Ctrl+Entersend,Escclose,?for the full cheat sheet. - Fully responsive — usable on a phone, with the environment/action bar collapsing into a "More" menu on narrow screens.
- Fully offline — fonts, styling, and every vendored script are bundled into the package itself. Zero external requests, both at build time and in the browser.
-
"Log out" button in the header, shown automatically when the UI is gated behind Authorization (
LogoutUrlis set) — hidden entirely otherwise.