{"_id":"@apiboost/omnispec","name":"@apiboost/omnispec","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@apiboost/omnispec","description":"React components for rendering OpenAPI and AsyncAPI documentation, with Try-It, authentication, theming, and a framework-agnostic web component","author":{"name":"The Apiboost Team"},"version":"1.0.0","packageManager":"pnpm@11.24.0","engines":{"node":">=18"},"main":"dist/cjs/index.js","module":"dist/esm/index.js","types":"dist/types/index.d.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./openapi":{"types":"./dist/types/openapi/index.d.ts","import":"./dist/esm/openapi/index.js","require":"./dist/cjs/openapi/index.js"},"./asyncapi":{"types":"./dist/types/asyncapi/index.d.ts","import":"./dist/esm/asyncapi/index.js","require":"./dist/cjs/asyncapi/index.js"},"./server":{"types":"./dist/types/server/index.d.ts","import":"./dist/esm/server/index.js","require":"./dist/cjs/server/index.js"},"./core":{"types":"./dist/types/core/public.d.ts","import":"./dist/esm/core/public.js","require":"./dist/cjs/core/public.js"},"./wc":{"types":"./dist/types/wc/index.d.ts","import":"./dist/esm/wc/index.js","require":"./dist/cjs/wc/index.js"},"./wc/standalone":"./dist/wc/standalone.js"},"sideEffects":false,"scripts":{"prepare":"husky || true && pnpm run build","prepublishOnly":"pnpm run build && pnpm run check:licenses && pnpm run verify:pack","check:licenses":"node scripts/check-licenses.mjs","licenses:report":"node scripts/generate-license-report.mjs","verify:pack":"node scripts/verify-tarball.mjs","build":"pnpm run clean && pnpm run build:lib && pnpm run build:wc && pnpm run build:types","build:esm":"rollup -c rollup.config.ts --configPlugin esbuild","build:wc":"webpack --config webpack.wc.config.ts","build:types":"tsc --emitDeclarationOnly --outDir dist/types","watch":"rollup -c rollup.config.ts --configPlugin esbuild --watch","dev":"storybook dev -p 6006","lint":"eslint src/ --max-warnings=0","lint:fix":"eslint src/ --fix --max-warnings=0","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","storybook:build":"storybook build","typecheck":"tsc --noEmit","clean":"rm -rf dist node_modules/.cache","build:lib":"rollup -c rollup.config.ts --configPlugin esbuild"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0","express-rate-limit":"^7.0.0","react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"express":{"optional":true},"express-rate-limit":{"optional":true}},"devDependencies":{"@commitlint/cli":"^21.0.2","@commitlint/config-conventional":"^21.0.2","@eslint/js":"^9.39.4","@rollup/plugin-alias":"^6.0.0","@rollup/plugin-commonjs":"^29.0.3","@rollup/plugin-json":"^6.1.0","@rollup/plugin-node-resolve":"^16.0.3","@rollup/plugin-typescript":"^12.3.0","@storybook/addon-docs":"^10.4.4","@storybook/react":"^10.4.4","@storybook/react-webpack5":"^10.4.4","@storybook/test":"^8.6.18","@stylistic/eslint-plugin":"^4.4.1","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@types/express":"^5.0.6","@types/prismjs":"^1.26.6","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","eslint":"^9.39.4","eslint-plugin-storybook":"10.3.6","husky":"^9.1.7","jsdom":"^26.1.0","lint-staged":"^17.0.7","magic-string":"^1.1.0","raw-loader":"^4.0.2","react":"^19.2.7","react-dom":"^19.2.7","rollup":"^4.62.2","rollup-plugin-esbuild":"^6.2.1","semantic-release":"^25.0.9","storybook":"^10.4.4","ts-loader":"^9.6.0","ts-node":"^10.9.2","tslib":"^2.8.1","typescript":"^5.9.3","typescript-eslint":"^8.61.0","vitest":"^3.2.6","webpack":"^5.107.2","webpack-cli":"^6.0.1"},"dependencies":{"@emotion/css":"^11.13.5","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","fast-xml-parser":"^5.8.0","graphql":"^16.14.2","lucide-react":"^1.17.0","marked":"^15.0.12","motion":"^12.40.0","prismjs":"^1.30.0","protobufjs":"^8.7.1","yaml":"^2.9.0"},"keywords":["openapi","asyncapi","api-documentation","react","swagger"],"lint-staged":{"src/**/*.{ts,tsx}":["eslint --fix --max-warnings=0"]},"license":"Apache-2.0","publishConfig":{"access":"public","provenance":true},"repository":{"type":"git","url":"git+https://github.com/apiboost/omnispec.git"},"homepage":"https://github.com/apiboost/omnispec#readme","bugs":{"url":"https://github.com/apiboost/omnispec/issues"},"gitHead":"9678c92ee6cfc11f7071cdebde35fbed2188c09c","_id":"@apiboost/omnispec@1.0.0","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-MQ8ZLwZvmOnJPQr8ZoPn/zMvXcMf1zKiQbmhh1/0v2tjNdh62qMqVbK2ylZ/ZpNT109ZXW/mJ0qeqmwjtMnhAg==","shasum":"3aa59144a91301bfd8e74839b88eabb0b9c21c7d","tarball":"https://registry.npmjs.org/@apiboost/omnispec/-/omnispec-1.0.0.tgz","fileCount":347,"unpackedSize":12185741,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apiboost%2fomnispec@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCDh4RNaTsqlFavtyBEtDXtM5Xt+5DooVYXwR2Q1ywBUAIgIHkjRNqQ0BpXKt7c0sn81YVBjUzk0yUgFGZuGWemY8Y="}]},"_npmUser":{"name":"psweeney-achieve","email":"patrick.sweeney@achieveinternet.com"},"directories":{},"maintainers":[{"name":"psweeney-achieve","email":"patrick.sweeney@achieveinternet.com"},{"name":"shawn-achieve","email":"shawn.smiley@achieveinternet.com"},{"name":"shawn-apiboost","email":"shawn.smiley@apiboost.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/omnispec_1.0.0_1787764029532_0.7511626838141212"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-26T17:07:09.321Z","1.0.0":"2026-08-26T17:07:09.740Z","modified":"2026-08-26T17:07:10.474Z"},"maintainers":[{"name":"psweeney-achieve","email":"patrick.sweeney@achieveinternet.com"},{"name":"shawn-achieve","email":"shawn.smiley@achieveinternet.com"},{"name":"shawn-apiboost","email":"shawn.smiley@apiboost.com"}],"description":"React components for rendering OpenAPI and AsyncAPI documentation, with Try-It, authentication, theming, and a framework-agnostic web component","homepage":"https://github.com/apiboost/omnispec#readme","keywords":["openapi","asyncapi","api-documentation","react","swagger"],"repository":{"type":"git","url":"git+https://github.com/apiboost/omnispec.git"},"author":{"name":"The Apiboost Team"},"bugs":{"url":"https://github.com/apiboost/omnispec/issues"},"license":"Apache-2.0","readme":"# @apiboost/omnispec\n\n[![npm](https://img.shields.io/npm/v/@apiboost/omnispec)](https://www.npmjs.com/package/@apiboost/omnispec)\n[![CI](https://github.com/apiboost/omnispec/actions/workflows/ci.yml/badge.svg)](https://github.com/apiboost/omnispec/actions/workflows/ci.yml)\n[![License: Apache-2.0](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](./LICENSE.md)\n[![Docs](https://img.shields.io/badge/docs-live-023E8A.svg)](https://apiboost.github.io/omnispec/)\n\n**Apiboost OmniSpec** is the open-source React renderer for **OpenAPI** and\n**AsyncAPI** documentation, with Try-It request execution, authentication,\ntheming, code samples, an optional backend proxy, and a framework-agnostic Web\nComponent.\n\nThis is the **open-source core** (Apache-2.0). GraphQL, SOAP/WSDL, and gRPC\nrenderers plus other premium features live in the commercial **Pro** edition. See [Free vs Pro](#free-vs-pro).\n\n📖 **[Full documentation & guides](https://apiboost.github.io/omnispec/)** · ▶️ **[Live demo](https://apiboost.github.io/omnispec/demo)**\n\n## Supported specifications\n\n| Spec | Component | Versions | Edition |\n|------|-----------|----------|---------|\n| OpenAPI / Swagger | `<OpenApiSpec>` | 2.0, 3.0.x, 3.1 | **Free** |\n| AsyncAPI | `<AsyncApiSpec>` | 2.x, 3.x | **Free** |\n| GraphQL | `<GraphqlSpec>` | SDL + Introspection | Pro |\n| SOAP / WSDL | `<SoapSpec>` | WSDL 1.1 | Pro |\n| gRPC / Protobuf | `<GrpcSpec>` | proto2, proto3 | Pro |\n\nA unified `<OmniSpecRenderer>` auto-detects the spec type and renders the correct\nviewer. With only the free package installed it renders OpenAPI and AsyncAPI; for\nother spec types it shows an upgrade prompt until\n[Pro](https://apiboost.com/omnispec?utm_source=omnispec&utm_medium=readme&utm_campaign=pro)\nis added.\n\n## Installation\n\n```bash\nnpm install @apiboost/omnispec\n# or: pnpm add @apiboost/omnispec\n```\n\nRequires **React 18 or 19** (`react`, `react-dom`) as peer dependencies.\nEverything else, including `@emotion/css` for styling, is bundled, so there is\nnothing else to install. (If you use the backend proxy, also add `express` and\n`express-rate-limit`.)\n\n## Quick start\n\n```tsx\nimport { OmniSpecRenderer } from '@apiboost/omnispec'\n\nfunction Docs() {\n  return (\n    <OmniSpecRenderer\n      spec=\"https://petstore3.swagger.io/api/v3/openapi.json\"\n      theme={{ base: 'auto' }}\n    />\n  )\n}\n```\n\n`<OmniSpecRenderer>` auto-detects the spec type. You can also import a specific\nrenderer or the Express proxy middleware directly:\n\n```tsx\nimport { OpenApiSpec } from '@apiboost/omnispec/openapi'\nimport { AsyncApiSpec } from '@apiboost/omnispec/asyncapi'\nimport { createProxyRouter } from '@apiboost/omnispec/server'\n```\n\nSee the [Getting Started guide](https://apiboost.github.io/omnispec/docs/getting-started)\nfor framework setup (Vite, Next.js, Web Component, SSR) and every configuration option.\n\n## Features\n\n- **OpenAPI (2.0 / 3.0 / 3.1) and AsyncAPI (2 / 3)** rendering, YAML or JSON, auto-detected\n- **Try-It**: send requests directly from the browser or through an optional backend proxy\n- **Authentication**: API key, Basic, Bearer, and OAuth 2.0 flow details with manual token entry\n- **Code samples** in 6 languages\n- **Vendor extensions**: `x-logo`, `x-badges`, `x-codeSamples`, `x-tagGroups`, `x-displayName`, `x-internal`, `x-enumDescriptions`\n- **Light / dark / auto themes** with 80+ customizable `--omnispec-*` CSS design tokens\n- **Configurable layouts**: sidebar (left/right), stacked, and docked or inline Try-It\n- **Sidebar navigation, slots, and display modes** for embedding in your own portal\n- **Framework-agnostic Web Component** (`<omnispec-renderer>`) for Vue, Angular, Svelte, or vanilla HTML\n- **Zero Node.js dependencies** in the browser (no polyfills needed)\n\nFull prop and configuration reference:\n[API Reference](https://apiboost.github.io/omnispec/docs/api-reference) ·\n[Configuration](https://apiboost.github.io/omnispec/docs/configuration) ·\n[Theming](https://apiboost.github.io/omnispec/docs/theming).\n\n> **Pro** adds GraphQL, SOAP/WSDL, and gRPC renderers; full white-label theming\n> (`theme.overrides` across 80+ tokens); the `table`/`card` schema styles; and the\n> interactive OAuth 2.0 Authorization Code + PKCE \"Get Token\" flow with OpenID\n> Connect discovery. See [Free vs Pro](#free-vs-pro).\n\n## Web Component\n\nA framework-agnostic Web Component (`<omnispec-renderer>`) ships in the same\npackage. It mounts the React renderer internally and isolates styles in an open\nshadow root, so it works in Vue, Angular, Svelte, or vanilla HTML. Zero-build\nusage:\n\n```html\n<script src=\"https://unpkg.com/@apiboost/omnispec@latest/dist/wc/standalone.js\"></script>\n<omnispec-renderer\n  spec-url=\"https://petstore3.swagger.io/api/v3/openapi.json\"\n  theme-base=\"auto\"\n></omnispec-renderer>\n```\n\nSee the [Web Component guide](https://apiboost.github.io/omnispec/docs/web-component)\nfor the full attribute/property/event API and framework recipes.\n\n## Documentation\n\nEverything is at **[apiboost.github.io/omnispec](https://apiboost.github.io/omnispec/)**:\n\n- [Getting Started](https://apiboost.github.io/omnispec/docs/getting-started): install, quick start, framework setup\n- [Configuration](https://apiboost.github.io/omnispec/docs/configuration): layouts, Try-It modes, slots, callbacks\n- [Theming](https://apiboost.github.io/omnispec/docs/theming): design tokens and custom themes\n- [API Reference](https://apiboost.github.io/omnispec/docs/api-reference): props for every component\n- [Backend Integration](https://apiboost.github.io/omnispec/docs/backend-integration): proxy setup, serving specs\n- [Try-It](https://apiboost.github.io/omnispec/docs/try-it): direct vs proxy mode, endpoint contract\n- [Web Component](https://apiboost.github.io/omnispec/docs/web-component): Web Component API and framework recipes\n- [Troubleshooting](https://apiboost.github.io/omnispec/docs/troubleshooting): common issues and FAQ\n\n## Free vs Pro\n\n`@apiboost/omnispec` (this package) is the fully functional, Apache-2.0\nopen-source core. Apiboost also offers a commercial **Pro** edition that builds\non this core and adds:\n\n- **GraphQL, SOAP/WSDL, and gRPC** renderers\n- **Full white-label theming** (`theme.overrides`, 80+ tokens) and the `table`/`card` schema styles\n- **Interactive OAuth 2.0** (Authorization Code + PKCE \"Get Token\") and **OpenID Connect** discovery\n\nThe documentation vendor extensions (`x-logo`, `x-badges`, `x-codeSamples`,\n`x-tagGroups`, `x-displayName`, `x-internal`, `x-enumDescriptions`) are supported\nin the **free** core.\n\nUsing the open-source core never requires Pro. See [LICENSING.md](./LICENSING.md)\nand [apiboost.com/omnispec](https://apiboost.com/omnispec?utm_source=omnispec&utm_medium=readme&utm_campaign=pro).\n\n## Development\n\nRequires Node.js (see [`.nvmrc`](./.nvmrc)) and pnpm.\n\n```bash\npnpm install\npnpm run dev          # Storybook at http://localhost:6006\npnpm run test\npnpm run build\npnpm run lint\npnpm run typecheck\n```\n\nContributions are welcome under the Apache License 2.0 with a Developer\nCertificate of Origin sign-off (`git commit -s`). See\n[CONTRIBUTING.md](./CONTRIBUTING.md).\n\n## License\n\nApache License 2.0. See [LICENSE.md](./LICENSE.md) for the full text and\n[LICENSING.md](./LICENSING.md) for how the open-source core relates to the\ncommercial Pro edition. \"Apiboost\" and \"Apiboost OmniSpec\" are trademarks of\nApiboost, Inc. See [TRADEMARKS.md](./TRADEMARKS.md).\n","readmeFilename":"README.md","_rev":"1-daa88773a508f668237be3e7f65af1e5"}