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.
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 ✅ | @jfiala | @MikeRalphson | |
| objc | |||||
| openapi | meta | outputs the input definition (in OpenAPI 3.0.x form) ✅ | @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) ✅ | |||
| 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 ✅ | |||
| 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