Skip to content

Features

bekov0004 edited this page Sep 28, 2026 · 2 revisions

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).

Browsing the API

  • 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.

Making requests

  • 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.

Code generation

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)

Environments

  • 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.

Headers

  • 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: header parameters, which still show up per-endpoint as normal fields.

Authorization

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.

Role visibility

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.

Controlling which UI elements are shown

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.

Saving and sharing

  • 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.

Everything else

  • Dark / light theme, toggled from the header.
  • Keyboard shortcuts — / search, Ctrl+Enter send, Esc close, ? 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 (LogoutUrl is set) — hidden entirely otherwise.

Clone this wiki locally