Documentation browser
Tag-grouped endpoint trees, serialization-aware parameter tables, shared SchemaViewer on bodies and responses, and a scroll-aware response navigator — cycle-safe for recursive and polymorphic schemas.
Explore the docs surfaceOpenDoc UI turns any OpenAPI 3.0 / 3.1 / 3.2 or Swagger 2.0 document into a living workspace — navigable documentation, a genuine request runner (including OAS 3.2 QUERY), a unified schema viewer with field combinators, instant code generation, private notes and a grounded AI assistant. No backend. No account. No upload.
This is not a screenshot — it's the real app, live. Click around.
Open a specification once and every surface appears: read it, call it, generate against it, and keep notes beside it — without ever leaving the document.
Tag-grouped endpoint trees, serialization-aware parameter tables, shared SchemaViewer on bodies and responses, and a scroll-aware response navigator — cycle-safe for recursive and polymorphic schemas.
Explore the docs surfaceReal requests from the browser — including OAS 3.2 QUERY — with bearer, API-key, basic auth, OAuth PKCE and cookies, recursive body forms, live final URL and bounded response inspection.
See the Runnerfetch, axios and Angular snippets plus TypeScript models — generated from your schemas, secret-redacted, downloadable as a zip.
Ctrl/⌘ + K opens search as a shareable tab — results across paths, summaries, tags and schemas, with advanced method, access and tag filters.
Private Markdown notes pinned beside any endpoint, in fourteen theme-safe tones — exportable as JSON, never uploaded.
Endpoints, open tabs, response codes, schema modals — the entire view state is encoded in the address bar. Copy it, share it, reopen it. It just works.
#/pets/get-pet-by-id?tab=runner&code=200Hand-picked palettes with per-spec memory — your payments API can stay serious while the side project glows.
One surface for request bodies, responses and the schema modal — always-open meta stats, multi-format generated examples, and field-level oneOf / anyOf / allOf / not menus that reach nested properties. Recursive trees stay cycle-safe; modern 3.1/3.2 keywords and bare $ref combinators are handled explicitly.
Branch-heavy schemas, modern methods, honest serialization and a settings surface that stays out of the way — the same workstation, pushed further.
Request bodies, responses and the schema modal share one generated-example surface, meta header and property table — with named OpenAPI examples on their own tab.
request · response · modalNested oneOf, anyOf, allOf and not menus in code and tables — exclusive pick, multi-select merge, composition focus with dimming, inspection-only negation.
oneOf · anyOf · allOf · notRFC 10008 QUERY is first-class: discovered, documented with bodies, and runnable in the Runner without relaxing GET/HEAD body warnings.
RFC 10008A Settings tab with Appearance gallery, navigation and AI sections, plus per-schema or global example/schema representation defaults stored in IndexedDB.
#/…/settingsstyle/explode descriptors, serializer playground → Runner, live final URL, location-split parameter matrices, and card layouts when panes run out of room.
style · explode · final URLLoad-time rewrite for flow-style combinators missing sequence brackets — enough to open many generator mistakes without touching files on disk.
load-time · non-destructiveThe OpenDoc UI assistant answers from retrieved, redacted endpoint and schema context — grounded in your open specification, with source citations you can click straight into the docs. It can even prepare a request in the Runner for you.
status: POST /pet (create) and PUT /pet (update).
Both require the petstore_auth OAuth2 scope write:pets.
POST /pet/{petId} can also update it via form data.
{ "id": 42, "status": "sold" }. Review and hit Send.Drop a local .json / .yaml file, paste a remote URL, or ship pre-configured specifications with your deployment. Parsing, normalization and validation happen in the browser.
Browse tag-grouped docs, search everything with ⌘K, pick field combinators in SchemaViewer, and ask the assistant questions with cited answers.
docs · search · SchemaViewer · AIExecute authenticated requests in the Runner, generate client snippets and TypeScript models, keep notes beside endpoints, and share any view as a deep link.
runner · codegen · notes · links| Dialect | Parsing | Rendering | Runner | Highlights |
|---|---|---|---|---|
| openapi: 3.0.x | Complete | Complete | Yes | nullable semantics, callbacks, links, security |
| openapi: 3.1.x | Complete | Complete | Yes | JSON Schema 2020-12 — const, prefixItems, if/then/else |
| openapi: 3.2.x | Complete | Complete | Yes | webhooks, additionalOperations, first-class QUERY (RFC 10008) |
| swagger: "2.0" | Complete | Normalized to 3.x | Yes | formData, file uploads, collectionFormat, securityDefinitions |
Multi-file reference graphs resolve in memory, with clear diagnostics for anything unresolved. Full compatibility report
$ npm ci && npm run build ✓ dist/ — one self-contained bundle, SPA fallback included # …or the guided builder $ npm run make # …or Docker, health check and all $ docker compose up --build --detach ✓ opendoc-ui ready on http://localhost:3000
OpenDoc UI compiles to a single static directory. Copy dist/ to
any host — or run the hardened Docker image — and the entire workspace works with no server
process, no database, no runtime dependency. Air-gapped networks included.
Not a wall of YAML, not a stale export — a living workspace. Open the demo with the bundled showcase spec, or drop in one of your own. It never leaves your machine.