openapi-codegen
v2.2.2
Published
OpenAPI 3.0 CodeGen
Downloads
13,487
Maintainers
Readme
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.
Usage
Installing
npm i -g openapi-codegen
or
- clone the repository, and
npm i
or
npx -p openapi-codegen cg ...
CLI
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.
API
const renderer = require('openapi-codegen');
// load a config and a definition
renderer.main(definition,config,configName);
Templates
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.
Contributors
See here for a partial list of template contributors.
Status of the template configurations
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.
|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|
New Templates
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|
Documentation
- See here - contributions welcome