diff --git a/.github/workflows/canary-beta-release.yml b/.github/workflows/canary-beta-release.yml
new file mode 100644
index 000000000..6762f3e25
--- /dev/null
+++ b/.github/workflows/canary-beta-release.yml
@@ -0,0 +1,43 @@
+name: Canary Beta Release
+
+on:
+ push:
+ branches:
+ - v2.0.0
+ paths:
+ - packages/**
+
+permissions:
+ contents: read
+
+jobs:
+ publish-canary:
+ name: Publish Canary Beta
+ runs-on: ubuntu-latest
+ if: ${{ github.repository == 'PaloAltoNetworks/docusaurus-openapi-docs' && github.ref == 'refs/heads/v2.0.0' && github.event_name == 'push' }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ with:
+ fetch-depth: 0 # Needed to get the commit number with "git rev-list --count HEAD"
+ - name: Set up Node
+ uses: actions/setup-node@v3
+ with:
+ node-version: "18"
+ cache: yarn
+ - name: Prepare git
+ run: |
+ git config --global user.name "Steven Serrata"
+ git config --global user.email "sserrata@paloaltonetworks.com"
+ git fetch
+ git checkout v2.0.0
+ echo "//registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN}" >> .npmrc
+ env:
+ NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
+ - name: Installation
+ run: yarn && yarn build-packages
+ - name: Publish Canary release
+ run: |
+ yarn canaryBeta
+ env:
+ NPM_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
diff --git a/.github/workflows/canary-release.yml b/.github/workflows/canary-release.yml
index 8426777d3..09b87ae6b 100644
--- a/.github/workflows/canary-release.yml
+++ b/.github/workflows/canary-release.yml
@@ -17,7 +17,7 @@ jobs:
if: ${{ github.repository == 'PaloAltoNetworks/docusaurus-openapi-docs' && github.ref == 'refs/heads/main' && github.event_name == 'push' }}
steps:
- name: Checkout
- uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3
+ uses: actions/checkout@v3
with:
fetch-depth: 0 # Needed to get the commit number with "git rev-list --count HEAD"
- name: Set up Node
@@ -32,9 +32,6 @@ jobs:
git fetch
git checkout main
echo "//registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN}" >> .npmrc
- cat .npmrc
- echo "npm whoami"
- npm whoami
env:
NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
- name: Installation
diff --git a/.github/workflows/deploy-preview.yml b/.github/workflows/deploy-preview.yml
index 9f53d6724..b0454c33e 100644
--- a/.github/workflows/deploy-preview.yml
+++ b/.github/workflows/deploy-preview.yml
@@ -5,10 +5,55 @@ on:
branches: [main, v2.0.0]
jobs:
+ precheck:
+ name: Precheck
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ security-events: write
+ outputs:
+ is-org-member-result: ${{ steps.is-org-member.outputs.is-org-member-result }}
+ steps:
+ - name: Check if actor is org member
+ id: is-org-member
+ run: echo "is-org-member-result=$(gh api -X GET orgs/PaloAltoNetworks/memberships/${{ github.actor }} | jq -r .message)" >> "$GITHUB_OUTPUT"
+ env:
+ GH_TOKEN: ${{ secrets.PAT }}
+
analyze:
- if: github.repository_owner == 'PaloAltoNetworks'
+ if: github.repository_owner == 'PaloAltoNetworks' && needs.precheck.outputs.is-org-member-result == 'null'
name: Analyze
+ needs: precheck
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ security-events: write
+
+ strategy:
+ fail-fast: true
+ matrix:
+ language: ["javascript"]
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+ with:
+ ref: ${{ github.event.pull_request.head.sha }}
+
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v2
+ with:
+ languages: ${{ matrix.language }}
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v2
+
+ analyze_unsafe:
+ if: github.repository_owner == 'PaloAltoNetworks' && needs.precheck.outputs.is-org-member-result != 'null'
+ name: Analyze Unsafe
+ needs: precheck
runs-on: ubuntu-latest
+ environment: default
permissions:
contents: read
security-events: write
@@ -34,7 +79,10 @@ jobs:
build:
name: Build
- needs: analyze
+ needs: [analyze, analyze_unsafe]
+ if: |
+ !failure() && !cancelled() &&
+ (success('analyze') || success('analyze_unsafe'))
runs-on: ubuntu-latest
permissions:
contents: read
@@ -68,6 +116,7 @@ jobs:
deploy:
name: Deploy
needs: build
+ if: ${{ !failure() && !cancelled() }}
runs-on: ubuntu-latest
steps:
diff --git a/.github/workflows/release-beta.yaml b/.github/workflows/release-beta.yaml
new file mode 100644
index 000000000..5903a8d48
--- /dev/null
+++ b/.github/workflows/release-beta.yaml
@@ -0,0 +1,31 @@
+name: Release Beta
+
+on:
+ push:
+ branches:
+ - v2.0.0
+
+env:
+ FORCE_COLOR: true
+
+jobs:
+ release:
+ name: Release Beta
+ runs-on: ubuntu-latest
+ if: ${{ github.repository == 'PaloAltoNetworks/docusaurus-openapi-docs' }}
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+ - run: |
+ git config user.name "github-actions[bot]"
+ git config user.email "github-actions[bot]@users.noreply.github.com"
+ - uses: actions/setup-node@v2
+ with:
+ node-version: "*"
+ registry-url: "https://registry.npmjs.org"
+ - name: Release Beta
+ run: npx ts-node --transpile-only scripts/publish-beta.ts
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
index b7e3559f6..622a8729a 100644
--- a/.github/workflows/release.yaml
+++ b/.github/workflows/release.yaml
@@ -4,7 +4,6 @@ on:
push:
branches:
- main
- - v2.0.0
env:
FORCE_COLOR: true
@@ -13,7 +12,7 @@ jobs:
release:
name: Release
runs-on: ubuntu-latest
- if: ${{ github.repository == 'PaloAltoNetworks/docusaurus-openapi-docs' && github.ref == 'refs/heads/main' && github.event_name == 'push' }}
+ if: ${{ github.repository == 'PaloAltoNetworks/docusaurus-openapi-docs' }}
steps:
- uses: actions/checkout@v3
with:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9b5a61703..740022163 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,44 @@
+## 1.7.3 (May 5, 2023)
+
+High level enhancements
+
+- Add optional `markdownGenerators` config option ([#567](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/pull/567))
+- Add more debug info to resolveJsonRefs ([#560](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/pull/560))
+
+Other enhancements and bug fixes
+
+- [Bug] Add handler for oneOf properties, fix nested `
` and avoid duplicate properties in createAnyOneOf ([#561](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/pull/561))
+
+## 1.7.2 (Apr 20, 2023)
+
+High level enhancements
+
+- Upgrade redocly-core and json-schema-ref-parser ([#551](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/pull/551))
+
+## 1.7.1 (Apr 20, 2023)
+
+High level enhancements
+
+- Remove PWA ([#548](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/pull/548))
+- Add classnames to MethodEndpoint ([#541](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/pull/541))
+- [Enhancement] Add support for rendering vendor extensions ([#527](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/pull/527))
+- Update deploy preview workflow
+
+## 1.7.0 (Mar 20, 2023)
+
+High level enhancements
+
+- Added support for powershell
+- Now including `language / variant` in code block title.
+
+Other enhancements and bug fixes
+
+- [Bug] Fix double scrollbars ([#504](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/pull/504))
+- [Enhancement] Add support for powershell ([#507](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/pull/507))
+- Bump webpack from 5.75.0 to 5.76.0 ([#498](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/pull/498))
+- [Bug] Set ignoreAdditionalProperties back to true ([#493](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/pull/493))
+- [Bug] Add bold, svg and ensure parity between opening/closing regex ([#479](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/pull/479))
+
## 1.6.1 (Feb 28, 2023)
High level enhancements
diff --git a/README.md b/README.md
index b55e2b573..9dc7e938f 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@ OpenAPI plugin for generating API reference docs in Docusaurus v2.
-[](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/blob/HEAD/LICENSE) [](https://www.npmjs.com/package/docusaurus-plugin-openapi-docs) [](https://www.npmjs.com/package/docusaurus-plugin-openapi-docs) [](https://www.npmjs.com/package/docusaurus-plugin-openapi-docs)
+[](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/blob/HEAD/LICENSE) [](https://www.npmjs.com/package/docusaurus-plugin-openapi-docs) [](https://www.npmjs.com/package/docusaurus-plugin-openapi-docs) [](https://www.npmjs.com/package/docusaurus-plugin-openapi-docs) [](https://www.npmjs.com/package/docusaurus-plugin-openapi-docs)
[](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/actions/workflows/validate.yaml) [](https://github.com/prettier/prettier) [](https://www.cypress.io/) [](https://github.com/facebook/jest) [](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/blob/HEAD/CONTRIBUTING.md#pull-requests)
@@ -35,9 +35,39 @@ Key Features:
- **Compatible:** Works with Swagger 2.0 and OpenAPI 3.0.
- **Fast:** Convert large OpenAPI specs into MDX docs in seconds. 🔥
- **Stylish:** Based on the same [Infima styling framework](https://infima.dev/) that powers the Docusaurus UI.
-- **Capable:** Supports single, multi and _even micro_ OpenAPI specs.
+- **Flexible:** Supports single, multi and _even micro_ OpenAPI specs.
-## Installation
+## Compatibility Matrix
+
+| Docusaurus OpenAPI Docs | Docusaurus |
+| ----------------------- | --------------- |
+| 1.x.x | `2.0.1 - 2.2.0` |
+| 2.x.x (beta) | `2.3.0 - 2.4.0` |
+
+## Bootstrapping from Template (new Docusaurus site)
+
+Run the following to bootstrap a Docsaurus v2 site (classic theme) with `docusaurus-openapi-docs`:
+
+```bash
+npx create-docusaurus@2.2.0 my-website --package-manager yarn
+```
+
+> When prompted to select a template choose `Git repository`.
+
+Template Repository URL:
+
+```bash
+https://github.com/PaloAltoNetworks/docusaurus-template-openapi-docs.git
+```
+
+> When asked how the template repo should be cloned choose "copy" (unless you know better).
+
+```bash
+cd my-website
+yarn start
+```
+
+## Installation (existing Docusaurus site)
Plugin:
@@ -53,7 +83,7 @@ yarn add docusaurus-theme-openapi-docs
## Configuring `docusaurus.config.js` (Plugin and theme usage)
-Here is an example of properly configuring your `docusaurus.config.js` file for `docusaurus-plugin-openapi-docs` and `docusaurus-theme-openapi-docs` usage.
+Here is an example of properly configuring `docusaurus.config.js` file for `docusaurus-plugin-openapi-docs` and `docusaurus-theme-openapi-docs` usage.
```js
// docusaurus.config.js
@@ -66,17 +96,13 @@ Here is an example of properly configuring your `docusaurus.config.js` file for
({
docs: {
sidebarPath: require.resolve("./sidebars.js"),
- // Please change this to your repo.
- // Remove this to remove the "edit this page" links.
editUrl:
"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/",
docLayoutComponent: "@theme/DocPage",
- docItemComponent: "@theme/ApiItem" // Derived from docusaurus-theme-openapi-docs
+ docItemComponent: "@theme/ApiItem" // derived from docusaurus-theme-openapi-docs
},
blog: {
showReadingTime: true,
- // Please change this to your repo.
- // Remove this to remove the "edit this page" links.
editUrl:
"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/"
},
@@ -91,14 +117,14 @@ Here is an example of properly configuring your `docusaurus.config.js` file for
[
'docusaurus-plugin-openapi-docs',
{
- id: "apiDocs",
- docsPluginId: "classic",
+ id: "api", // plugin id
+ docsPluginId: "classic", // id of plugin-content-docs or preset for rendering docs
config: {
- petstore: { // Note: petstore key is treated as the and can be used to specify an API doc instance when using CLI commands
- specPath: "examples/petstore.yaml", // Path to designated spec file
- outputDir: "api/petstore", // Output directory for generated .mdx docs
- sidebarOptions: {
- groupPathsBy: "tag",
+ petstore: { // the referenced when running CLI commands
+ specPath: "examples/petstore.yaml", // path to OpenAPI spec, URLs supported
+ outputDir: "api/petstore", // output directory for generated files
+ sidebarOptions: { // optional, instructs plugin to generate sidebar.js
+ groupPathsBy: "tag", // group sidebar items by operation "tag"
},
},
burgers: {
@@ -109,7 +135,7 @@ Here is an example of properly configuring your `docusaurus.config.js` file for
},
]
],
- themes: ["docusaurus-theme-openapi-docs"], // Allows use of @theme/ApiItem and other components
+ themes: ["docusaurus-theme-openapi-docs"], // export theme components
}
```
@@ -121,26 +147,28 @@ The `docusaurus-plugin-openapi-docs` plugin can be configured with the following
| Name | Type | Default | Description |
| -------------- | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `id` | `string` | `null` | A unique document id. |
+| `id` | `string` | `null` | A unique plugin ID. |
| `docsPluginId` | `string` | `null` | The ID associated with the `plugin-content-docs` or `preset` instance used to render the OpenAPI docs (e.g. "your-plugin-id", "classic", "default"). |
### config
`config` can be configured with the following options:
-| Name | Type | Default | Description |
-| ---------------- | --------- | ------- | --------------------------------------------------------------------------------------------------------------------------- |
-| `specPath` | `string` | `null` | Designated URL or path to the source of an OpenAPI specification file or directory of multiple OpenAPI specification files. |
-| `ouputDir` | `string` | `null` | Desired output path for generated MDX files. |
-| `proxy` | `string` | `null` | _Optional:_ Proxy URL to prepend to base URL when performing API requests from browser. |
-| `template` | `string` | `null` | _Optional:_ Customize MDX content with a desired template. |
-| `downloadUrl` | `string` | `null` | _Optional:_ Designated URL for downloading OpenAPI specification. (requires `info` section/doc) |
-| `hideSendButton` | `boolean` | `null` | _Optional:_ If set to `true`, hides the "Send API Request" button in API demo panel |
-| `sidebarOptions` | `object` | `null` | _Optional:_ Set of options for sidebar configuration. See below for a list of supported options. |
-| `version` | `string` | `null` | _Optional:_ Version assigned to single or micro-spec API specified in `specPath`. |
-| `label` | `string` | `null` | _Optional:_ Version label used when generating version selector dropdown menu. |
-| `baseUrl` | `string` | `null` | _Optional:_ Version base URL used when generating version selector dropdown menu. |
-| `versions` | `object` | `null` | _Optional:_ Set of options for versioning configuration. See below for a list of supported options. |
+| Name | Type | Default | Description |
+| -------------------- | --------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
+| `specPath` | `string` | `null` | Designated URL or path to the source of an OpenAPI specification file or directory of multiple OpenAPI specification files. |
+| `ouputDir` | `string` | `null` | Desired output path for generated MDX and sidebar files. |
+| `proxy` | `string` | `null` | _Optional:_ Proxy URL to prepend to base URL when performing API requests from browser. |
+| `template` | `string` | `null` | _Optional:_ Customize MDX content with a desired template. |
+| `downloadUrl` | `string` | `null` | _Optional:_ Designated URL for downloading OpenAPI specification. (requires `info` section/doc) |
+| `hideSendButton` | `boolean` | `null` | _Optional:_ If set to `true`, hides the "Send API Request" button in API demo panel |
+| `showExtensions` | `boolean` | `null` | _Optional:_ If set to `true`, renders operation-level vendor-extensions in description. |
+| `sidebarOptions` | `object` | `null` | _Optional:_ Set of options for sidebar configuration. See below for a list of supported options. |
+| `version` | `string` | `null` | _Optional:_ Version assigned to single or micro-spec API specified in `specPath`. |
+| `label` | `string` | `null` | _Optional:_ Version label used when generating version selector dropdown menu. |
+| `baseUrl` | `string` | `null` | _Optional:_ Version base URL used when generating version selector dropdown menu. |
+| `versions` | `object` | `null` | _Optional:_ Set of options for versioning configuration. See below for a list of supported options. |
+| `markdownGenerators` | `object` | `null` | _Optional:_ Customize MDX content with a set of options for specifying markdown generator functions. See below for a list of supported options. |
`sidebarOptions` can be configured with the following options:
@@ -165,6 +193,16 @@ The `docusaurus-plugin-openapi-docs` plugin can be configured with the following
> All versions will automatically inherit `sidebarOptions` from the parent/base config.
+### markdownGenerators
+
+`markdownGenerators` can be configured with the following options:
+
+| Name | Type | Default | Description |
+| ------------------ | ---------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
+| `createApiPageMD` | `function` | `null` | _Optional:_ Returns a string of the raw markdown body for API pages.
**Function type:** `(pageData: ApiPageMetadata) => string` |
+| `createInfoPageMD` | `function` | `null` | _Optional:_ Returns a string of the raw markdown body for info pages.
**Function type:** `(pageData: InfoPageMetadata) => string` |
+| `createTagPageMD` | `function` | `null` | _Optional:_ Returns a string of the raw markdown body for tag pages.
**Function type:** `(pageData: TagPageMetadata) => string` |
+
## CLI Usage
```bash
@@ -255,29 +293,6 @@ yarn docusaurus gen-api-docs:version petstore:all
> Substitue `all` with a specific version ID to generate/clean a specific version. Generating for `all` or a specific version ID will automatically update the `versions.json` file.
-## Installing from Template
-
-Run the following to bootstrap a Docsaurus v2 site (classic theme) with `docusaurus-openapi-docs`:
-
-```bash
-npx create-docusaurus@2.1.0 my-website --package-manager yarn
-```
-
-> When prompted to select a template choose `Git repository`.
-
-Template Repository URL:
-
-```bash
-https://github.com/PaloAltoNetworks/docusaurus-template-openapi-docs.git
-```
-
-> When asked how the template repo should be cloned choose "copy" (unless you know better).
-
-```bash
-cd my-website
-yarn
-```
-
## Developer Quick Start
> Looking to make a contribution? Make sure to checkout out our contributing guide.
diff --git a/demo/api.mustache b/demo/api.mustache
index 95f5cbb77..9a78cab49 100644
--- a/demo/api.mustache
+++ b/demo/api.mustache
@@ -31,6 +31,9 @@ proxy: {{{frontMatter.proxy}}}
{{#frontMatter.hide_send_button}}
hide_send_button: true
{{/frontMatter.hide_send_button}}
+{{#frontMatter.show_extensions}}
+show_extensions: true
+{{/frontMatter.show_extensions}}
---
{{{markdown}}}
\ No newline at end of file
diff --git a/demo/docs/customization/languagetabs.md b/demo/docs/customization/languagetabs.md
index bdcf89f28..0d9de3d36 100644
--- a/demo/docs/customization/languagetabs.md
+++ b/demo/docs/customization/languagetabs.md
@@ -10,16 +10,17 @@ description: Configuring language tabs for the API Demo Panel.
The Docusaurus OpenAPI docs plugin comes with support for 8 languages which you can render as code snippets on an API operation page. The languages currently supported are:
-| Language | Prism Highlighter | Variants |
-| -------- | ----------------- | ------------------------------------------------ |
-| `curl` | bash | `curl`\* |
-| `python` | python | `requests`\*, `http.client` |
-| `go` | go | `native`\* |
-| `nodejs` | javascript | `axios`\*, `native`, `requests`, `unirest` |
-| `ruby` | ruby | `net::http`\* |
-| `csharp` | csharp | `restsharp`\*, `httpclient` |
-| `php` | php | `curl`\*, `guzzle`, `pecl_http`, `http_request2` |
-| `java` | java | `okhttp`\*, `unirest` |
+| Language | Prism Highlighter | Variants |
+| ------------ | ----------------- | ------------------------------------------------ |
+| `curl` | bash | `curl`\* |
+| `python` | python | `requests`\*, `http.client` |
+| `go` | go | `native`\* |
+| `nodejs` | javascript | `axios`\*, `native`, `requests`, `unirest` |
+| `ruby` | ruby | `net::http`\* |
+| `csharp` | csharp | `restsharp`\*, `httpclient` |
+| `php` | php | `curl`\*, `guzzle`, `pecl_http`, `http_request2` |
+| `java` | java | `okhttp`\*, `unirest` |
+| `powershell` | powershell | `RestMethod`\* |
\* Default variant
@@ -60,6 +61,7 @@ The demo site disables the `ruby` and `php` languages using the following `langu
highlight: "python",
language: "python",
logoClass: "python",
+ variant: "requests",
},
{
highlight: "go",
@@ -70,26 +72,34 @@ The demo site disables the `ruby` and `php` languages using the following `langu
highlight: "javascript",
language: "nodejs",
logoClass: "nodejs",
+ variant: "axios",
+ },
+ {
+ highlight: "ruby",
+ language: "ruby",
+ logoClass: "ruby",
},
- // {
- // highlight: "ruby",
- // language: "ruby",
- // logoClass: "ruby",
- // },
{
highlight: "csharp",
language: "csharp",
logoClass: "csharp",
+ variant: "httpclient",
+ },
+ {
+ highlight: "php",
+ language: "php",
+ logoClass: "php",
},
- // {
- // highlight: "php",
- // language: "php",
- // logoClass: "php",
- // },
{
highlight: "java",
language: "java",
logoClass: "java",
+ variant: "unirest",
+ },
+ {
+ highlight: "powershell",
+ language: "powershell",
+ logoClass: "powershell",
},
],
```
diff --git a/demo/docs/intro.mdx b/demo/docs/intro.mdx
index 6881bbfab..06356dcdc 100644
--- a/demo/docs/intro.mdx
+++ b/demo/docs/intro.mdx
@@ -27,7 +27,7 @@ OpenAPI plugin for generating API reference docs in Docusaurus v2.
-[](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/blob/HEAD/LICENSE) [](https://www.npmjs.com/package/docusaurus-plugin-openapi-docs) [](https://www.npmjs.com/package/docusaurus-plugin-openapi-docs) [](https://www.npmjs.com/package/docusaurus-plugin-openapi-docs)
+[](https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/blob/HEAD/LICENSE) [](https://www.npmjs.com/package/docusaurus-plugin-openapi-docs) [](https://www.npmjs.com/package/docusaurus-plugin-openapi-docs) [](https://www.npmjs.com/package/docusaurus-plugin-openapi-docs) [](https://www.npmjs.com/package/docusaurus-plugin-openapi-docs)