This project uses Node.js to implement an OpenAPI linter. As with any linter, there are configurable options for validating your OpenAPI specs.
npm install openapilint --save
openapilint
takes as input a json schema, and json config object:
const schema = {
info: {
description: 'handy description'
}
};
const config = {
"rules": {
"docs-path": true, // rule will be run, and has no special config
"no-restricted-words": {"words": ["supersecretacronym"]}, // rule will be run with the specified config
"root-tags": false // rule will not be run
}
};
and returns a promise of the results:
const result = new OpenApiLint(config).lint(schema);
return result.then((lintResult) => {
// Do something with the result Map.
}).catch((error) => {
// Do something with the Error.
});
lintResult
is a String -> RuleResult
immutable Map of nested immutable objects for consumption. Specifically:
RuleResult
is aString -> Object
immutable Record with two keys,description
(String
) &failures
(List<RuleFailure>
).RuleFailure
is aString -> String
immutable Record with two keys,location
(String
) &hint
(String
)
It is up to the implementer to parse this data and provide a useful error response to the user.
By default, only the rules in lib/rules
are supported. Details of these rules can be found in docs/rules
.
Due to the complex nature of multi-file references, openapilint
rules assume that a schema is fully dereferenced as much as possible. It is up to you to dereference the schema before passing it as input.
This project was inspired by - and heavily influenced by - openapilint
and markdownlint
. The configuration schema and some code was modified for usage in this project.