• Stars
    star
    290
  • Rank 142,981 (Top 3 %)
  • Language
    JavaScript
  • License
    Apache License 2.0
  • Created about 7 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

OpenAPI 3.0 CodeGen plus Node.js minus the Java and emojis

OpenAPI-CodeGen

Build status

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.

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

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

More Repositories

1

widdershins

OpenAPI / Swagger, AsyncAPI & Semoasa definitions to (re)Slate compatible markdown
JavaScript
1,386
star
2

openapi-gui

GUI / visual editor for creating and editing OpenAPI / Swagger definitions
JavaScript
1,302
star
3

oas-kit

Convert Swagger 2.0 definitions to OpenAPI 3.0 and resolve/validate/lint
JavaScript
702
star
4

shins

Shins development continues at
JavaScript
249
star
5

openapi-filter

Filter internal paths, operations, parameters, schemas etc from OpenAPI/Swagger/AsyncAPI definitions
JavaScript
141
star
6

reslate

Beautiful static documentation for your API
CSS
136
star
7

openapi-lint-vscode

OpenAPI 2.0/3.0.x intellisense, validator, linter, converter and resolver extension for Visual Studio Code
JavaScript
53
star
8

openapi-specification-extensions

A resource for common and standardised OpenAPI specification (vendor) extensions
39
star
9

openapi-definitions

OpenAPI Definitions
30
star
10

openapi3-examples

Passing and failing test cases for OpenAPI 3.x validators
25
star
11

jgeXml

The Just-Good-Enough XML Toolkit
JavaScript
23
star
12

openapi-extract

Extract single paths/operations from OpenAPI definitions
JavaScript
21
star
13

openapi-webconverter

Mermade Swagger 2.0 to OpenAPI 3.0.0 converter front-end
JavaScript
14
star
14

openapi_optimise

Optimise OpenApi (Swagger) 2.0 API definitions
JavaScript
11
star
15

shinola

Shins-as-a-service. Generate Shins/Slate API documentation on the fly
JavaScript
9
star
16

check_api

A multi-API format validator and gate-keeper tool for the APIs.guru API collection
JavaScript
8
star
17

mdv

Markdown (link/image) validator
JavaScript
6
star
18

swaggerplusplus

A proposal for transitioning between Swagger 2.0 and OpenAPI 3.0.x
5
star
19

morph-proxy

Morph.io API proxy
JavaScript
3
star
20

arapaho

Arapaho Micro HTTP Server. One-click deployable, embeddable web-server
JavaScript
3
star
21

openItv

Open ITVHub and ITV Mercury API SDK
JavaScript
2
star
22

mermade.github.io

Mermade Software
HTML
1
star
23

oa2s-comparison

Comparison of various OpenApi(Swagger)-to-Slate conversion tools
JavaScript
1
star
24

package-lock-audit

Audit npm package-lock.json for security issues
JavaScript
1
star
25

reftools

Tools to deal with references in Javascript objects. Now part of oas-kit
JavaScript
1
star
26

passwordHasher

Wijjo's password hasher portable web-page
HTML
1
star