{
    "type": "object",
    "properties": {
        "name": {
            "type": "string",
            "default": "",
            "minLength": 1,
            "maxLength": 64
        },
        "enable": {
            "type": "boolean",
            "default": true,
            "enum": [true, false]
        },
        "exec": {
            "type": "string",
            "default": "",
            "minLength": 1,
            "maxLength": 1024
        },
        "allow_failure": {
            "type": "boolean",
            "default": false,
            "enum": [true, false]
        },
        "logs": {
            "type": "boolean",
            "default": false,
            "enum": [true, false]
        },
        "scope": {
            "type": "string",
            "default": "default",
            "minLength": 1,
            "maxLength": 64
        },
        "env": {
            "type": "object",
            "default": {}
        },
        "when": {
            "type": "object",
            "default": {},
            "properties": {
                "environment": {
                    "type": "string",
                    "default": "all",
                    "enum": ["all", "ci", "local"]
                },
                "os": {
                    "type": "string",
                    "default": "all",
                    "enum": ["all", "win", "linux"]
                },
                "env": {
                    "type": "array",
                    "default": [],
                    "items": {
                        "type": "string"
                    },
                    "minItems": 0
                }
            },
            "required": [
                "environment",
                "os",
                "env"
            ]
        },
        "description": {
            "type": "string",
            "minLength": 0,
            "maxLength": 1024
        }
    },
    "required": [
        "name",
        "enable",
        "exec",
        "allow_failure",
        "logs",
        "env",
        "when",
        "scope"
    ]
}