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