{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "definitions": {
        "pathpair": {
            "type": "object",
            "properties": {
                "cloud": {
                    "type": "string",
                    "pattern": "(^gs://(.+))|(^http://(.+))|(^https://(.+))"
                },
                "local": {
                    "type": "string",
                    "pattern": "^/(.*)"
                }
            },
            "required": [
                "cloud",
                "local"
            ],
            "additionalProperties": false
        },
        "bytesunit": {
            "type": "string",
            "pattern": "^BYTES|^KB|^MB|^GB|^TB",
            "default": "MB"
        }
    },
    "type": "object",
    "properties": {
        "name": {
            "type": "string",
            "default": ""
        },
        "inputs": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/pathpair"
            }
        },
        "commandline": {
            "type": "string"
        },
        "outputs": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/pathpair"
            }
        },
        "stdout": {
            "type": "string",
            "pattern": "^gs://(.+)",
            "default": ""
        },
        "stderr": {
            "type": "string",
            "pattern": "^gs://(.+)",
            "default": ""
        },
        "resources": {
            "type": "object",
            "properties": {
                "cpus": {
                    "type": "number",
                    "minimum": 0.1
                },
                "mem": {
                    "type": "integer",
                    "minimum": 1
                },
                "memunit": {
                    "$ref": "#/definitions/bytesunit"
                },
                "disk": {
                    "type": "integer",
                    "minimum": 1
                },
                "diskunit": {
                    "$ref": "#/definitions/bytesunit"
                }
            },
            "required": [
                "cpus",
                "mem",
                "disk"
            ]
        },
        "docker": {
            "type": "string"
        }
    },
    "required": [
        "inputs",
        "commandline",
        "outputs",
        "resources",
        "docker"
    ]
}