Git Product home page Git Product logo

openapi-cli's Introduction

OpenAPI CLI toolset

OpenAPI CLI toolbox with rich validation and bundling features.

Travis (.org) npm (scoped) NPM

OpenAPI 3 CLI toolset

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

What makes this tool different

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.

Usage

Node

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

Docker

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

Credits

Thanks to graphql-js and eslint for inspiration of the definition traversal approach and to Swagger, Spectral, and OAS-Kit for inspiring the ruleset.

Development

See CONTRIBUTING.md

openapi-cli's People

Contributors

romanhotsiy avatar knidarkness avatar andriyl avatar jacobator avatar bandantonio avatar adamaltman avatar marshevskyy avatar alexvarchuk avatar slavikbez avatar ivana-isadora avatar oprysk avatar leocete avatar andrii-tarusin avatar antarus66 avatar swapnilogale avatar dependabot[bot] avatar tatomyr avatar antonkozachuk avatar roman-sainchuk avatar prooles avatar mjpieters avatar yarokon avatar rkrauskopf avatar ohorbachevskyi avatar zalesky avatar jirutka avatar twz123 avatar rjelierse avatar baaazen avatar mikeralphson avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.