{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "$comment": "https://yamllint.readthedocs.io/en/stable/configuration.html",
  "$ref": "#/definitions/ignore",
  "definitions": {
    "toggle": {
      "type": "string",
      "enum": ["enable", "disable"]
    },
    "ignore": {
      "properties": {
        "ignore": {
          "title": "Ignore",
          "description": "Ignore files, so that the linter doesn't process them.",
          "type": "string"
        }
      }
    },
    "allRules": {
      "$ref": "#/definitions/ignore",
      "properties": {
        "level": {
          "title": "Level",
          "type": "string",
          "default": "warning"
        }
      }
    }
  },
  "description": "yamllint uses a set of rules to check source files for problems.",
  "id": "https://json.schemastore.org/yamllint.json",
  "properties": {
    "extends": {
      "title": "Extends",
      "type": "string"
    },
    "yaml-files": {
      "title": "YAML Files",
      "type": "array",
      "items": {
        "title": "YAML File",
        "type": "string"
      },
      "default": ["*.yaml", "*.yml", ".yamllint"]
    },
    "locale": {
      "title": "Locale",
      "description": "This is passed to Python's locale.setlocale.",
      "type": "string"
    },
    "rules": {
      "properties": {
        "braces": {
          "title": "Braces",
          "description": "Use this rule to control the use of flow mappings or number of spaces inside braces ({ and }).",
          "anyOf": [
            {
              "$ref": "#/definitions/toggle"
            },
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/allRules",
              "type": "object",
              "properties": {
                "forbid": {
                  "title": "Forbid",
                  "description": "Used to forbid the use of flow mappings which are denoted by surrounding braces ({ and }).",
                  "anyOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "string",
                      "enum": ["non-empty"]
                    }
                  ],
                  "default": false
                },
                "min-spaces-inside": {
                  "title": "Minimum Spaces Inside",
                  "description": "Defines the minimal number of spaces required inside braces.",
                  "type": "number",
                  "default": 0
                },
                "max-spaces-inside": {
                  "title": "Max Spaces Inside",
                  "description": "Defines the maximal number of spaces allowed inside braces.",
                  "type": "number",
                  "default": 0
                },
                "min-spaces-inside-empty": {
                  "title": "Minimum Spaces Inside Empty",
                  "description": "Defines the minimal number of spaces required inside empty braces.",
                  "type": "number",
                  "default": -1
                },
                "max-spaces-inside-empty": {
                  "title": "Max Spaces Inside Empty",
                  "description": "Defines the maximal number of spaces allowed inside empty braces.",
                  "type": "number",
                  "default": -1
                }
              }
            }
          ],
          "default": "enable"
        },
        "brackets": {
          "title": "Brackets",
          "description": "Use this rule to control the use of flow sequences or the number of spaces inside brackets ([ and ]).",
          "anyOf": [
            {
              "$ref": "#/definitions/toggle"
            },
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/allRules",
              "type": "object",
              "properties": {
                "forbid": {
                  "title": "Forbid",
                  "description": "Used to forbid the use of flow sequences which are denoted by surrounding brackets ([ and ]).",
                  "anyOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "string",
                      "enum": ["non-empty"]
                    }
                  ],
                  "default": false
                },
                "min-spaces-inside": {
                  "title": "Minimum Spaces Inside",
                  "description": "Defines the minimal number of spaces required inside brackets.",
                  "type": "number",
                  "default": 0
                },
                "max-spaces-inside": {
                  "title": "Max Spaces Inside",
                  "description": "Defines the maximal number of spaces allowed inside brackets.",
                  "type": "number",
                  "default": 0
                },
                "min-spaces-inside-empty": {
                  "title": "Minimum Spaces Inside Empty",
                  "description": "Defines the minimal number of spaces required inside empty brackets.",
                  "type": "number",
                  "default": -1
                },
                "max-spaces-inside-empty": {
                  "title": "Max Spaces Inside Empty",
                  "description": "Defines the maximal number of spaces allowed inside empty brackets.",
                  "type": "number",
                  "default": -1
                }
              }
            }
          ],
          "default": "enable"
        },
        "colons": {
          "title": "Colons",
          "description": "Use this rule to control the number of spaces before and after colons (:).",
          "anyOf": [
            {
              "$ref": "#/definitions/toggle"
            },
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/allRules",
              "type": "object",
              "properties": {
                "max-spaces-before": {
                  "title": "Max Spaces Before",
                  "description": "Defines the maximal number of spaces allowed before colons (use -1 to disable).",
                  "type": "number",
                  "default": 0
                },
                "max-spaces-after": {
                  "title": "Max Spaces After",
                  "description": "Defines the maximal number of spaces allowed after colons (use -1 to disable).",
                  "type": "number",
                  "default": 1
                }
              }
            }
          ],
          "default": "enable"
        },
        "commas": {
          "title": "Commas",
          "description": "Use this rule to control the number of spaces before and after commas (,).",
          "anyOf": [
            {
              "$ref": "#/definitions/toggle"
            },
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/allRules",
              "type": "object",
              "properties": {
                "max-spaces-before": {
                  "title": "Max Spaces Before",
                  "description": "Defines the maximal number of spaces allowed before commas (use -1 to disable).",
                  "type": "number",
                  "default": 0
                },
                "min-spaces-after": {
                  "title": "Minimum Spaces After",
                  "description": "Defines the minimal number of spaces required after commas.",
                  "type": "number",
                  "default": 1
                },
                "max-spaces-after": {
                  "title": "Max Spaces After",
                  "description": "Defines the maximal number of spaces allowed after commas (use -1 to disable).",
                  "type": "number",
                  "default": 1
                }
              }
            }
          ],
          "default": "enable"
        },
        "comments": {
          "title": "Comments",
          "description": "Use this rule to control the position and formatting of comments.",
          "anyOf": [
            {
              "$ref": "#/definitions/toggle"
            },
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/allRules",
              "type": "object",
              "properties": {
                "require-starting-space": {
                  "title": "Require Starting Space",
                  "description": "Require a space character right after the #.",
                  "type": "boolean",
                  "default": true
                },
                "ignore-shebangs": {
                  "title": "Ignore Shebangs",
                  "description": "Ignore a shebang at the beginning of the file when require-starting-space is set.",
                  "type": "boolean",
                  "default": true
                },
                "min-spaces-from-content": {
                  "title": "Minimum Spaces from Content",
                  "description": "Used to visually separate inline comments from content.",
                  "type": "number",
                  "default": 2
                }
              }
            }
          ],
          "default": {
            "level": "warning"
          }
        },
        "comments-indentation": {
          "title": "Comments Indentation",
          "description": "Use this rule to force comments to be indented like content.",
          "anyOf": [
            {
              "$ref": "#/definitions/toggle"
            },
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/allRules",
              "type": "object"
            }
          ],
          "default": {
            "level": "warning"
          }
        },
        "document-end": {
          "title": "Document End",
          "description": "Use this rule to require or forbid the use of document end marker (...).",
          "anyOf": [
            {
              "$ref": "#/definitions/toggle"
            },
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/allRules",
              "type": "object",
              "properties": {
                "present": {
                  "title": "Present",
                  "description": "True when the document end marker is required, or to false when it is forbidden.",
                  "type": "boolean",
                  "default": true
                }
              }
            }
          ],
          "default": "disable"
        },
        "document-start": {
          "title": "Document Start",
          "description": "Use this rule to require or forbid the use of document start marker (---).",
          "anyOf": [
            {
              "$ref": "#/definitions/toggle"
            },
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/allRules",
              "type": "object",
              "properties": {
                "present": {
                  "title": "Present",
                  "description": "True when the document start marker is required, or to false when it is forbidden.",
                  "type": "boolean",
                  "default": true
                }
              }
            }
          ],
          "default": {
            "level": "warning"
          }
        },
        "empty-lines": {
          "title": "Empty Lines",
          "description": "Use this rule to set a maximal number of allowed consecutive blank lines.",
          "anyOf": [
            {
              "$ref": "#/definitions/toggle"
            },
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/allRules",
              "type": "object",
              "properties": {
                "max": {
                  "title": "Max",
                  "description": "Defines the maximal number of empty lines allowed in the document.",
                  "type": "number",
                  "default": 2
                },
                "max-start": {
                  "title": "Max Start",
                  "description": "Defines the maximal number of empty lines allowed at the beginning of the file.",
                  "type": "number",
                  "default": 0
                },
                "max-end": {
                  "title": "Max End",
                  "description": "",
                  "type": "number",
                  "default": 0
                }
              }
            }
          ],
          "default": "enable"
        },
        "empty-values": {
          "title": "Empty Values",
          "description": "Use this rule to prevent nodes with empty content, that implicitly result in null values.",
          "anyOf": [
            {
              "$ref": "#/definitions/toggle"
            },
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/allRules",
              "type": "object",
              "properties": {
                "forbid-in-block-mappings": {
                  "title": "Forbid in Block Mappings",
                  "description": "Prevent empty values in block mappings.",
                  "type": "boolean",
                  "default": true
                },
                "forbid-in-flow-mappings": {
                  "title": "Forbid in Flow Mappings",
                  "description": "Prevent empty values in flow mappings.",
                  "type": "boolean",
                  "default": true
                }
              }
            }
          ],
          "default": "disable"
        },
        "hyphens": {
          "title": "Hyphens",
          "description": "Use this rule to control the number of spaces after hyphens (-).",
          "anyOf": [
            {
              "$ref": "#/definitions/toggle"
            },
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/allRules",
              "type": "object",
              "properties": {
                "max-spaces-after": {
                  "title": "Max Spaces After",
                  "description": "Defines the maximal number of spaces allowed after hyphens.",
                  "type": "number",
                  "default": 1
                }
              }
            }
          ],
          "default": "enable"
        },
        "indentation": {
          "title": "Indentation",
          "description": "Use this rule to control the indentation.",
          "anyOf": [
            {
              "$ref": "#/definitions/toggle"
            },
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/allRules",
              "type": "object",
              "properties": {
                "spaces": {
                  "title": "Spaces",
                  "description": "Defines the indentation width, in spaces.",
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "enum": ["consistent"]
                    }
                  ],
                  "default": "consistent"
                },
                "indent-sequences": {
                  "title": "Indent Sequences",
                  "description": "Defines whether block sequences should be indented or not (when in a mapping, this indentation is not mandatory – some people perceive the - as part of the indentation).",
                  "anyOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "string",
                      "enum": ["whatever", "consistent"]
                    }
                  ],
                  "default": true
                },
                "check-multi-line-strings": {
                  "title": "Check Multi Line Strings",
                  "description": "Defines whether to lint indentation in multi-line strings.",
                  "type": "boolean",
                  "default": false
                }
              }
            }
          ],
          "default": "enable"
        },
        "key-duplicates": {
          "title": "Key Duplicates",
          "description": "Use this rule to prevent multiple entries with the same key in mappings.",
          "anyOf": [
            {
              "$ref": "#/definitions/toggle"
            },
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/allRules",
              "type": "object"
            }
          ],
          "default": "enable"
        },
        "key-ordering": {
          "title": "Key Ordering",
          "description": "Use this rule to enforce alphabetical ordering of keys in mappings.",
          "anyOf": [
            {
              "$ref": "#/definitions/toggle"
            },
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/allRules",
              "type": "object"
            }
          ],
          "default": "disable"
        },
        "line-length": {
          "title": "Line Length",
          "description": "Use this rule to set a limit to lines length.",
          "anyOf": [
            {
              "$ref": "#/definitions/toggle"
            },
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/allRules",
              "type": "object",
              "properties": {
                "max": {
                  "title": "Max",
                  "description": "Defines the maximal (inclusive) length of lines.",
                  "type": "number",
                  "default": 80
                },
                "allow-non-breakable-words": {
                  "title": "Allow Non-Breakable Words",
                  "description": "Used to allow non breakable words (without spaces inside) to overflow the limit.",
                  "type": "boolean",
                  "default": true
                },
                "allow-non-breakable-inline-mappings": {
                  "title": "Allow Non-Breakable Inline Mappings",
                  "description": "Implies allow-non-breakable-words and extends it to also allow non-breakable words in inline mappings.",
                  "type": "boolean",
                  "default": true
                }
              }
            }
          ],
          "default": "enable"
        },
        "new-line-at-end-of-file": {
          "title": "New Line at End of File",
          "description": "Use this rule to require a new line character (\n) at the end of files.",
          "anyOf": [
            {
              "$ref": "#/definitions/toggle"
            },
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/allRules",
              "type": "object"
            }
          ],
          "default": "enable"
        },
        "new-lines": {
          "title": "New Lines",
          "description": "Use this rule to force the type of new line characters.",
          "anyOf": [
            {
              "$ref": "#/definitions/toggle"
            },
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/allRules",
              "type": "object",
              "properties": {
                "type": {
                  "title": "Type",
                  "description": "Unix to use UNIX-typed new line characters (\n), or dos to use DOS-typed new line characters (\r\n).",
                  "type": "string",
                  "enum": ["unix", "dos", "platform"],
                  "default": "unix"
                }
              }
            }
          ],
          "default": "enable"
        },
        "octal-values": {
          "title": "Octal Values",
          "description": "Use this rule to prevent values with octal numbers.",
          "anyOf": [
            {
              "$ref": "#/definitions/toggle"
            },
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/allRules",
              "type": "object",
              "properties": {
                "forbid-implicit-octal": {
                  "title": "Forbid Implicit Octal",
                  "description": "Prevent numbers starting with 0.",
                  "type": "boolean",
                  "default": true
                },
                "forbid-explicit-octal": {
                  "title": "Forbid Explicit Octal",
                  "description": "Prevent numbers starting with 0o.",
                  "type": "boolean",
                  "default": true
                }
              }
            }
          ],
          "default": "disable"
        },
        "quoted-strings": {
          "title": "Quoted Strings",
          "description": "Use this rule to forbid any string values that are not quoted, or to prevent quoted strings without needing it.",
          "anyOf": [
            {
              "$ref": "#/definitions/toggle"
            },
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/allRules",
              "type": "object",
              "properties": {
                "quote-type": {
                  "title": "Quote Type",
                  "description": "Defines allowed quotes.",
                  "type": "string",
                  "enum": ["single", "double", "any"],
                  "default": "any"
                },
                "required": {
                  "title": "Required",
                  "description": "Defines whether using quotes in string values is required.",
                  "anyOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "string",
                      "enum": ["only-when-needed"]
                    }
                  ],
                  "default": true
                },
                "extra-required": {
                  "title": "Extra Required",
                  "description": "List of PCRE regexes to force string values to be quoted, if they match any regex.",
                  "type": "array",
                  "items": {
                    "title": "Pattern",
                    "type": "string"
                  },
                  "default": []
                },
                "extra-allowed": {
                  "title": "Extra Allowed",
                  "description": "List of PCRE regexes to allow quoted string values, even if required: only-when-needed is set.",
                  "type": "array",
                  "items": {
                    "title": "Pattern",
                    "type": "string"
                  },
                  "default": []
                }
              }
            }
          ],
          "default": "disable"
        },
        "trailing-spaces": {
          "title": "Tailing Spaces",
          "description": "Use this rule to forbid trailing spaces at the end of lines.",
          "anyOf": [
            {
              "$ref": "#/definitions/toggle"
            },
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/allRules",
              "type": "object"
            }
          ],
          "default": "enable"
        },
        "truthy": {
          "title": "Truthy",
          "description": "Use this rule to forbid non-explictly typed truthy values other than allowed ones (by default: true and false), for example YES or off.",
          "anyOf": [
            {
              "$ref": "#/definitions/toggle"
            },
            {
              "type": "boolean"
            },
            {
              "$ref": "#/definitions/allRules",
              "type": "object",
              "properties": {
                "allowed-values": {
                  "title": "Allowed Values",
                  "description": "Defines the list of truthy values which will be ignored during linting.",
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "TRUE",
                      "True",
                      "true",
                      "FALSE",
                      "False",
                      "false",
                      "YES",
                      "Yes",
                      "yes",
                      "NO",
                      "No",
                      "no",
                      "ON",
                      "On",
                      "on",
                      "OFF",
                      "Off",
                      "off"
                    ]
                  },
                  "default": ["true", "false"]
                },
                "check-keys": {
                  "title": "Check Keys",
                  "description": "Disables verification for keys in mappings.",
                  "type": "boolean",
                  "default": true
                }
              }
            }
          ],
          "default": {
            "level": "warning"
          }
        }
      }
    }
  },
  "title": "yamllint",
  "type": "object"
}
