{
  "id": "vacuum",
  "name": "vacuum",
  "homepage": "https://github.com/daveshanley/vacuum",
  "description": "The world's fastest and most versatile OpenAPI, AsyncAPI and JSON Schema linter and toolkit.",
  "executables": [
    "vacuum"
  ],
  "dotfiles": {
    "paths": [
      "[configHome]/vacuum.conf.yaml"
    ],
    "secret": []
  },
  "commands": {
    "format": 1,
    "label": "Lint an API description",
    "description": "Lint OpenAPI, AsyncAPI or Arazzo files with vacuum lint. Reports, bundling and custom functions beyond a path are left out.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": true,
      "short_bundles": true
    },
    "subcommand": [
      {
        "path": [
          "lint"
        ],
        "label": "Lint specification",
        "source": [
          {
            "id": "help",
            "kind": "manual",
            "url": "https://quobix.com/vacuum/commands/lint/",
            "revision": "2026-10-27",
            "evidence": "vacuum lint -d <your-openapi-spec.yaml>\nvacuum lint --ruleset rules/main.yaml\n-d --details bool Show full details of the linting report\n-e --errors bool Used with -d , Show only reported errors\n-s --snippets bool Used with -d , shows highlighted code in console\n-r --ruleset string Use an existing ruleset file for linting\n-n --fail-severity string Set the level at which an error return code is thrown: error , warn , info , hint , none (default error )\n--ignore-file accepts either exact result paths or JSONPath expressions.\n-z --hard-mode bool Enable every single built-in rule (including OWASP).\nvacuum lint --globbed-files=\"*/**/bu*.openapi.yaml\"\n"
          }
        ],
        "field": [
          {
            "id": "details",
            "label": "Full details",
            "type": "boolean",
            "option": [
              "-d",
              "--details"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "errors",
            "label": "Only errors",
            "type": "boolean",
            "option": [
              "-e",
              "--errors"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "snippets",
            "label": "Code snippets",
            "type": "boolean",
            "option": [
              "-s",
              "--snippets"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "ruleset",
            "label": "Ruleset file",
            "type": "path",
            "option": [
              "-r",
              "--ruleset"
            ],
            "path": {
              "kind": "file",
              "role": "input"
            },
            "sources": [
              "help"
            ]
          },
          {
            "id": "fail_severity",
            "label": "Fail severity",
            "type": "enum",
            "option": [
              "-n",
              "--fail-severity"
            ],
            "choices": [
              {
                "value": "error",
                "label": "Error"
              },
              {
                "value": "warn",
                "label": "Warning"
              },
              {
                "value": "info",
                "label": "Info"
              },
              {
                "value": "hint",
                "label": "Hint"
              },
              {
                "value": "none",
                "label": "None"
              }
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "ignore_file",
            "label": "Ignore file",
            "type": "path",
            "option": [
              "--ignore-file"
            ],
            "path": {
              "kind": "file",
              "role": "input"
            },
            "sources": [
              "help"
            ]
          },
          {
            "id": "hard_mode",
            "label": "Enable every rule",
            "type": "boolean",
            "option": [
              "-z",
              "--hard-mode"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "specs",
            "label": "Specification files",
            "type": "path",
            "position": 0,
            "multiple": true,
            "path": {
              "kind": "file",
              "role": "input"
            },
            "sources": [
              "help"
            ]
          }
        ],
        "task": [
          {
            "id": "report",
            "label": "Lint with details",
            "fields": [
              "specs",
              "details",
              "snippets"
            ],
            "required": [
              "specs"
            ],
            "set": {
              "details": [
                true
              ]
            }
          },
          {
            "id": "ci",
            "label": "CI check",
            "fields": [
              "specs",
              "fail_severity",
              "ruleset"
            ],
            "required": [
              "specs"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "specs",
              "details",
              "errors",
              "snippets",
              "ruleset",
              "fail_severity"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "ignore_file",
              "hard_mode"
            ]
          }
        ]
      }
    ]
  }
}
