OpenAPI schema validator
A JSON schema validator for OpenAPI specifications, it currently supports:
Install
npm i @seriousme/openapi-schema-validator --save
Usage
import Validator from "@seriousme/openapi-schema-validator";
console.log(Validator.supportedVersions.has("3.1"));
const validator = new Validator();
const res = await validator.validate("./petstore.json");
if (res.valid) {
console.log("Specification matches schema for version", validator.version);
const schema = validator.resolveRefs();
} 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>.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