Zudoku · Schema
Zudoku Configuration
Schema for the top-level Zudoku configuration object (zudoku.config.ts) that drives API documentation generation, navigation, authentication, theming, and plugin integration.
Developer ToolsDocumentation
Properties
| Name | Type | Description |
|---|---|---|
| topNavigation | array | Top navigation bar items for the documentation portal. |
| sidebar | object | Sidebar navigation configuration keyed by section identifier. |
| apis | array | API reference configurations pointing to OpenAPI documents. |
| docs | array | MDX documentation page configurations. |
| authentication | object | |
| theme | object | |
| metadata | object | |
| plugins | array | Registered plugins that extend Zudoku functionality. |
| redirects | array | URL redirect rules for the documentation site. |
| basePath | string | Base path prefix for the documentation site. |
| page | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://github.com/api-evangelist/zudoku/blob/main/json-schema/zudoku-config.json",
"title": "Zudoku Configuration",
"description": "Schema for the top-level Zudoku configuration object (zudoku.config.ts) that drives API documentation generation, navigation, authentication, theming, and plugin integration.",
"type": "object",
"properties": {
"topNavigation": {
"type": "array",
"description": "Top navigation bar items for the documentation portal.",
"items": {
"$ref": "#/$defs/NavigationItem"
}
},
"sidebar": {
"type": "object",
"description": "Sidebar navigation configuration keyed by section identifier.",
"additionalProperties": {
"type": "array",
"items": {
"$ref": "#/$defs/SidebarItem"
}
}
},
"apis": {
"type": "array",
"description": "API reference configurations pointing to OpenAPI documents.",
"items": {
"$ref": "#/$defs/ApiReference"
}
},
"docs": {
"type": "array",
"description": "MDX documentation page configurations.",
"items": {
"$ref": "#/$defs/DocConfig"
}
},
"authentication": {
"$ref": "#/$defs/AuthenticationConfig"
},
"theme": {
"$ref": "#/$defs/ThemeConfig"
},
"metadata": {
"$ref": "#/$defs/Metadata"
},
"plugins": {
"type": "array",
"description": "Registered plugins that extend Zudoku functionality.",
"items": {
"$ref": "#/$defs/Plugin"
}
},
"redirects": {
"type": "array",
"description": "URL redirect rules for the documentation site.",
"items": {
"$ref": "#/$defs/Redirect"
}
},
"basePath": {
"type": "string",
"description": "Base path prefix for the documentation site."
},
"page": {
"$ref": "#/$defs/PageConfig"
}
},
"$defs": {
"NavigationItem": {
"type": "object",
"description": "A top navigation bar item linking to a documentation section.",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier matching a sidebar or API section."
},
"label": {
"type": "string",
"description": "Display text for the navigation item."
},
"default": {
"type": "string",
"description": "Default path when this navigation item is selected."
}
},
"required": ["id", "label"]
},
"SidebarItem": {
"type": "object",
"description": "A sidebar navigation item which can be a page, link, or category with children.",
"properties": {
"type": {
"type": "string",
"enum": ["page", "link", "category"],
"description": "The type of sidebar item."
},
"id": {
"type": "string",
"description": "Page identifier for internal page references."
},
"label": {
"type": "string",
"description": "Display text for the sidebar item."
},
"link": {
"type": "string",
"description": "URL for external link type items."
},
"items": {
"type": "array",
"description": "Child items when type is category.",
"items": {
"$ref": "#/$defs/SidebarItem"
}
}
},
"required": ["type", "label"]
},
"ApiReference": {
"type": "object",
"description": "Configuration for an API reference pointing to an OpenAPI schema document.",
"properties": {
"type": {
"type": "string",
"enum": ["file", "url"],
"description": "How the OpenAPI document is loaded: file for local, url for remote."
},
"input": {
"oneOf": [
{
"type": "string",
"description": "Single path or URL to the OpenAPI document."
},
{
"type": "array",
"items": {
"type": "string"
},
"description": "Array of file paths for versioned API documentation."
}
],
"description": "Path, URL, or array of paths to OpenAPI document(s)."
},
"navigationId": {
"type": "string",
"description": "Identifier used for sidebar navigation linking."
},
"label": {
"type": "string",
"description": "Display label for the API reference in navigation."
},
"serverUrl": {
"type": "string",
"description": "Override the server URL defined in the OpenAPI document."
}
},
"required": ["type", "input"]
},
"DocConfig": {
"type": "object",
"description": "Configuration for MDX-based documentation pages.",
"properties": {
"files": {
"type": "string",
"description": "Glob pattern for MDX files to include."
}
},
"required": ["files"]
},
"AuthenticationConfig": {
"type": "object",
"description": "Authentication provider configuration for the documentation portal and API playground.",
"properties": {
"type": {
"type": "string",
"enum": ["openid", "oauth2", "custom"],
"description": "The authentication provider type."
},
"clientId": {
"type": "string",
"description": "OAuth2 or OIDC client identifier."
},
"issuer": {
"type": "string",
"description": "OpenID Connect issuer URL."
},
"scopes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Requested OAuth2 scopes."
},
"redirectUri": {
"type": "string",
"description": "OAuth2 redirect URI after authentication."
}
},
"required": ["type"]
},
"ThemeConfig": {
"type": "object",
"description": "Theme and branding configuration for the documentation portal.",
"properties": {
"light": {
"$ref": "#/$defs/ThemeColors"
},
"dark": {
"$ref": "#/$defs/ThemeColors"
},
"fonts": {
"type": "object",
"description": "Font family configuration.",
"properties": {
"heading": {
"type": "string"
},
"body": {
"type": "string"
},
"code": {
"type": "string"
}
}
}
}
},
"ThemeColors": {
"type": "object",
"description": "Color palette for a light or dark theme mode.",
"properties": {
"primary": {
"type": "string",
"description": "Primary brand color."
},
"background": {
"type": "string",
"description": "Background color."
},
"border": {
"type": "string",
"description": "Border color."
}
}
},
"Metadata": {
"type": "object",
"description": "Site metadata for SEO and social sharing.",
"properties": {
"title": {
"type": "string",
"description": "Site title."
},
"description": {
"type": "string",
"description": "Site description for meta tags."
},
"favicon": {
"type": "string",
"description": "Path to the favicon file."
}
}
},
"Plugin": {
"type": "object",
"description": "A plugin that extends Zudoku functionality.",
"properties": {
"name": {
"type": "string",
"description": "Plugin name identifier."
},
"config": {
"type": "object",
"description": "Plugin-specific configuration options.",
"additionalProperties": true
}
},
"required": ["name"]
},
"Redirect": {
"type": "object",
"description": "A URL redirect rule for the documentation site.",
"properties": {
"from": {
"type": "string",
"description": "Source path pattern to match."
},
"to": {
"type": "string",
"description": "Target path to redirect to."
}
},
"required": ["from", "to"]
},
"PageConfig": {
"type": "object",
"description": "Page-level configuration for logo and banner.",
"properties": {
"logo": {
"type": "object",
"properties": {
"src": {
"type": "object",
"properties": {
"light": {
"type": "string",
"description": "Logo image path for light mode."
},
"dark": {
"type": "string",
"description": "Logo image path for dark mode."
}
}
}
}
},
"banner": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "Banner message text."
},
"color": {
"type": "string",
"description": "Banner background color."
}
}
}
}
}
}
}