JSPM

  • Created
  • Published
  • Downloads 1920843
  • Score
    100M100P100Q192149F
  • License BSD-3-Clause

Convert Swagger 2.0 definitions to OpenApi 3.0

Package Exports

  • swagger2openapi
  • swagger2openapi/common.js
  • swagger2openapi/package.json
  • swagger2openapi/validate
  • swagger2openapi/validate.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (swagger2openapi) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

swagger2openapi

logo

OpenAPI Validation Build Tested on APIs.guru Tested on Mermade OpenAPIs Coverage Status Known Vulnerabilities Greenkeeper badge

Convert Swagger 2.0 definitions into OpenApi 3.0.x

Currently tracking v3.0.0-RC1

Usage:

swagger2openapi [options] [filename|url]
Options:
  -c, --components  output information to unresolve a definition       [boolean]
  -d, --debug       enable debug mode, adds specification-extensions   [boolean]
  -e, --encoding    encoding for input/output files   [string] [default: "utf8"]
  -h, --help        Show help                                          [boolean]
  -o, --outfile     the output file to write to                         [string]
  -p, --patch       fix up small errors in the source definition       [boolean]
  -r, --resolve     resolve external references                        [boolean]
  -u, --url         url of original spec, creates x-origin entry        [string]
  -v, --verbose     increase verbosity                                   [count]
  -y, --yaml        read and write YAML, default JSON                  [boolean]

or use the APIs:

var converter = require('swagger2openapi');
var options = {};
//options.debug = true; // sets various x-s2o- debugging properties
converter.convertObj(swagger, options, function(err, options){
  // options.openapi contains the converted definition
});
// also available are asynchronous convertFile, convertUrl, convertStr and convertStream functions
// if you omit the callback parameter, you will instead receive a Promise
var validator = require('swagger2openapi/validate.js');
var options = {};
validator.validate(openapi, options, function(err, options){
  // options.valid contains the result of the validation
  // options.context now contains a stack (array) of JSON-Pointer strings
});
// also available is a synchronous validateSync method which returns a boolean

See here for complete documentation of the options object.

Or use the online version which also includes its own API.

Features

OpenAPI 3.0.x validation

The testRunner harness can also be used as a simple validator if given one or more existing OpenAPI 3.x definitions. The validator (however it is called) uses WHATWG URL parsing if available (node 7.x and above).

Reference preservation

swagger2openapi preserves $ref JSON references in your API definition, and does not dereference every item, as with some model-based parsers.

Specification extensions

swagger2openapi has support for a limited number of real-world specification extensions which have a direct bearing on the conversion. All other specification extensions are left untouched. swagger2openapi is swaggerplusplus-compatible.

It is expected to be able to configure the process of specification-extension modification using options or a plugin mechanism in a future release.

Tests

To run a test-suite:

node testRunner [-f {path-to-expected-failures}]... [{path-to-APIs|single-file...}]

The test harness currently expects files with a .json or .yaml extension, or a single named file, and has been tested on Node.js versions 4.x, 6.x and 7.x against

Additionally swagger2openapi has been tested on a corpus of 34,679 real-world valid Swagger 2.0 definitions from GitHub and SwaggerHub. However, if you have a definition which causes errors in the converter or does not pass validation, please do not hesitate to raise an issue.

License

BSD-3-Clause except the OpenAPI3 schema, which is originally from Google Gnostic and is licensed under the Apache-2 license.