JSPM

  • Created
  • Published
  • Downloads 44053
  • Score
    100M100P100Q176014F
  • License MIT

Validate OpenApi specifications against their JSON schema

Package Exports

  • @seriousme/openapi-schema-validator

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 (@seriousme/openapi-schema-validator) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

OpenAPI schema validator

CI status Coverage Status Language grade: JavaScript NPM version npm

A JSON schema validator for OpenAPI specifications, it currently supports:

Install

npm i @seriousme/openapi-schema-validator --save

Usage

// ESM
import Validator from "@seriousme/openapi-schema-validator";
// CommonJS
const Validator = require("@seriousme/openapi-schema-validator");

console.log(Validator.supportedVersions.has("3.1"));
// prints true

const validator = new Validator();
const res = await validator.validate("./petstore.json");
const specification = validator.specification;
// specification now contains a Javascript object containing the specification
if (res.valid) {
  console.log("Specification matches schema for version", validator.version);
  const schema = validator.resolveRefs();
  // schema now contains a Javascript object containing the dereferenced schema
} else {
  console.log("Specification does not match Schema");
  console.log(res.errors);
}

API

new Validator(ajvOptions)

The constructor returns an instance of Validator. By passing an ajv options object it is possible to influence the behavior of the AJV schema validator.

<instance>.validate(specification)

This function tries to validata a specification against the OpenApi schemas. specification can be one of:

  • a JSON object
  • a JSON object encoded as string
  • a YAML string
  • a filename

External references are not automatically resolved so you need to inline them yourself if required. The result is an object:

{
  valid: <boolean>,
  errors: <any>  // only present if valid is false
}

<instance>.specification

If the validator managed to extract data from the specification parameter then the extracted specification is available in this property as javascript object. E.g. if you supplied a filename of a YAML file and the file was sucessfully read and its YAML decoded then the contents is here. Even if validation failed.

<instance>.version

If validation is succesfull this will return the openApi version found e.g. ("2.0","3.0","3.1). The openApi specification only specifies major/minor versions as separate schemas. So "3.0.3" results in "3.0".

<instance>.resolveRefs(options)

This function tries to resolve all internal references. External references are not automatically resolved so you need to inline them yourself if required. By default it will use the last specification passed to <instance>.validate() but you can explicity pass a specification by passing {specification:<object>} as options. The result is an object where all references have been resolved. Resolution of references is shallow This should normally not be a problem for this use case.

Validator.supportedVersions

This static property returns the OpenApi versions supported by this package as a Set. If present, the result of <instance>.version is a member of this Set.

License

Licensed under the MIT license