{
  "$comment": "Generated from ansible.json, do not edit.",
  "$defs": {
    "ansible.builtin.import_playbook": {
      "additionalProperties": false,
      "oneOf": [
        {
          "not": {
            "required": [
              "import_playbook"
            ]
          },
          "required": [
            "ansible.builtin.import_playbook"
          ]
        },
        {
          "not": {
            "required": [
              "ansible.builtin.import_playbook"
            ]
          },
          "required": [
            "import_playbook"
          ]
        }
      ],
      "patternProperties": {
        "^(ansible\\.builtin\\.)?import_playbook$": {
          "markdownDescription": "* Includes a file with a list of plays to be executed.\n *  Files with a list of plays can only be included at the top level.\n * You cannot use this action inside a play.\n\nSee [import_playbook](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/import_playbook_module.html)",
          "title": "Import Playbook",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "tags": {
          "$ref": "#/$defs/tags"
        },
        "vars": {
          "title": "Vars",
          "type": "object"
        },
        "when": {
          "$ref": "#/$defs/complex_conditional",
          "title": "When"
        }
      },
      "type": "object"
    },
    "become_method": {
      "anyOf": [
        {
          "enum": [
            "ansible.builtin.sudo",
            "ansible.builtin.su",
            "community.general.pbrun",
            "community.general.pfexec",
            "ansible.builtin.runas",
            "community.general.dzdo",
            "community.general.ksu",
            "community.general.doas",
            "community.general.machinectl",
            "community.general.pmrun",
            "community.general.sesu",
            "community.general.sudosu"
          ],
          "type": "string"
        },
        {
          "$ref": "#/$defs/full-jinja"
        },
        {
          "pattern": "[A-Za-z0-9_\\.]+",
          "type": "string"
        }
      ],
      "markdownDescription": "See [become](https://docs.ansible.com/ansible/latest/user_guide/become.html)",
      "title": "Become Method"
    },
    "block": {
      "properties": {
        "always": {
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/task"
              },
              {
                "$ref": "#/$defs/block"
              }
            ]
          },
          "title": "Always",
          "type": "array"
        },
        "any_errors_fatal": {
          "$ref": "#/$defs/templated-boolean",
          "title": "Any Errors Fatal"
        },
        "become": {
          "$ref": "#/$defs/templated-boolean",
          "title": "Become"
        },
        "become_exe": {
          "title": "Become Exe",
          "type": "string"
        },
        "become_flags": {
          "title": "Become Flags",
          "type": "string"
        },
        "become_method": {
          "$ref": "#/$defs/become_method"
        },
        "become_user": {
          "title": "Become User",
          "type": "string"
        },
        "block": {
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/task"
              },
              {
                "$ref": "#/$defs/block"
              }
            ]
          },
          "markdownDescription": "Blocks create logical groups of tasks. Blocks also offer ways to handle task errors, similar to exception handling in many programming languages. See [blocks](https://docs.ansible.com/ansible/latest/user_guide/playbooks_blocks.html)",
          "title": "Block",
          "type": "array"
        },
        "check_mode": {
          "$ref": "#/$defs/complex_conditional",
          "title": "Check Mode"
        },
        "collections": {
          "items": {
            "type": "string"
          },
          "title": "Collections",
          "type": "array"
        },
        "connection": {
          "title": "Connection",
          "type": "string"
        },
        "debugger": {
          "title": "Debugger",
          "type": "string"
        },
        "delegate_facts": {
          "title": "Delegate Facts",
          "type": "boolean"
        },
        "delegate_to": {
          "title": "Delegate To",
          "type": "string"
        },
        "diff": {
          "$ref": "#/$defs/templated-boolean",
          "title": "Diff"
        },
        "environment": {
          "$ref": "#/$defs/environment"
        },
        "ignore_errors": {
          "$ref": "#/$defs/ignore_errors"
        },
        "ignore_unreachable": {
          "title": "Ignore Unreachable",
          "type": "boolean"
        },
        "module_defaults": {
          "title": "Module Defaults"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "no_log": {
          "$ref": "#/$defs/templated-boolean"
        },
        "port": {
          "$ref": "#/$defs/templated-integer"
        },
        "remote_user": {
          "title": "Remote User",
          "type": "string"
        },
        "rescue": {
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/task"
              },
              {
                "$ref": "#/$defs/block"
              }
            ]
          },
          "title": "Rescue",
          "type": "array"
        },
        "run_once": {
          "$ref": "#/$defs/templated-boolean",
          "title": "Run Once"
        },
        "tags": {
          "$ref": "#/$defs/tags",
          "title": "Tags"
        },
        "throttle": {
          "$ref": "#/$defs/templated-integer",
          "title": "Throttle"
        },
        "timeout": {
          "$ref": "#/$defs/templated-integer",
          "title": "Timeout"
        },
        "vars": {
          "title": "Vars",
          "type": "object"
        },
        "when": {
          "$ref": "#/$defs/complex_conditional",
          "title": "When"
        }
      },
      "required": [
        "block"
      ],
      "type": "object"
    },
    "complex_conditional": {
      "oneOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string"
        },
        {
          "items": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string"
              }
            ]
          },
          "type": "array"
        }
      ]
    },
    "environment": {
      "anyOf": [
        {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        {
          "$ref": "#/$defs/full-jinja"
        }
      ],
      "title": "Environment"
    },
    "full-jinja": {
      "pattern": "^\\{[\\{%](.|[\r\n])*[\\}%]\\}$",
      "type": "string"
    },
    "ignore_errors": {
      "$ref": "#/$defs/templated-boolean",
      "markdownDescription": "See [ignore_errors](https://docs.ansible.com/ansible/latest/user_guide/playbooks_error_handling.html#ignoring-failed-commands)",
      "title": "Ignore Errors"
    },
    "no_log": {
      "$ref": "#/$defs/templated-boolean",
      "markdownDescription": "Use for protecting sensitive data. See [no_log](https://docs.ansible.com/ansible/latest/reference_appendices/logging.html)",
      "title": "no_log"
    },
    "play": {
      "additionalProperties": false,
      "allOf": [
        {
          "not": {
            "required": [
              "ansible.builtin.import_playbook"
            ]
          }
        },
        {
          "not": {
            "required": [
              "import_playbook"
            ]
          }
        }
      ],
      "properties": {
        "any_errors_fatal": {
          "$ref": "#/$defs/templated-boolean",
          "title": "Any Errors Fatal"
        },
        "become": {
          "$ref": "#/$defs/templated-boolean",
          "title": "Become"
        },
        "become_exe": {
          "title": "Become Exe",
          "type": "string"
        },
        "become_flags": {
          "title": "Become Flags",
          "type": "string"
        },
        "become_method": {
          "$ref": "#/$defs/become_method"
        },
        "become_user": {
          "title": "Become User",
          "type": "string"
        },
        "check_mode": {
          "$ref": "#/$defs/complex_conditional",
          "title": "Check Mode"
        },
        "collections": {
          "items": {
            "type": "string"
          },
          "title": "Collections",
          "type": "array"
        },
        "connection": {
          "title": "Connection",
          "type": "string"
        },
        "debugger": {
          "title": "Debugger",
          "type": "string"
        },
        "diff": {
          "$ref": "#/$defs/templated-boolean",
          "title": "Diff"
        },
        "environment": {
          "$ref": "#/$defs/environment"
        },
        "fact_path": {
          "title": "Fact Path",
          "type": "string"
        },
        "force_handlers": {
          "title": "Force Handlers",
          "type": "boolean"
        },
        "gather_facts": {
          "$ref": "#/$defs/templated-boolean",
          "title": "Gather Facts"
        },
        "gather_subset": {
          "items": {
            "anyOf": [
              {
                "enum": [
                  "all",
                  "min",
                  "all_ipv4_addresses",
                  "all_ipv6_addresses",
                  "apparmor",
                  "architecture",
                  "caps",
                  "chroot,cmdline",
                  "date_time",
                  "default_ipv4",
                  "default_ipv6",
                  "devices",
                  "distribution",
                  "distribution_major_version",
                  "distribution_release",
                  "distribution_version",
                  "dns",
                  "effective_group_ids",
                  "effective_user_id",
                  "env",
                  "facter",
                  "fips",
                  "hardware",
                  "interfaces",
                  "is_chroot",
                  "iscsi",
                  "kernel",
                  "local",
                  "lsb",
                  "machine",
                  "machine_id",
                  "mounts",
                  "network",
                  "ohai",
                  "os_family",
                  "pkg_mgr",
                  "platform",
                  "processor",
                  "processor_cores",
                  "processor_count",
                  "python",
                  "python_version",
                  "real_user_id",
                  "selinux",
                  "service_mgr",
                  "ssh_host_key_dsa_public",
                  "ssh_host_key_ecdsa_public",
                  "ssh_host_key_ed25519_public",
                  "ssh_host_key_rsa_public",
                  "ssh_host_pub_keys",
                  "ssh_pub_keys",
                  "system",
                  "system_capabilities",
                  "system_capabilities_enforced",
                  "user",
                  "user_dir",
                  "user_gecos",
                  "user_gid",
                  "user_id",
                  "user_shell",
                  "user_uid",
                  "virtual",
                  "virtualization_role",
                  "virtualization_type"
                ],
                "type": "string"
              },
              {
                "enum": [
                  "!all",
                  "!min",
                  "!all_ipv4_addresses",
                  "!all_ipv6_addresses",
                  "!apparmor",
                  "!architecture",
                  "!caps",
                  "!chroot,cmdline",
                  "!date_time",
                  "!default_ipv4",
                  "!default_ipv6",
                  "!devices",
                  "!distribution",
                  "!distribution_major_version",
                  "!distribution_release",
                  "!distribution_version",
                  "!dns",
                  "!effective_group_ids",
                  "!effective_user_id",
                  "!env",
                  "!facter",
                  "!fips",
                  "!hardware",
                  "!interfaces",
                  "!is_chroot",
                  "!iscsi",
                  "!kernel",
                  "!local",
                  "!lsb",
                  "!machine",
                  "!machine_id",
                  "!mounts",
                  "!network",
                  "!ohai",
                  "!os_family",
                  "!pkg_mgr",
                  "!platform",
                  "!processor",
                  "!processor_cores",
                  "!processor_count",
                  "!python",
                  "!python_version",
                  "!real_user_id",
                  "!selinux",
                  "!service_mgr",
                  "!ssh_host_key_dsa_public",
                  "!ssh_host_key_ecdsa_public",
                  "!ssh_host_key_ed25519_public",
                  "!ssh_host_key_rsa_public",
                  "!ssh_host_pub_keys",
                  "!ssh_pub_keys",
                  "!system",
                  "!system_capabilities",
                  "!system_capabilities_enforced",
                  "!user",
                  "!user_dir",
                  "!user_gecos",
                  "!user_gid",
                  "!user_id",
                  "!user_shell",
                  "!user_uid",
                  "!virtual",
                  "!virtualization_role",
                  "!virtualization_type"
                ],
                "type": "string"
              }
            ]
          },
          "title": "Gather Subset",
          "type": "array"
        },
        "gather_timeout": {
          "$ref": "#/$defs/templated-integer",
          "title": "Gather Timeout"
        },
        "handlers": {
          "$ref": "#/$defs/tasks"
        },
        "hosts": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "title": "Hosts"
        },
        "ignore_errors": {
          "$ref": "#/$defs/ignore_errors"
        },
        "ignore_unreachable": {
          "title": "Ignore Unreachable",
          "type": "boolean"
        },
        "max_fail_percentage": {
          "$ref": "#/$defs/templated-integer",
          "title": "Max Fail Percentage"
        },
        "module_defaults": {
          "title": "Module Defaults"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "no_log": {
          "$ref": "#/$defs/templated-boolean"
        },
        "order": {
          "enum": [
            "default",
            "sorted",
            "reverse_sorted",
            "reverse_inventory",
            "shuffle"
          ],
          "title": "Order",
          "type": "string"
        },
        "port": {
          "$ref": "#/$defs/templated-integer",
          "title": "Port"
        },
        "post_tasks": {
          "$ref": "#/$defs/tasks"
        },
        "pre_tasks": {
          "$ref": "#/$defs/tasks"
        },
        "remote_user": {
          "title": "Remote User",
          "type": "string"
        },
        "roles": {
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/play-role"
              },
              {
                "type": "string"
              }
            ]
          },
          "markdownDescription": "Roles let you automatically load related vars, files, tasks, handlers, and other Ansible artifacts based on a known file structure. After you group your content in roles, you can easily reuse them and share them with other users.\n See [roles](https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html#roles)",
          "title": "Roles",
          "type": "array"
        },
        "run_once": {
          "$ref": "#/$defs/templated-boolean",
          "title": "Run Once"
        },
        "serial": {
          "anyOf": [
            {
              "$ref": "#/$defs/templated-integer-or-percent"
            },
            {
              "items": {
                "$ref": "#/$defs/templated-integer-or-percent"
              },
              "type": "array"
            }
          ],
          "markdownDescription": "Integer, percentage or list of those. See [Setting the batch size with serial](https://docs.ansible.com/ansible/latest/user_guide/playbooks_strategies.html#setting-the-batch-size-with-serial)",
          "title": "Batch size"
        },
        "strategy": {
          "title": "Strategy",
          "type": "string"
        },
        "tags": {
          "$ref": "#/$defs/tags",
          "title": "Tags"
        },
        "tasks": {
          "$ref": "#/$defs/tasks"
        },
        "throttle": {
          "$ref": "#/$defs/templated-integer",
          "title": "Throttle"
        },
        "timeout": {
          "$ref": "#/$defs/templated-integer",
          "title": "Timeout"
        },
        "user": {
          "title": "Remote User",
          "type": "string"
        },
        "vars": {
          "title": "Vars",
          "type": "object"
        },
        "vars_files": {
          "items": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              }
            ]
          },
          "title": "Vars Files",
          "type": [
            "array",
            "string",
            "null"
          ]
        },
        "vars_prompt": {
          "items": {
            "$ref": "#/$defs/vars_prompt"
          },
          "markdownDescription": "See [vars_prompt](https://docs.ansible.com/ansible/latest/user_guide/playbooks_prompts.html)",
          "title": "vars_prompt",
          "type": "array"
        },
        "when": {
          "$ref": "#/$defs/complex_conditional",
          "title": "When"
        }
      },
      "required": [
        "hosts"
      ],
      "title": "play",
      "type": "object"
    },
    "play-role": {
      "markdownDescription": "See [roles](https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html#roles)",
      "properties": {
        "any_errors_fatal": {
          "$ref": "#/$defs/templated-boolean",
          "title": "Any Errors Fatal"
        },
        "become": {
          "$ref": "#/$defs/templated-boolean",
          "title": "Become"
        },
        "become_exe": {
          "title": "Become Exe",
          "type": "string"
        },
        "become_flags": {
          "title": "Become Flags",
          "type": "string"
        },
        "become_method": {
          "$ref": "#/$defs/become_method"
        },
        "become_user": {
          "title": "Become User",
          "type": "string"
        },
        "check_mode": {
          "$ref": "#/$defs/complex_conditional",
          "title": "Check Mode"
        },
        "collections": {
          "items": {
            "type": "string"
          },
          "title": "Collections",
          "type": "array"
        },
        "connection": {
          "title": "Connection",
          "type": "string"
        },
        "debugger": {
          "title": "Debugger",
          "type": "string"
        },
        "delegate_to": {
          "title": "Delegate To",
          "type": "string"
        },
        "diff": {
          "$ref": "#/$defs/templated-boolean",
          "title": "Diff"
        },
        "environment": {
          "$ref": "#/$defs/environment"
        },
        "ignore_errors": {
          "$ref": "#/$defs/ignore_errors"
        },
        "ignore_unreachable": {
          "title": "Ignore Unreachable",
          "type": "boolean"
        },
        "module_defaults": {
          "title": "Module Defaults"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "no_log": {
          "$ref": "#/$defs/templated-boolean"
        },
        "port": {
          "$ref": "#/$defs/templated-integer",
          "title": "Port"
        },
        "remote_user": {
          "title": "Remote User",
          "type": "string"
        },
        "role": {
          "title": "Role",
          "type": "string"
        },
        "run_once": {
          "$ref": "#/$defs/templated-boolean",
          "title": "Run Once"
        },
        "tags": {
          "$ref": "#/$defs/tags",
          "title": "Tags"
        },
        "throttle": {
          "$ref": "#/$defs/templated-integer",
          "title": "Throttle"
        },
        "timeout": {
          "$ref": "#/$defs/templated-integer",
          "title": "Timeout"
        },
        "vars": {
          "title": "Vars",
          "type": "object"
        },
        "when": {
          "$ref": "#/$defs/complex_conditional",
          "title": "When"
        }
      },
      "required": [
        "role"
      ],
      "title": "play-role",
      "type": "object"
    },
    "removed-include-module": {
      "markdownDescription": "See [include module](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/include_module.html)",
      "not": {},
      "title": "Replace 'include' with either 'ansible.builtin.include_tasks' or 'ansible.builtin.import_tasks'"
    },
    "tags": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      ],
      "title": "Tags"
    },
    "task": {
      "additionalProperties": true,
      "allOf": [
        {
          "not": {
            "required": [
              "hosts"
            ]
          }
        },
        {
          "not": {
            "required": [
              "tasks"
            ]
          }
        },
        {
          "not": {
            "required": [
              "import_playbook"
            ]
          }
        },
        {
          "not": {
            "required": [
              "block"
            ]
          }
        }
      ],
      "properties": {
        "action": {
          "title": "Action",
          "type": "string"
        },
        "ansible.builtin.include": {
          "$ref": "#/$defs/removed-include-module"
        },
        "ansible.legacy.include": {
          "$ref": "#/$defs/removed-include-module"
        },
        "any_errors_fatal": {
          "$ref": "#/$defs/templated-boolean",
          "title": "Any Errors Fatal"
        },
        "args": {
          "$ref": "#/$defs/templated-object",
          "title": "Args"
        },
        "async": {
          "$ref": "#/$defs/templated-integer",
          "title": "Async"
        },
        "become": {
          "$ref": "#/$defs/templated-boolean",
          "title": "Become"
        },
        "become_exe": {
          "title": "Become Exe",
          "type": "string"
        },
        "become_flags": {
          "title": "Become Flags",
          "type": "string"
        },
        "become_method": {
          "$ref": "#/$defs/become_method"
        },
        "become_user": {
          "title": "Become User",
          "type": "string"
        },
        "changed_when": {
          "$ref": "#/$defs/complex_conditional",
          "markdownDescription": "See [changed_when](https://docs.ansible.com/ansible/latest/user_guide/playbooks_error_handling.html#defining-changed)",
          "title": "Changed When"
        },
        "check_mode": {
          "$ref": "#/$defs/complex_conditional",
          "title": "Check Mode"
        },
        "collections": {
          "items": {
            "type": "string"
          },
          "title": "Collections",
          "type": "array"
        },
        "connection": {
          "title": "Connection",
          "type": "string"
        },
        "debugger": {
          "title": "Debugger",
          "type": "string"
        },
        "delay": {
          "$ref": "#/$defs/templated-integer",
          "title": "Delay"
        },
        "delegate_facts": {
          "title": "Delegate Facts",
          "type": "boolean"
        },
        "delegate_to": {
          "title": "Delegate To",
          "type": "string"
        },
        "diff": {
          "$ref": "#/$defs/templated-boolean",
          "title": "Diff"
        },
        "environment": {
          "$ref": "#/$defs/environment"
        },
        "failed_when": {
          "$ref": "#/$defs/complex_conditional",
          "title": "Failed When"
        },
        "ignore_errors": {
          "$ref": "#/$defs/ignore_errors"
        },
        "ignore_unreachable": {
          "title": "Ignore Unreachable",
          "type": "boolean"
        },
        "include": {
          "$ref": "#/$defs/removed-include-module"
        },
        "listen": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "markdownDescription": "Applies only to handlers. See [listen](https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_handlers.html)",
          "title": "Listen"
        },
        "local_action": {
          "title": "Local Action",
          "type": [
            "string",
            "object"
          ]
        },
        "loop": {
          "title": "Loop",
          "type": [
            "string",
            "array"
          ]
        },
        "loop_control": {
          "title": "Loop Control"
        },
        "module_defaults": {
          "title": "Module Defaults"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "no_log": {
          "$ref": "#/$defs/no_log"
        },
        "notify": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "title": "Notify"
        },
        "poll": {
          "$ref": "#/$defs/templated-integer",
          "title": "Poll"
        },
        "port": {
          "$ref": "#/$defs/templated-integer",
          "title": "Port"
        },
        "register": {
          "title": "Register",
          "type": "string"
        },
        "remote_user": {
          "title": "Remote User",
          "type": "string"
        },
        "retries": {
          "$ref": "#/$defs/templated-integer",
          "title": "Retries"
        },
        "run_once": {
          "$ref": "#/$defs/templated-boolean",
          "title": "Run Once"
        },
        "tags": {
          "$ref": "#/$defs/tags",
          "title": "Tags"
        },
        "throttle": {
          "$ref": "#/$defs/templated-integer",
          "title": "Throttle"
        },
        "timeout": {
          "$ref": "#/$defs/templated-integer",
          "title": "Timeout"
        },
        "until": {
          "$ref": "#/$defs/complex_conditional",
          "title": "Until"
        },
        "vars": {
          "title": "Vars",
          "type": "object"
        },
        "when": {
          "$ref": "#/$defs/complex_conditional",
          "title": "When"
        },
        "with_dict": {
          "title": "With Dict"
        },
        "with_fileglob": {
          "title": "With Fileglob"
        },
        "with_filetree": {
          "title": "With Filetree"
        },
        "with_first_found": {
          "title": "With First Found"
        },
        "with_indexed_items": {
          "title": "With Indexed Items"
        },
        "with_ini": {
          "title": "With Ini"
        },
        "with_inventory_hostnames": {
          "title": "With Inventory Hostnames"
        },
        "with_items": {
          "anyOf": [
            {
              "$ref": "#/$defs/full-jinja"
            },
            {
              "type": "array"
            }
          ],
          "markdownDescription": "See [loops](https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html#loops)",
          "title": "With Items"
        },
        "with_lines": {
          "title": "With Lines"
        },
        "with_random_choice": {
          "title": "With Random Choice"
        },
        "with_sequence": {
          "title": "With Sequence"
        },
        "with_subelements": {
          "title": "With Subelements"
        },
        "with_together": {
          "title": "With Together"
        }
      },
      "title": "task",
      "type": "object"
    },
    "tasks": {
      "$schema": "http://json-schema.org/draft-07/schema",
      "examples": [
        "tasks/*.yml",
        "handlers/*.yml"
      ],
      "items": {
        "anyOf": [
          {
            "$ref": "#/$defs/block"
          },
          {
            "$ref": "#/$defs/task"
          }
        ]
      },
      "title": "Ansible Tasks Schema",
      "type": [
        "array",
        "null"
      ]
    },
    "templated-boolean": {
      "oneOf": [
        {
          "type": "boolean"
        },
        {
          "$ref": "#/$defs/full-jinja",
          "type": "string"
        }
      ]
    },
    "templated-integer": {
      "oneOf": [
        {
          "type": "integer"
        },
        {
          "$ref": "#/$defs/full-jinja",
          "type": "string"
        }
      ]
    },
    "templated-integer-or-percent": {
      "oneOf": [
        {
          "type": "integer"
        },
        {
          "pattern": "^\\d+\\.?\\d*%?$",
          "type": "string"
        },
        {
          "$ref": "#/$defs/full-jinja",
          "type": "string"
        }
      ]
    },
    "templated-object": {
      "oneOf": [
        {
          "type": "object"
        },
        {
          "$ref": "#/$defs/full-jinja",
          "type": "string"
        }
      ]
    },
    "vars_prompt": {
      "additionalProperties": false,
      "properties": {
        "confirm": {
          "title": "Confirm",
          "type": "boolean"
        },
        "default": {
          "title": "Default",
          "type": "string"
        },
        "encrypt": {
          "enum": [
            "des_crypt",
            "bsdi_crypt",
            "bigcrypt",
            "crypt16",
            "md5_crypt",
            "bcrypt",
            "sha1_crypt",
            "sun_md5_crypt",
            "sha256_crypt",
            "sha512_crypt",
            "apr_md5_crypt",
            "phpass",
            "pbkdf2_digest",
            "cta_pbkdf2_sha1",
            "dlitz_pbkdf2_sha1",
            "scram",
            "bsd_nthash"
          ],
          "title": "Encrypt",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "private": {
          "default": true,
          "title": "Private",
          "type": "boolean"
        },
        "prompt": {
          "title": "Prompt",
          "type": "string"
        },
        "salt_size": {
          "default": 8,
          "title": "Salt Size",
          "type": "integer"
        },
        "unsafe": {
          "default": false,
          "markdownDescription": "See [unsafe](https://docs.ansible.com/ansible/latest/user_guide/playbooks_prompts.html#allowing-special-characters-in-vars-prompt-values)",
          "title": "Unsafe",
          "type": "boolean"
        }
      },
      "required": [
        "name",
        "prompt"
      ],
      "type": "object"
    }
  },
  "$id": "https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/playbook.json",
  "$schema": "http://json-schema.org/draft-07/schema",
  "examples": [
    "playbooks/*.yml",
    "playbooks/*.yaml"
  ],
  "items": {
    "oneOf": [
      {
        "$ref": "#/$defs/ansible.builtin.import_playbook"
      },
      {
        "$ref": "#/$defs/play"
      }
    ]
  },
  "title": "Ansible Playbook",
  "type": "array"
}
