Skip to content
Beskid Platform specification

Beskid

Jump to a Beskid service

Beskid

Jump to a Beskid service

Registry API reference UI

Platform spec article

Registry API reference UI

Spec standingStandard

Owner
Piotr Mikstacki
Submitter
Piotr Mikstacki

How the pckg registry renders published package documentation as an API reference (Microsoft .NET API Docs–style), using api.json as the sole structure driver.

RegionContent
HeaderPackage id, version, primary symbol search
Left railLibrary tree — collapsible modules, optional dependency groups, kind folders (Types, Enums, Contracts, Functions)
CenterSelected symbol: signature, type links, structured doc, docMarkdown body
Right railIn-page table of contents from markdown headings
OverflowFlat symbol grid and kind filters (secondary to the tree)

The main content column must stay aligned beside the left rail (not displaced below it).

RoutePurpose
`/docs/{package}@{version}`Package docs landing; default tree selection
`/docs/{package}@{version}/api/{qualifiedName}`Deep link to one API row (qualifiedName percent-encoded)
`/docs/{package}@{version}/search/{query}`Initial symbol search filter

The version segment may be latest or an exact registry version.

  1. Deserialize api.json with navigationModel: "graph-v1" and schemaVersion >= 3.
  2. Build parent/child edges from parentId / memberIds only (design model).
  3. Include only explorer kinds in the tree (module, type, enum, contract, function).
  4. Under each module node, group explorer children into UI folders by kind.
  5. When declaringPackage is present and differs from the page package, group under Dependencies → that package id before module nesting.

Legacy artifacts without module parenting may synthesize module edges from modulePath until re-published; emitters should not rely on this path.

  • In-package types: navigate via refItemId when set; otherwise select by qualifiedName.
  • External types (declaringPackage ≠ current package): link to `/docs/{declaringPackage}@{version}/api/{qualifiedName}` (same version segment as the host page when possible).
  • Markdown @ref links packed at publish time must use the same qualified-name rules as the design model.
  • UI: pckg/src/Server/Components/Docs/ (PackageDocs, ApiDocNavigationBuilder, DocsView)
  • API: GET /api/packages/{id}/versions/{ver}/docs/structured
  • Pack: .beskid/docs/api.json inside .bpk artifacts