Skip to content

Every key, with its default. The guides explain each section: Configuration.

Key Type Default
site.title string, required
site.description string
site.url URL
site.logo.src path, or { light, dark }
site.logo.text string the title when there is no image
site.logo.alt string
site.logo.href URL /
site.favicon path
site.image path (needs site.url) or URL
site.titleTemplate string with %s '%s | <title>'
site.noindex boolean false
site.banner.message string, required in a banner
site.banner.href URL
site.banner.dismissible boolean true
site.banner.background, site.banner.color CSS color
Key Type Default
theme.primary CSS color #f76b39
theme.mode auto | light | dark auto
theme.fonts.sans, theme.fonts.mono { family, url? } System fonts
theme.css path, or list of paths
Key Type Default
header.themeSwitcher boolean true
header.links[] { label, href | items, icon?, style? }
header.links[].style link | button | primary link
header.links[].items[] { label, href, icon?, description?, badge?, items? }
Key Type
label string, required
icon Phosphor icon name
badge string, or { text, variant }
exactly one of: items, autogenerate, api, catalog: true, href the kind of tab

Sidebar items: a page path string, or { label?, slug \| href \| items \| autogenerate \| api, version?, icon?, badge?, collapsed? }.

A tab or sidebar item with api can have version: one of that API’s versions.

Key Type Default
id lowercase letters, digits, dashes; required
spec path or URL; required unless versions is set
versions list of spec paths or { spec, version?, label? }, instead of spec the first is the default
title string info.title
description string info.description
category string General
Key Type Default
spec path or URL, required
version lowercase letters, digits, dots, dashes; required for a URL spec info.version
label string info.version
Key Type Default
file path to an Arazzo 1.x file; required
id lowercase letters, digits, dashes the file name without .arazzo.yaml
sources map of source description name → API id sources named like an API id

See Workflows.

Key Type Default
docs.dir path ./docs
docs.toc { minHeadingLevel, maxHeadingLevel } or false levels 2 to 3
docs.editUrl URL
Key Type Default
footer.cta { title, description?, links? }, up to 3 links
footer.newsletter { action, field?, title?, description?, button? } field email, button Subscribe
footer.columns[] { title, links: [{ label, href }] }
footer.social[] { icon: github | x | discord | linkedin | youtube, href }
footer.copyright string
footer.branding boolean true
Key Type Default
rapidoc map of <rapi-doc> attributes see RapiDoc attributes
head[] { script }, { link } or { meta }; script is attributes or inline code
search boolean true
llms false, or { description?, pageActions? } on; see LLM output
llms.pageActions list of copy, markdown, chatgpt, claude, or false all four
redirects[] { from, to }
Key Type Default
auth.provider oidc oidc
auth.issuer URL $RAPIDOC_AUTH_ISSUER
auth.clientId string $RAPIDOC_AUTH_CLIENT_ID
auth.scopes string list openid, profile, email
auth.claims.groups claim name or dotted path groups
auth.session.maxAge 30m, 8h, 7d 8h
auth.logout local | idp local
auth.label string Sign in
auth.audience string $RAPIDOC_AUTH_AUDIENCE
auth.tryIt boolean false
Key Type Default
access.default allow public
access.rules[] { path, allow }, first match wins

An allow is public, signed-in, or { groups?, emails? }.

Settings for rapidoc lint; the build ignores them.

Key Type Default
lint.rules { <rule>: error | warn | off } each rule’s own default
lint.apis { <api id>: { <rule>: severity } }, wins over rules

The full schema ships as @rapidoc/portal/schema.json. Point your editor at it for autocomplete:

rapidoc.config.yaml
# yaml-language-server: $schema=./node_modules/@rapidoc/portal/schema.json