diff --git a/packages/docusaurus-theme-openapi-docs/src/theme/Schema/index.tsx b/packages/docusaurus-theme-openapi-docs/src/theme/Schema/index.tsx index 0538aecce..e2cbc831f 100644 --- a/packages/docusaurus-theme-openapi-docs/src/theme/Schema/index.tsx +++ b/packages/docusaurus-theme-openapi-docs/src/theme/Schema/index.tsx @@ -319,7 +319,7 @@ const DiscriminatorNode: React.FC = ({ // default to empty object if no parent-level properties exist const discriminatorProperty = schema.properties - ? schema.properties![discriminator.propertyName] + ? (schema.properties![discriminator.propertyName] ?? {}) : {}; if (schema.allOf) { @@ -341,6 +341,12 @@ const DiscriminatorNode: React.FC = ({ discriminator.mapping = inferredMapping; } + // handle invalid discriminator definition where no discriminated schemas are defined + if (Object.keys(discriminator.mapping).length === 0) { + delete schema.discriminator; + return ; + } + // Merge sub schema discriminator property with parent Object.keys(discriminator.mapping).forEach((key) => { const subSchema = discriminator.mapping[key];