OpenAPI 3.0 CodeGen
npm install openapi-codegen
Node.js-based codegen for OpenAPI documents. This project was initially a 24-hour hackathon. The local model adaptor code is entirely original and has been reverse-engineered from the existing documentation and template usage.
Work in progress
Supports OpenAPI 3.0.x natively, and Swagger/OpenAPI 1.2 and 2.0 by internal conversion. Node.js LTS versions are supported.
npm i -g openapi-codegen
or
* clone the repository, and
* npm i
or
npx -p openapi-codegen cg ...
``
cg [options] {[path]configName} {openapi-definition}
Options:
--help Show help [boolean]
--version Show version number [boolean]
--filter Filter term to use with --list [string]
--list List available templates for provider (og or sc) [string]
-d, --debug Turn on debugging information in the model [boolean]
-f, --flat Do not include config-name in output directory structure
[boolean]
-l, --lint Lint input definition [boolean]
-o, --output Specify output directory [string] [default: "./out/"]
-s, --stools Use swagger-tools to validate OpenAPI 2.0 definitions
[boolean]
-t, --templates Specify templates directory [string]
-v, --verbose Increase verbosity [boolean]
-z, --zip Create a .zip file instead of individual files [boolean]
`
e.g.
``
node cg --verbose nodejs defs/generator.yaml
In this case, the generated code will be written to the .out/nodejs directory.
You can also load the OpenAPI definition from a URL.
`javascript`
const renderer = require('openapi-codegen');
// load a config and a definition
renderer.main(definition,config,configName);
The local templates were taken directly from swagger-codegen. This project is also licensed under Apache-2.0 for this reason. Generated code is explicitly covered by the Unlicense. Code to downconvert OpenAPI 3.0 definitions is taken from Angular-Swagger-UI and is MIT licensed.
You can also use the latest online templates from two providers: og (openapi-generator) and sc (swagger-codegen). The --list and --filter` options allow you to see which templates are available. Note that using the online templates involves sending your API definition to a remote server.
See here for a partial list of template contributors.
The local templates with a status have a working (if not necessarily tested) configuration in the configs directory. Contributions are welcomed from the community of new and updated configurations and template updates.
Click here to expand...
|Template|Type|Status|README|Authors (TODO)|Config Maintainer|
|---|---|---|---|---|---|
|\_common|meta| contains Apache-2.0 and Unlicense licenses||
|Ada|client|Untested
|akka-scala||
|android||
|apache2|configuration|needs work||
|apex||
|aspnetcore||
|bash|client|Syntax ok, needs testing||@bkryza|@MikeRalphson
|clojure|client|Untested|
|codegen|meta|Demo only|||@MikeRalphson
|confluenceWikiDocs|documentation|Tested with Docker server||
|cpprest||
|csharp||
|csharp-dotnet2|client|Untested||
|dart||
|debug|meta|used for dumping the model state||@Mermade|@MikeRalphson
|Eiffel||
|elixir||
|erlang-client|client|Untested||
|erlang-server|server|
|finch||
|flash||
|flaskConnexion|server|Needs testing||
|go|client|Builds, needs testing||
|go-server|server|Builds and runs||
|Groovy|?|untested||
|haskell-http-client|client||||
|haskell-servant|server|Untested||
|htmlDocs|documentation|Appears to work||
|htmlDocs2|documentation|Appears to work, no console errors logged||
|Java||
|JavaInflector||
|JavaJaxRS||
|JavaPlayFramework||
|Javascript|client|Untested||
|Javascript-Closure-Angular|client|Untested
|JavaSpring||
|JavaVertXServer||
|JMeter|meta|Untested||
|kotlin-client||
|lua|client|Compiles OK|
|lumen||
|MSF4J||
|nancyfx||
|nodejs|server|tested :white_check_mark:||@jfiala|@MikeRalphson|
|objc||
|openapi|meta|outputs the input definition (in OpenAPI 3.0.x form) :white_check_mark:||@Mermade|@MikeRalphson
|perl||
|php||
|php-silex|?|untested||
|php-symfony||
|pistache-server||
|powershell||
|python|client|needs testing|||@mpnordland
|qt5cpp||
|r||
|rails5||
|restbed|server|Untested||
|ruby||
|rust||
|rust-server||
|scala||
|scalatra||
|scalaz|client|Untested||
|sinatra|server|Syntax checks OK||
|slim|server|Untested||
|swagger|meta|outputs the input definition (in original form if OpenAPI 2.0) :white_check_mark:||
|swagger-static|documentation|tested template modified to include partials||
|swift||
|swift3||
|swift4||
|tizen||
|typescript-angular||
|typescript-angularjs||
|typescript-axios|client|tested||jaredpalmer|
|typescript-aurelia||
|typescript-fetch|client|compiles with tsc ok||
|typescript-jquery||
|typescript-node|client|compiles with tsc ok||
|undertow||
|validator|meta|uses swagger2openapi's OpenAPI 3.0 validator internally :white_check_mark:||
|ze-ph|
These templates are examples of how features of OpenAPI Codegen may be used, and best-practices in naming model properties.
|Template|Type|Status|README|Authors|Config Maintainer|
|---|---|---|---|---|---|
|testing.dredd|testing|In progress|README|@Mermade|@MikeRalphson|
* See here - contributions welcome