GitHub - corenova/yang-swagger: YANG model-driven swagger/openapi transform (original) (raw)
yang-swagger
YANG model-driven swagger/openapi transform
Installation
$ npm install -g yang-swagger
The preferred installation is global for easy access to theyang-swagger
utility but can also be used as a dependency module to help generate swagger/openapi specification as part of your project.
NOTE: Currently, Swagger/OpenAPI 2.0 Specification does NOTsupport JSON-schema
anyOf
andoneOf
directives, which means that we cannot properly treat YANGchoice/case
statements during conversion. As a work-around, the current transform will simply serialize all configuration nodes from thechoice/case
sections into a flat list of properties.
Quick Start
$ yang-swagger -f yaml -o swagger.yaml yang-openapi
The above example will import the yang-openapi
YANG module and transform into swagger specification YAML file.
Usage: yang-swagger [options] modules...
Options:
-c, --config <filename> Use <filename> to retrieve configuration data (default: uses 'config' directory)
-f, --format <string> Convert to YAML or JSON (default: json)
-o, --output <filename> Write to <filename> if specified, otherwise to console
Using the --config
option will allow you to specify where to find the configuration data for the yang-openapi
YANG module. By default, it will check the config
directory but you can specify any arbitrary file location for specifying the yang-openapi:info
configuration data.
You can also use it as a library module:
swag = require("yang-swagger").eval { 'yang-openapi:info': title: "my-api" description: "describe purpose" version: "1.0" contact: name: "your name" url: "http://some/website" email: "your email" license: name: "Apache-2.0" } swag.in('transform') .invoke modules: [ 'yang-openapi' ] .then (output) -> console.log "do something with <output.spec>"
For more information on programmatic usage, be sure to take a look at the References listed below.
References
License
This software is brought to you byCorenova Technologies. We'd love to hear your feedback. Please feel free to reach me at peter@corenova.comanytime with questions, suggestions, etc.