{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "array",
    "properties": {
        "input": {
            "type": "array",
            "properties": {
                "format": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "cache": {
                    "type": "string"
                },
                "noData": {
                    "type": "integer"
                },
                "clip": {
                    "type": "object",
                    "properties": {
                        "xmin": {
                            "type": "number"
                        },
                        "ymin": {
                            "type": "number"
                        },
                        "xmax": {
                            "type": "number"
                        },
                        "ymax": {
                            "type": "number"
                        }
                    },
                    "required": [
                        "xmin",
                        "ymin",
                        "xmax",
                        "ymax"
                    ]
                },
                "backend": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "path": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "type",
                        "path"
                    ]
                }
            },
            "required": [
                "format",
                "name",
                "backend"
            ],
            "additionalProperties": false
        },
        "output": {
            "type": "object",
            "properties": {
                "breaks": {
                    "type": "string"
                },
                "reprojectMethod": {
                    "type": "string"
                },
                "cellSize": {
                    "type": "object",
                    "properties": {
                        "width": {
                            "type": "number"
                        },
                        "height": {
                            "type": "number"
                        }
                    },
                    "required": [
                        "width",
                        "height"
                    ]
                },
                "encoding": {
                    "type": "string"
                },
                "tileSize": {
                    "type": "integer"
                },
                "layoutExtent": {
                    "type": "object",
                    "properties": {
                        "xmin": {
                            "type": "number"
                        },
                        "ymin": {
                            "type": "number"
                        },
                        "xmax": {
                            "type": "number"
                        },
                        "ymax": {
                            "type": "number"
                        }
                    },
                    "required": [
                        "xmin",
                        "ymin",
                        "xmax",
                        "ymax"
                    ]
                },
                "maxZoom": {
                    "type": "integer"
                },
                "resolutionThreshold": {
                    "type": "number"
                },
                "pyramid": {
                    "type": "boolean"
                },
                "backend": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "path": {
                            "type": "string"
                        },
                        "profile": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "type",
                        "path"
                    ]
                },
                "resampleMethod": {
                    "type": "string"
                },
                "keyIndexMethod": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "type"
                    ]
                },
                "layoutScheme": {
                    "type": "string"
                },
                "cellType": {
                    "type": "string"
                },
                "partitions": {
                    "type": "integer"
                },
                "crs": {
                    "type": "string"
                }
            },
            "required": [
                "backend",
                "reprojectMethod",
                "tileSize",
                "pyramid",
                "resampleMethod",
                "keyIndexMethod"
            ],
            "additionalProperties": false
        },
        "validation": {
            "type": "object",
            "properties": {
                "sampleScale": {
                    "type": "number"
                },
                "resolutionThreshold": {
                    "type": "number"
                },
                "tmpDir": {
                    "type": "string"
                },
                "tiffLocal": {
                    "type": "string"
                },
                "dateTime": {
                    "type": "string"
                }
            },
            "required": [
                "sampleScale",
                "resolutionThreshold",
                "tmpDir",
                "tiffLocal"
            ],
            "additionalProperties": false
        },
        "attributes": {
            "type": "object",
            "properties": {
                "tileType": {
                    "type": "string"
                },
                "ingestType": {
                    "type": "string"
                }
            },
            "required": [
                "tileType",
                "ingestType"
            ],
            "additionalProperties": false
        }
    },
    "required": [
        "input",
        "output",
        "validation",
        "attributes"
    ],
    "additionalProperties": false
}