Skip to main content

Overview​

The OpenAPI plugin and theme recognize several vendor extensions for customizing the generated documentation. Supported extensions include:

ExtensionPurpose
x-codeSamplesProvide language specific code snippets for operations. These are displayed in the API Explorer panel.
x-tagGroupsGroup tags in the sidebar navigation.
x-tagsAssign tags to schema objects so they appear with tagged operations when groupPathsBy: tag is enabled.
x-positionExplicit ordering of operations in the generated sidebar.
x-logo / x-dark-logoDisplay light and dark logos on the introduction page.
x-deprecated-descriptionCustom text shown alongside deprecated operations.
x-webhooksDefine webhook events under the x-webhooks key.
x-displayNameOverride tag names used for grouping.
x-enumDescription / x-enumDescriptionsDocument individual enum values.

Other ReDoc extensions such as x-circular-ref, x-code-samples (deprecated), x-examples, x-ignoredHeaderParameters, x-nullable, x-servers, x-traitTag, x-additionalPropertiesName, and x-explicitMappingOnly are detected but ignored when extracting custom extensions.

x-codeSamples​

x-codeSamples attaches one or more author-written code snippets to an operation. Each entry has a lang, an optional label, and a source. The plugin renders one outer tab per language and one inner tab per sample within that language.

Multiple samples per language​

Authors often want to show several variants of the same language — for example, three Python snippets covering different authentication flows. Provide a distinct label on each entry to disambiguate the inner tabs:

x-codeSamples:
- lang: Python
label: KeyPair Auth
source: |
# ...
- lang: Python
label: Basic Auth
source: |
# ...
- lang: Python
label: OAuth
source: |
# ...

If label is omitted on entries that share a lang, the inner tabs fall back to indexed identifiers (Python-0, Python-1, …) and will display the bare language name on each tab. Adding a label is recommended whenever a language appears more than once.

If two entries share both the same lang and the same label, the page still renders — a numeric suffix is appended internally to keep tab identifiers unique — but the visible labels will be identical. Use unique labels to avoid reader confusion.

Hiding generated snippets when custom samples exist​

By default, custom x-codeSamples and the Postman-generated snippets (HTTP, cURL, language variants, etc.) render side by side inside each language tab. Set themeConfig.api.hideGeneratedSnippets to true to suppress the generated block on a per-operation, per-language basis whenever x-codeSamples are provided for that language:

// docusaurus.config.ts
themeConfig: {
api: {
hideGeneratedSnippets: true,
},
}

Languages without any custom samples on a given operation continue to show the generated snippets normally. The default is false, which preserves existing behavior.