openapi-codegen

    2.2.2 • Public • Published

    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

    Install

    npm i openapi-codegen

    DownloadsWeekly Downloads

    246

    Version

    2.2.2

    License

    Apache-2.0

    Unpacked Size

    6.05 MB

    Total Files

    1957

    Last publish

    Collaborators

    • mermade