OpenAPI Generator - Quick Reference
When to Use This Skill
- Generate type-safe API clients from OpenAPI specs
- Generate server stubs from OpenAPI specs
- Maintain sync between API and code
- Multi-language client generation (Java, Python, Go, etc.)
- Spring Boot server generation
Deep Knowledge: Use mcp__documentation__fetch_docs with technology: openapi-generator for comprehensive documentation.
CLI Usage
Install
npm install @openapitools/openapi-generator-cli -g
# or
brew install openapi-generator
Generate TypeScript Client
openapi-generator-cli generate \
-i api.yaml \
-g typescript-fetch \
-o ./generated/api \
--additional-properties=supportsES6=true,typescriptThreePlus=true
Generate TypeScript Axios Client
openapi-generator-cli generate \
-i api.yaml \
-g typescript-axios \
-o ./generated/api
Generate Java Client
openapi-generator-cli generate \
-i api.yaml \
-g java \
-o ./generated/api \
--additional-properties=library=webclient,dateLibrary=java8
Generate Spring Server
openapi-generator-cli generate \
-i api.yaml \
-g spring \
-o ./generated/server \
--additional-properties=interfaceOnly=true,useSpringBoot3=true
NPM Script Integration
package.json
{
"scripts": {
"generate:api": "openapi-generator-cli generate -i ./api/openapi.yaml -g typescript-fetch -o ./src/generated/api"
}
}
Maven Plugin
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>7.0.0</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/api.yaml</inputSpec>
<generatorName>spring</generatorName>
<configOptions>
<interfaceOnly>true</interfaceOnly>
<useSpringBoot3>true</useSpringBoot3>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
Common Generators
| Generator | Description |
|---|
| typescript-fetch | TypeScript with Fetch API |
| typescript-axios | TypeScript with Axios |
| java | Java client |
| spring | Spring Boot server |
| python | Python client |
| go | Go client |
When NOT to Use This Skill
- TypeScript-only projects (use
openapi-codegen with openapi-typescript instead) - Writing OpenAPI specifications (use
openapi skill) - GraphQL code generation (use
graphql-codegen skill) - tRPC projects (use
trpc skill) - Simple type-only generation (openapi-typescript is lighter)
Anti-Patterns
| Anti-Pattern | Why It's Bad | Solution |
|---|
| Committing generated code | Merge conflicts, stale code | Add to.gitignore, generate in build |
| Not pinning generator version | Breaking changes between versions | Lock version in package.json/pom.xml |
| Editing generated files | Lost on regeneration | Extend classes or use custom templates |
| No spec validation before generation | Invalid code generated | Use @redocly/cli lint first |
| Generating entire API for one endpoint | Bloated client | Use tags or paths filter |
| Missing operationId in spec | Poor method names | Add operationId to all operations |
| Not configuring additional properties | Suboptimal output | Use additionalProperties for customization |
| Generating without.openapi-generator-ignore | Overwrites custom files | Add ignore file for manual code |
Quick Troubleshooting
| Issue | Possible Cause | Solution |
|---|
| Generation fails | Invalid OpenAPI spec | Validate with @redocly/cli lint |
| Missing methods | No operationId in spec | Add operationId to all paths |
| Compilation errors in generated code | Spec type mismatch | Check schema types, run with --skip-validate-spec to debug |
| Wrong package names | Config not set | Use --additional-properties for package config |
| Duplicate model names | Same schema name in different tags | Rename schemas or use x-model-name |
| Maven plugin not running | Wrong phase or configuration | Check plugin execution phase |
| NPM global command not found | Not installed globally | Install with npm install -g or use npx |
| Generated code has wrong types | Generator doesn't support type | Use custom templates or different generator |