diff --git a/demo/docusaurus.config.ts b/demo/docusaurus.config.ts index b4a1baffb..3ce4aee96 100644 --- a/demo/docusaurus.config.ts +++ b/demo/docusaurus.config.ts @@ -352,6 +352,7 @@ const config: Config = { groupPathsBy: "tag", }, showSchemas: true, + showInfoPage: false, // Disable info page generation } satisfies OpenApiPlugin.Options, tests: { specPath: "examples/tests", diff --git a/packages/docusaurus-plugin-openapi-docs/README.md b/packages/docusaurus-plugin-openapi-docs/README.md index 4bbbdbd7a..82909843d 100644 --- a/packages/docusaurus-plugin-openapi-docs/README.md +++ b/packages/docusaurus-plugin-openapi-docs/README.md @@ -176,6 +176,8 @@ The `docusaurus-plugin-openapi-docs` plugin can be configured with the following | `versions` | `object` | `null` | _Optional:_ Options for versioning configuration. See below for a list of supported options. | | `markdownGenerators` | `object` | `null` | _Optional:_ Customize MDX content via generator functions. See below for a list of supported options. | | `showSchemas` | `boolean` | `null` | _Optional:_ If set to `true`, generates standalone schema pages and adds them to the sidebar. | +| `showInfoPage` | `boolean` | `true` | _Optional:_ If set to `false`, disables generation of the info page (overview page with API title and description). | +| `schemasOnly` | `boolean` | `false` | _Optional:_ If set to `true`, generates only schema pages (no API endpoint pages). Also available as `--schemas-only` CLI flag. | ### sidebarOptions diff --git a/packages/docusaurus-plugin-openapi-docs/src/openapi/openapi.ts b/packages/docusaurus-plugin-openapi-docs/src/openapi/openapi.ts index 773c6e317..c48b62bd4 100644 --- a/packages/docusaurus-plugin-openapi-docs/src/openapi/openapi.ts +++ b/packages/docusaurus-plugin-openapi-docs/src/openapi/openapi.ts @@ -97,8 +97,11 @@ function createItems( const infoId = kebabCase(infoIdSpaces); const schemasOnly = options?.schemasOnly === true; - if (openapiData.info.description || openapiData.info.title) { - // Only create an info page if we have a description. + // Only create an info page if we have a description/title AND showInfoPage is not false + if ( + (openapiData.info.description || openapiData.info.title) && + options?.showInfoPage !== false + ) { const infoDescription = openapiData.info?.description; let splitDescription: any; if (infoDescription) { diff --git a/packages/docusaurus-plugin-openapi-docs/src/options.ts b/packages/docusaurus-plugin-openapi-docs/src/options.ts index 9bad1d90f..55c68c6ba 100644 --- a/packages/docusaurus-plugin-openapi-docs/src/options.ts +++ b/packages/docusaurus-plugin-openapi-docs/src/options.ts @@ -48,6 +48,8 @@ export const OptionsSchema = Joi.object({ sidebarOptions: sidebarOptions, markdownGenerators: markdownGenerators, showSchemas: Joi.boolean(), + showInfoPage: Joi.boolean(), + schemasOnly: Joi.boolean(), disableCompression: Joi.boolean(), maskCredentials: Joi.boolean(), version: Joi.string().when("versions", { diff --git a/packages/docusaurus-plugin-openapi-docs/src/types.ts b/packages/docusaurus-plugin-openapi-docs/src/types.ts index 45a74cf9a..ad5b8bb2b 100644 --- a/packages/docusaurus-plugin-openapi-docs/src/types.ts +++ b/packages/docusaurus-plugin-openapi-docs/src/types.ts @@ -51,6 +51,7 @@ export interface APIOptions { proxy?: string; markdownGenerators?: MarkdownGenerator; showSchemas?: boolean; + showInfoPage?: boolean; schemasOnly?: boolean; disableCompression?: boolean; maskCredentials?: boolean;