https://github.com/janbuchar/payload-oapi
A Payload CMS plugin for OpenAPI (3.0, 3.1) specification generation
https://github.com/janbuchar/payload-oapi
api-documentation openapi openapi3 openapi31 payload-plugin payloadcms
Last synced: 4 months ago
JSON representation
A Payload CMS plugin for OpenAPI (3.0, 3.1) specification generation
- Host: GitHub
- URL: https://github.com/janbuchar/payload-oapi
- Owner: janbuchar
- License: mit
- Created: 2023-03-25T11:34:02.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2025-03-11T07:47:50.000Z (4 months ago)
- Last Synced: 2025-03-18T13:16:15.622Z (4 months ago)
- Topics: api-documentation, openapi, openapi3, openapi31, payload-plugin, payloadcms
- Language: TypeScript
- Homepage:
- Size: 575 KB
- Stars: 30
- Watchers: 3
- Forks: 4
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Payload OpenAPI Plugin
[](https://www.npmjs.com/package/payload-oapi)
Autogenerate an OpenAPI specification from your Payload CMS instance and use it for documentation or to generate client SDKs.
# Roadmap
- [x] Complete description of collection CRUD endpoints
- [x] Complete description of globals CRUD endpoints
- [x] Integrated Swagger UI and Rapidoc
- [ ] Custom endpoints
- [ ] Authentication endpoints and specification
- [ ] Preferences endpoints# Installation
Install the plugin from npm - `yarn add payload-oapi` or `npm i payload-oapi`.
# Setup
To add the OpenAPI specification endpoint to your Payload app, simply import the `openapi` plugin and add it to your payload configuration:
```typescript
import { openapi } from 'payload-oapi'buildConfig({
plugins: [
openapi({ openapiVersion: '3.0', metadata: { title: 'Dev API', version: '0.0.1' } }),
// ...
],
// ...
})
```To add a documentation UI, use the `swaggerUI`, `rapidoc` or `redoc` plugins, respectively:
```typescript
import { openapi, swaggerUI } from 'payload-oapi'buildConfig({
plugins: [
openapi(/* ... */),
swaggerUI({/* ... */})
],
// ...
})
```