Swagger Codegen
This is the Swagger Codegen project, which allows generation of API client libraries (SDK generation), server stubs and documentation automatically given an OpenAPI Spec.
đ If you would like to contribute, please refer to guidelines and a list of open tasks.đ
đ For more information, please refer to the Wiki page and FAQ đ
â ď¸ If the OpenAPI Description or Swagger file is obtained from an untrusted source, please make sure youâve reviewed the artefact before using Swagger Codegen to generate the API client, server stub or documentation as code injection may occur. â ď¸
Versioning
Section titled âVersioningââ ď¸ this document refers to version 2.X, check here for 3.X.
Both 2.X and 3.X version lines of Swagger Codegen are available and are independently maintained.
NOTES:
- Versions 2.X (
io.swagger) and 3.X (io.swagger.codegen.v3) have different group ids. - OpenAPI 3.0.X is supported from the 3.X version only.
For full versioning information, please refer to the versioning documentation.
Supported Languages and Frameworks
Section titled âSupported Languages and FrameworksâCurrently, the following languages/frameworks are supported:
- API clients: ActionScript, Ada, Apex, Bash, C# (.net 2.0, 3.5 or later), C++ (cpprest, Qt5, Tizen), Clojure, Dart, Elixir, Elm, Eiffel, Erlang, Go, Groovy, Haskell (http-client, Servant), Java (Jersey1.x, Jersey2.x, OkHttp, Retrofit1.x, Retrofit2.x, Feign, RestTemplate, RESTEasy, Vertx, Google API Client Library for Java, Rest-assured), Kotlin, Lua, Node.js (ES5, ES6, AngularJS with Google Closure Compiler annotations) Objective-C, Perl, PHP, PowerShell, Python, R, Ruby, Rust (rust, rust-server), Scala (akka, http4s, swagger-async-httpclient), Swift (2.x, 3.x, 4.x, 5.x), Typescript (Angular1.x, Angular2.x, Fetch, jQuery, Node)
- Server stubs: Ada, C# (ASP.NET Core, NancyFx), C++ (Pistache, Restbed), Erlang, Go, Haskell (Servant), Java (MSF4J, Spring, Undertow, JAX-RS: CDI, CXF, Inflector, RestEasy, Play Framework, PKMST), Kotlin, PHP (Lumen, Slim, Silex, Symfony, Zend Expressive), Python (Flask), NodeJS, Ruby (Sinatra, Rails5), Rust (rust-server), Scala (Finch, Lagom, Scalatra)
- API documentation generators: HTML, Confluence Wiki
- Configuration files: Apache2
- Others: JMeter
Check out OpenAPI-Spec for additional information about the OpenAPI project.
Compatibility
Section titled âCompatibilityâThe OpenAPI Specification has undergone 3 revisions since initial creation in 2010. The current stable versions of Swagger Codegen project have the following compatibilities with the OpenAPI Specification:
| Swagger Codegen Version | Release Date | Swagger / OpenAPI Spec compatibility | Notes |
|---|---|---|---|
| 3.0.71 (current stable) | 2025-07-03 | 1.0, 1.1, 1.2, 2.0, 3.0 | tag v3.0.71 |
| 2.4.46 (current stable) | 2025-06-30 | 1.0, 1.1, 1.2, 2.0 | tag v2.4.46 |
đ Hereâs also an overview of whatâs coming around the corner:
| Swagger Codegen Version | Release Date | Swagger / OpenAPI Spec compatibility | Notes |
|---|---|---|---|
| 3.0.72-SNAPSHOT (current 3.0.0, upcoming minor release) SNAPSHOT | TBD | 1.0, 1.1, 1.2, 2.0, 3.0 | Minor release |
| 2.4.47-SNAPSHOT (current master, upcoming minor release) SNAPSHOT | TBD | 1.0, 1.1, 1.2, 2.0 | Minor release |
For detailed breakdown of all versions, please see the full compatibility listing.
Getting Started
Section titled âGetting StartedâTo get up and running with Swagger Codegen, check out the following guides and instructions:
Once youâve your environment setup, youâre ready to start generating clients and/or servers.
As a quick example, to generate a PHP client for https://petstore.swagger.io/v2/swagger.json, you can run the following:
git clone https://github.com/swagger-api/swagger-codegencd swagger-codegenmvn clean packagejava -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \ -i https://petstore.swagger.io/v2/swagger.json \ -l php \ -o /var/tmp/php_api_clientNote: if youâre on Windows, replace the last command with
java -jar modules\swagger-codegen-cli\target\swagger-codegen-cli.jar generate -i https://petstore.swagger.io/v2/swagger.json -l php -o c:\temp\php_api_clientYou can also download the JAR (latest release) directly from maven.org
To get a list of general options available, you can run the following:
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar help generateTo get a list of PHP specified options (which can be passed to the generator with a config file via the -c option), please run
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar config-help -l phpGenerators
Section titled âGeneratorsâTo generate a sample client library
Section titled âTo generate a sample client libraryâYou can build a client against the swagger sample petstore API as follows:
./bin/java-petstore.sh(On Windows, run .\bin\windows\java-petstore.bat instead)
This will run the generator with this command:
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \ -i https://petstore.swagger.io/v2/swagger.json \ -l java \ -o samples/client/petstore/javawith a number of options. You can get the options with the help generate command (below only shows partial results):
NAME swagger-codegen-cli generate - Generate code with chosen lang
SYNOPSIS swagger-codegen-cli generate [(-a <authorization> | --auth <authorization>)] [--additional-properties <additional properties>...] [--api-package <api package>] [--artifact-id <artifact id>] [--artifact-version <artifact version>] [(-c <configuration file> | --config <configuration file>)] [-D <system properties>...] [--git-repo-id <git repo id>] [--git-user-id <git user id>] [--group-id <group id>] [--http-user-agent <http user agent>] (-i <spec file> | --input-spec <spec file>) [--ignore-file-override <ignore file override location>] [--import-mappings <import mappings>...] [--instantiation-types <instantiation types>...] [--invoker-package <invoker package>] (-l <language> | --lang <language>) [--language-specific-primitives <language specific primitives>...] [--library <library>] [--model-name-prefix <model name prefix>] [--model-name-suffix <model name suffix>] [--model-package <model package>] [(-o <output directory> | --output <output directory>)] [--release-note <release note>] [--remove-operation-id-prefix] [--reserved-words-mappings <reserved word mappings>...] [(-s | --skip-overwrite)] [(-t <template directory> | --template-dir <template directory>)] [--type-mappings <type mappings>...] [(-v | --verbose)]
OPTIONS -a <authorization>, --auth <authorization> adds authorization headers when fetching the swagger definitions remotely. Pass in a URL-encoded string of name:header with a comma separating multiple values
...... (results omitted)
-v, --verbose verbose modeYou can then compile and run the client, as well as unit tests against it:
cd samples/client/petstore/javamvn packageOther languages have petstore samples, too:
./bin/android-petstore.sh./bin/java-petstore.sh./bin/objc-petstore.shGenerating libraries from your server
Section titled âGenerating libraries from your serverâItâs just as easyâjust use the -i flag to point to either a server or file.
đ§ Swagger Codegen comes with a tonne of flexibility to support your code generation preferences. Checkout the generators documentation which takes you through some of the possibilities as well as showcasing how to generate from local files and ignore file formats.
Selective generation
Section titled âSelective generationâYou may not want to generate all models in your project. Likewise you may want just one or two apis to be written. If thatâs the case check the selective generation instructions.
Advanced Generator Customization
Section titled âAdvanced Generator CustomizationâThere are different aspects of customizing the code generator beyond just creating or modifying templates. Each language has a supporting configuration file to handle different type mappings, or bring your own models. For more information check out the advanced configuration docs.
Validating your OpenAPI Spec
Section titled âValidating your OpenAPI SpecâYou have options. The easiest is to use our online validator which not only will let you validate your spec, but with the debug flag, you can see whatâs wrong with your spec. For example check out Swagger Validator.
If you want to have validation directly on your own machine, then Spectral is an excellent option.
Generating dynamic html api documentation
Section titled âGenerating dynamic html api documentationâTo do so, just use the -l dynamic-html flag when reading a spec file. This creates HTML documentation that is available as a single-page application with AJAX. To view the documentation:
cd samples/dynamic-html/npm installnode .Which launches a node.js server so the AJAX calls have a place to go.
Generating static html api documentation
Section titled âGenerating static html api documentationâTo do so, just use the -l html flag when reading a spec file. This creates a single, simple HTML file with embedded css so you can ship it as an email attachment, or load it from your filesystem:
cd samples/html/open index.htmlWorkflow Integration
Section titled âWorkflow IntegrationâItâs possible to leverage Swagger Codegen directly within your preferred CI/CD workflows to streamline your auto-generation requirements. Check out the workflows integration guide to see information on our Maven, Gradle, and GitHub integration options. đ
Online Generators
Section titled âOnline GeneratorsâIf you donât want to run and host your own code generation instance, check our our online generators information.
Contributing
Section titled âContributingâPlease refer to this page
Security contact
Section titled âSecurity contactâPlease disclose any security-related issues or vulnerabilities by emailing security@swagger.io, instead of using the public issue tracker.
Thank You
Section titled âThank Youâđđđ Weâd like to give a big shout out to all those whoâve contributed to Swagger Codegen, be that in raising issues, fixing bugs, authoring templates, or crafting useful content for others to benefit from. đđđ