OpenAPI CLI toolbox with rich validation and bundling features.
Currently, @redocly/openapi-cli supports these features:
- Multi-file validation. No need to bundle your file before validation.
- Lightning-fast validation. Lint a 1 MB file in less than one second.
- Built-in rules for common validations.
- Configurable severity levels for each rule.
- Human-readable error messages with codeframes and stylish format options.
- Intuitive suggestions for misspelled types or references.
- Easy to implement custom rules.
- Bundle a multi-file definition into a single file.
- Decorators to modify a validated definition during bundling.
- Preview reference docs for local development.
- Support for OpenAPI 2 (fka Swagger) and OpenAPI 3.0.
- Basic support for OpenAPI 3.1
Unlike other OpenAPI linters, @redocly/openapi-cli
defines the possible type tree of a valid OpenAPI definition and then traverses it. This approach is very similar to how linters for programming languages work and results in major performance benefits over other approaches. Extend functionality at different points in the lifecycle with preprocessors, rules, and decorators.
npx @redocly/openapi-cli lint path-to-root-file.yaml
Alternatively, install it globally with npm
:
npm install @redocly/openapi-cli -g
Then you can use it as openapi [command] [options]
, for example:
openapi lint path-to-root-file.yaml
To give the Docker container access to the OpenAPI definition files, you need to mount the containing directory as a volume. Assuming the OAS definition is rooted in the current working directory, you need the following command:
docker run --rm -v $PWD:/spec redocly/openapi-cli lint path-to-root-file.yaml
To build and run with a local image, run the following from the project root:
docker build -t openapi-cli .
docker run --rm -v $PWD:/spec openapi-cli lint path-to-root-file.yaml
Thanks to graphql-js and eslint for inspiration of the definition traversal approach and to Swagger, Spectral, and OAS-Kit for inspiring the ruleset.
See CONTRIBUTING.md