{
    "properties": {
        "crate": {
            "description": "Crate configuration properties.",
            "properties": {
                "blob-path": {
                    "description": "The absolute path where Crate should store blobs. Note that the user `crate` needs write access!",
                    "type": "string"
                },
                "cluster-name": {
                    "default": "crate",
                    "description": "The name of the Crate cluster.",
                    "type": "string"
                },
                "data-path": {
                    "description": "The absolute path where Crate should store table data. Note that the user `crate` needs write access!",
                    "type": "string"
                },
                "framework": {
                    "description": "Framework configuration properties.",
                    "properties": {
                        "api-port": {
                            "default": 4040,
                            "description": "Port for the REST API of the Crate Mesos Framework.",
                            "maximum": 65535,
                            "minimum": 0,
                            "type": "integer"
                        },
                        "auth": {
                            "description": "Authentication Configuration Properties.",
                            "properties": {
                                "enabled": {
                                    "default": false,
                                    "description": "Whether framework authentication should be enabled. Requires principal and secret to be set.",
                                    "type": "boolean"
                                },
                                "principal": {
                                    "description": "The Mesos principal used for framework authentication.",
                                    "type": "string"
                                },
                                "secret": {
                                    "description": "The Mesos secret used for framework authentication.",
                                    "type": "string"
                                }
                            },
                            "type": "object"
                        },
                        "cpus": {
                            "default": 0.25,
                            "description": "Required number of cpus.",
                            "maximum": 1,
                            "minimum": 0.25,
                            "type": "number"
                        },
                        "instances": {
                            "default": 1,
                            "description": "Number of framework instances.",
                            "maximum": 3,
                            "minimum": 1,
                            "type": "integer"
                        },
                        "memory": {
                            "default": 512,
                            "description": "Required heap size.",
                            "maximum": 1024,
                            "minimum": 256,
                            "type": "integer"
                        },
                        "role": {
                            "default": "*",
                            "description": "Mesos role for the framework.",
                            "type": "string"
                        },
                        "user": {
                            "default": "root",
                            "description": "User to run the framework as.",
                            "type": "string"
                        },
                        "zookeeper": {
                            "default": "master.mesos:2181",
                            "description": "URL to the Zookeeper Crate will communicate to (without protocol prefix, e.g. mesos-master:2181)",
                            "type": "string"
                        }
                    },
                    "required": [
                        "zookeeper",
                        "cpus",
                        "instances",
                        "memory",
                        "api-port"
                    ],
                    "type": "object"
                },
                "framework-name": {
                    "default": "crate",
                    "description": "The name of the framework.",
                    "type": "string"
                },
                "http-port": {
                    "default": 4200,
                    "description": "HTTP port of the Crate instances.",
                    "maximum": 65535,
                    "minimum": 0,
                    "type": "integer"
                },
                "resources": {
                    "description": "Crate resources configuration properties.",
                    "properties": {
                        "cpus": {
                            "default": 0.5,
                            "description": "Required number of CPUs.",
                            "maximum": 128.0,
                            "minimum": 0.5,
                            "type": "number"
                        },
                        "disk": {
                            "default": 2048,
                            "description": "Required free disk space.",
                            "maximum": 65535,
                            "minimum": 1024,
                            "type": "integer"
                        },
                        "heap": {
                            "default": 1024,
                            "description": "Required heap size.",
                            "maximum": 65535,
                            "minimum": 512,
                            "type": "integer"
                        },
                        "memory": {
                            "default": 2048,
                            "description": "Required size of memory.",
                            "maximum": 65535,
                            "minimum": 1024,
                            "type": "number"
                        }
                    },
                    "required": [
                        "cpus",
                        "memory",
                        "heap",
                        "disk"
                    ],
                    "type": "object"
                },
                "transport-port": {
                    "default": 4300,
                    "description": "Internal transport port of the Crate instances.",
                    "maximum": 65535,
                    "minimum": 0,
                    "type": "integer"
                },
                "version": {
                    "default": "0.50.3",
                    "description": "The version number of Crate that should be used for the framework.",
                    "type": "string"
                }
            },
            "required": [
                "version",
                "cluster-name",
                "framework-name",
                "http-port",
                "transport-port"
            ],
            "type": "object"
        }
    },
    "type": "object"
}