← All frames · Frame 06 · flow spec-viewer · route /catalog/:product/:service

Spec viewer — loading, fetch failed, invalid spec, not found, stale

A spec can be slow, missing, unreachable, or present but not valid OpenAPI. The last one is the interesting case: an invalid spec must not render as a half-broken doc page with a "Try it" button that fires nonsense. It fails closed, names the offending source repo, and disables the Playground for that spec.

(a) Loading · spec blob + renderer bootstrapping

The spec header is rendered from catalog data we already have — name, product, version — so only the panes that need the blob show skeletons. Nothing reflows when the spec lands.

(b) Fetch failed · 502/504 retrieving the stored spec
⚠

Couldn't load this spec

GET /api/v1/devportal/specs/app-registry-service returned 502. The catalog entry exists — the stored document could not be retrieved. Nothing is wrong with your account.

(c) Invalid spec · the document parsed but is not valid OpenAPI — fail closed
portal-service FuzeFront spec invalid showing v2.9.4 (last valid)
⛔

This spec failed validation and can't be rendered

The version published by izzywdev/FuzeFront at 2026-09-08 07:31 UTC is not a valid OpenAPI 3.x document, so the renderer and the Playground are both disabled for it — a partially-parsed spec would produce request builders for operations that do not exist.

validator output · spectral
paths./portals/{portalId}.get.responses
  error  oas3-schema           Property "200" must have required property "description"
components.schemas.PortalSummary
  error  invalid-ref           $ref "#/components/schemas/Hostname" is not resolvable
paths./portals.post.requestBody
  error  oas3-valid-media-type Media type "application/jsonl" is not defined
"Try it" is disabled, not hidden — the developer needs to know the capability exists and why it is unavailable here.
(d) Not found · 404 — the spec was removed or renamed since the link was made
🕳

That spec isn't in the catalog

fuzefront/legacy-portal-api no longer publishes a spec — it was removed in the harvest on 2026-08-30. Bookmarks and old links land here.

Back to catalog
(e) Stale · renders normally, but says so
⏳

This spec hasn't been refreshed in 34 days

Last successful harvest 2026-08-05. The source repo may have shipped changes that are not reflected here. Everything below still renders — we mark age rather than hiding it.

Test hooks: [data-frame='06-spec-viewer-states'] · [data-state='loading'] · [data-state='error'] · [data-error='spec-fetch-failed'] · [data-state='invalid-spec'] · [data-error='spec-invalid'] · [data-spec-validity='invalid'] · [data-try-it='disabled'] · [data-state='not-found'] · [data-empty='spec-not-found'] · [data-state='stale'] · [data-action='retry'] · [data-action='back-to-catalog'].

Review · devportal approve or reject each flow ↓
homependingApproveReject
catalogpendingApproveReject
spec-viewerpendingApproveReject
playgroundpendingApproveReject
my-accesspendingApproveReject