Integrations
OpenAPI
Generating docs for OpenAPI schema
Server Component Only
It only works under RSC environments.
Manual Setup
Install the required packages.
npm i fumadocs-openapi shiki
For Bun PM
If you encountered any issues, please check #2223.
Generate Styles
Add the following line:
@import 'tailwindcss';
@import 'fumadocs-ui/css/neutral.css';
@import 'fumadocs-ui/css/preset.css';
@import 'fumadocs-openapi/css/preset.css';
Configure Pages
Create an OpenAPI instance on the server.
import { createOpenAPI } from 'fumadocs-openapi/server';
export const openapi = createOpenAPI({
// the OpenAPI schema, you can also give it an external URL.
input: ['./unkey.json'],
});
import { transformerOpenAPI } from 'fumadocs-openapi/server';
import { loader } from 'fumadocs-core/source';
export const source = loader({
// adds a badge to each page item in page tree
pageTree: {
transformers: [transformerOpenAPI()],
},
});
Add APIPage
to your MDX Components, so that you can use it in MDX files.
import defaultComponents from 'fumadocs-ui/mdx';
import { APIPage } from 'fumadocs-openapi/ui';
import { openapi } from '@/lib/openapi';
import type { MDXComponents } from 'mdx/types';
export function getMDXComponents(components?: MDXComponents): MDXComponents {
return {
...defaultComponents,
APIPage: (props) => <APIPage {...openapi.getAPIPageProps(props)} />,
...components,
};
}
APIPage
is a React Server Component.
Generate Files
You can generate MDX files directly from your OpenAPI schema.
Create a script:
import { generateFiles } from 'fumadocs-openapi';
import { openapi } from '@/lib/openapi';
void generateFiles({
input: openapi,
output: './content/docs',
// we recommend to enable it
// make sure your endpoint description doesn't break MDX syntax.
includeDescription: true,
});
Only OpenAPI 3.0 and 3.1 are supported.
Generate docs with the script:
bun ./scripts/generate-docs.ts
Features
The official OpenAPI integration supports:
- Basic API endpoint information
- Interactive API playground
- Example code to send request (in different programming languages)
- Response samples and TypeScript definitions
- Request parameters and body generated from schemas
Demo
How is this guide?
Last updated on