{
    "$schema": "http://json-schema.org/draft-06/schema#",
    "title": "Ansible Inventory",
    "description": "Ansible Inventory for the script inventory plugin",
    "type": "object",
    "patternProperties": {
        "^\\w$": {
            "type": "object",
            "properties": {
                "hosts": {
                    "description": "list of hosts that are part of this group",
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "vars": {
                    "type": "object",
                    "description": "Variables to assign to hosts that are part of this group",
                    "patternProperties": {
                        "^\\w$": {
                            "type": "object",
                            "description": "Vars for this hosts in this group"
                        }
                    }
                },
                "children": {
                    "description": "list of groups that are children of this group, their hosts will be added to this group",
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "additionalProperties": false
        },
        "_meta": {
            "type": "object",
            "description": "Key that avoids calling the script per host",
            "required": [
                "hostvars"
            ],
            "properties": {
                "hostvars": {
                    "type": "object",
                    "description": "Each key is a hostname and the value is a dictionary of the variables for that host",
                    "patternProperties": {
                        "^\\w$": {
                            "type": "object",
                            "description": "Hosts with their associated vars",
                            "patternProperties": {
                                "^\\w$": {
                                    "type": "object",
                                    "description": "Vars for this host"
                                }
                            }
                        }
                    }
                }
            },
            "additionalProperties": false
        }
    },
    "additionalProperties": false
}