Skip to main content

manage-server-data-generate-rtk-query-from-openapi

Use this when generating RTK Query endpoints from OpenAPI schemas with @rtk-query/codegen-openapi. Covers the empty API pattern, filterEndpoints, endpointOverrides, generated tags, and reviewing generated output before it becomes part of the app.

Source facts

Repository
reduxjs/redux-toolkit
Last source activity
September 6, 2026 at 18:43
Detected SKILL.md language
English
Stars
11,228
Forks
1,299

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
2 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
manage-server-data/generate-rtk-query-from-openapi
description
Use this when generating RTK Query endpoints from OpenAPI schemas with @rtk-query/codegen-openapi. Covers the empty API pattern, filterEndpoints, endpointOverrides, generated tags, and reviewing generated output before it becomes part of the app.
type
composition
library
@rtk-query/codegen-openapi
library_version
2.2.0
requires
["manage-server-data/adopt-rtk-query"]
sources
["reduxjs/redux-toolkit:docs/rtk-query/usage/code-generation.mdx","reduxjs/redux-toolkit:packages/rtk-query-codegen-openapi/src/types.ts","reduxjs/redux-toolkit:packages/rtk-query-codegen-openapi/src/generate.ts","reduxjs/redux-toolkit:packages/rtk-query-codegen-openapi/README.md"]
# Generate RTK Query From OpenAPI ## Setup ```ts // file: src/store/emptyApi.ts import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'; export const emptySplitApi = createApi({ reducerPath: 'api', baseQuery: fetchBaseQuery({ baseUrl: '/api/' }), endpoints: () => ({}), }); // file: openapi-config.ts import type { ConfigFile } from '@rtk-query/codegen-openapi'; const config: ConfigFile = { schemaFile: 'https://petstore3.swagger.io/api/v3/openapi.json', apiFile: './src/store/emptyApi.ts', apiImport: 'emptySplitApi', outputFile: './src/store/petApi.ts', exportName: 'petApi', hooks: true, }; export default config; ``` Run: ```bash npx @rtk-query/codegen-openapi openapi-config.ts ``` ## Core Patterns ### Generate into an empty shared API ```ts import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'; export const emptySplitApi = createApi({ reducerPath: 'api', baseQuery: fetchBaseQuery({ baseUrl: '/api/' }), endpoints: () => ({}), }); ``` Codegen works best when it extends a single RTK Query architecture instead of creating standalone API roots. ### Filter endpoints when the schema is too broad ```ts import type { ConfigFile } from '@rtk-query/codegen-openapi'; const config: ConfigFile = { schemaFile: './openapi.json', apiFile: './src/store/emptyApi.ts', apiImport: 'emptySplitApi', outputFile: './src/store/userApi.ts', exportName: 'userApi', hooks: true, filterEndpoints: ['loginUser', /User/], }; export default config; ``` Start with a narrow slice of the schema if the full surface area is too noisy or the package boundaries differ from the OpenAPI file. ### Use `endpointOverrides` to fix generation results ```ts import type { ConfigFile } from '@rtk-query/codegen-openapi'; const config: ConfigFile = { schemaFile: './openapi.json', apiFile: './src/store/emptyApi.ts', apiImport: 'emptySplitApi', outputFile: './src/store/petApi.ts', exportName: 'petApi', hooks: true, tag: true, endpointOverrides: [ { pattern: 'loginUser', type: 'mutation', }, { pattern: /.*/, parameterFilter: (_name, parameter) => parameter.in !== 'header', }, { pattern: 'getPetById', providesTags: ['SinglePet'], }, ], }; export default config; ``` Review generated endpoints and override type, parameter, or tag behavior instead of hand-editing the emitted file. ## Common Mistakes ### HIGH Assuming generated tags are already specific enough Wrong: ```ts const config: ConfigFile = { schemaFile: './openapi.json', apiFile: './src/store/emptyApi.ts', apiImport: 'emptySplitApi', outputFile: './src/store/petApi.ts', exportName: 'petApi', tag: true, }; ``` Correct: ```ts const config: ConfigFile = { schemaFile: './openapi.json', apiFile: './src/store/emptyApi.ts', apiImport: 'emptySplitApi', outputFile: './src/store/petApi.ts', exportName: 'petApi', tag: true, endpointOverrides: [ { pattern: 'getPetById', providesTags: ['SinglePet'], }, ], }; ``` Generated tags are string-only by default, so they can invalidate more cache than intended. Source: reduxjs/redux-toolkit:docs/rtk-query/usage/code-generation.mdx ### HIGH Generating a brand-new API root instead of extending an empty one Wrong: ```ts import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'; type Pet = { id: string; name: string }; export const petApi = createApi({ reducerPath: 'petApi', baseQuery: fetchBaseQuery({ baseUrl: '/api/' }), endpoints: (build) => ({ getPetById: build.query<Pet, string>({ query: (id) => `pets/${id}`, }), }), }); ``` Correct: ```ts import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'; export const emptySplitApi = createApi({ reducerPath: 'api', baseQuery: fetchBaseQuery({ baseUrl: '/api/' }), endpoints: () => ({}), }); ``` Generated code should plug into one RTK Query architecture so invalidation and store wiring stay coherent. Source: reduxjs/redux-toolkit:docs/rtk-query/usage/code-generation.mdx ### MEDIUM Trusting generated shapes without overrides or review Wrong: ```ts const config: ConfigFile = { schemaFile: './openapi.json', apiFile: './src/store/emptyApi.ts', apiImport: 'emptySplitApi', outputFile: './src/store/petApi.ts', exportName: 'petApi', }; ``` Correct: ```ts const config: ConfigFile = { schemaFile: './openapi.json', apiFile: './src/store/emptyApi.ts', apiImport: 'emptySplitApi', outputFile: './src/store/petApi.ts', exportName: 'petApi', endpointOverrides: [ { pattern: 'loginUser', type: 'mutation', }, ], }; ``` Real schemas often need type, parameter, or tag correction; treat generated output as reviewed source, not gospel. Source: reduxjs/redux-toolkit:docs/rtk-query/usage/code-generation.mdx ## References - [Codegen override patterns and review checklist](references/codegen-overrides.md)
View on GitHub