{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "properties": {
        "$schema": {
            "type": "string"
        },
        "type": {
            "type": "string"
        },
        "properties": {
            "type": "object",
            "properties": {
                "views": {
                    "description": "\u9875\u9762\u89c6\u56fe\u5143\u7d20\u63cf\u8ff0",
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "items": {
                            "type": "object",
                            "properties": {
                                "type": {
                                    "type": "string"
                                },
                                "properties": {
                                    "type": "object",
                                    "properties": {
                                        "children": {
                                            "description": "\u5f53\u524d\u5e03\u5c40\u89c6\u56fe\u7ec4\u4ef6\u5305\u542b\u7684\u5b69\u5b50(\u56fe\u3001\u8868)\u5143\u7d20",
                                            "type": "object",
                                            "properties": {
                                                "type": {
                                                    "type": "string"
                                                },
                                                "items": {
                                                    "type": "object",
                                                    "properties": {
                                                        "type": {
                                                            "type": "string"
                                                        },
                                                        "properties": {
                                                            "type": "object",
                                                            "properties": {
                                                                "chart": {
                                                                    "type": "object",
                                                                    "properties": {
                                                                        "type": {
                                                                            "type": "string"
                                                                        }
                                                                    },
                                                                    "required": [
                                                                        "type"
                                                                    ]
                                                                },
                                                                "type": {
                                                                    "description": "\u89c6\u56fe\u7ec6\u5206\u7c7b\u578b(grid|line|column ...)",
                                                                    "type": "object",
                                                                    "properties": {
                                                                        "type": {
                                                                            "type": "string"
                                                                        }
                                                                    },
                                                                    "required": [
                                                                        "type"
                                                                    ]
                                                                },
                                                                "viewType": {
                                                                    "description": "\u89c6\u56fe\u5927\u7c7b:( GRID |  CHART)",
                                                                    "type": "object",
                                                                    "properties": {
                                                                        "type": {
                                                                            "type": "string"
                                                                        }
                                                                    },
                                                                    "required": [
                                                                        "type"
                                                                    ]
                                                                },
                                                                "previewRows": {
                                                                    "description": "\u9884\u89c8\u51fd\u6570",
                                                                    "type": "object",
                                                                    "properties": {
                                                                        "type": {
                                                                            "type": "number"
                                                                        }
                                                                    },
                                                                    "required": [
                                                                        "type"
                                                                    ]
                                                                },
                                                                "sorter": {
                                                                    "description": "\u6392\u5e8f\u5143\u7d20",
                                                                    "type": "object",
                                                                    "properties": {
                                                                        "type": {
                                                                            "type": "string"
                                                                        },
                                                                        "items": {
                                                                            "type": "object",
                                                                            "properties": {
                                                                                "type": {
                                                                                    "type": "string"
                                                                                },
                                                                                "properties": {
                                                                                    "type": "object",
                                                                                    "properties": {
                                                                                        "type": {
                                                                                            "type": "object",
                                                                                            "properties": {
                                                                                                "type": {
                                                                                                    "type": "string"
                                                                                                }
                                                                                            },
                                                                                            "required": [
                                                                                                "type"
                                                                                            ]
                                                                                        },
                                                                                        "sort": {
                                                                                            "type": "object",
                                                                                            "properties": {
                                                                                                "type": {
                                                                                                    "type": "string"
                                                                                                }
                                                                                            },
                                                                                            "required": [
                                                                                                "type"
                                                                                            ]
                                                                                        },
                                                                                        "name": {
                                                                                            "type": "object",
                                                                                            "properties": {
                                                                                                "type": {
                                                                                                    "type": "string"
                                                                                                }
                                                                                            },
                                                                                            "required": [
                                                                                                "type"
                                                                                            ]
                                                                                        },
                                                                                        "key": {
                                                                                            "type": "object",
                                                                                            "properties": {
                                                                                                "type": {
                                                                                                    "type": "string"
                                                                                                }
                                                                                            },
                                                                                            "required": [
                                                                                                "type"
                                                                                            ]
                                                                                        }
                                                                                    },
                                                                                    "required": [
                                                                                        "type",
                                                                                        "sort",
                                                                                        "name",
                                                                                        "key"
                                                                                    ]
                                                                                },
                                                                                "required": {
                                                                                    "type": "array",
                                                                                    "items": {
                                                                                        "type": "string"
                                                                                    }
                                                                                }
                                                                            },
                                                                            "required": [
                                                                                "type",
                                                                                "properties",
                                                                                "required"
                                                                            ]
                                                                        }
                                                                    },
                                                                    "required": [
                                                                        "type",
                                                                        "items"
                                                                    ]
                                                                },
                                                                "frequency": {
                                                                    "description": "\u5237\u65b0\u9891\u7387",
                                                                    "type": "object",
                                                                    "properties": {
                                                                        "type": {
                                                                            "type": "number"
                                                                        }
                                                                    },
                                                                    "required": [
                                                                        "type"
                                                                    ]
                                                                },
                                                                "style": {
                                                                    "description": "\u56fe\u5143\u7d20\u7684\u6837\u5f0f\u914d\u7f6e\u4fe1\u606f",
                                                                    "type": "object",
                                                                    "properties": {
                                                                        "type": {
                                                                            "type": "string"
                                                                        },
                                                                        "properties": {
                                                                            "type": "object",
                                                                            "properties": {
                                                                                "title": {
                                                                                    "description": "\u6807\u9898",
                                                                                    "type": "object",
                                                                                    "properties": {
                                                                                        "type": {
                                                                                            "type": "string"
                                                                                        }
                                                                                    },
                                                                                    "required": [
                                                                                        "type"
                                                                                    ]
                                                                                },
                                                                                "needTitle": {
                                                                                    "description": "\u662f\u5426\u9700\u8981\u663e\u793a\u6807\u9898",
                                                                                    "type": "object",
                                                                                    "properties": {
                                                                                        "type": {
                                                                                            "type": "boolean"
                                                                                        }
                                                                                    },
                                                                                    "required": [
                                                                                        "type"
                                                                                    ]
                                                                                },
                                                                                "width": {
                                                                                    "description": "\u5bbd\u5ea6",
                                                                                    "type": "object",
                                                                                    "properties": {
                                                                                        "type": {
                                                                                            "type": "number"
                                                                                        }
                                                                                    },
                                                                                    "required": [
                                                                                        "type"
                                                                                    ]
                                                                                },
                                                                                "height": {
                                                                                    "description": "\u9ad8\u5ea6",
                                                                                    "type": "object",
                                                                                    "properties": {
                                                                                        "type": {
                                                                                            "type": "number"
                                                                                        }
                                                                                    },
                                                                                    "required": [
                                                                                        "type"
                                                                                    ]
                                                                                },
                                                                                "needX": {
                                                                                    "description": "\u662f\u5426\u9700\u8981\u663e\u793aX\u8f74",
                                                                                    "type": "object",
                                                                                    "properties": {
                                                                                        "type": {
                                                                                            "type": "boolean"
                                                                                        }
                                                                                    },
                                                                                    "required": [
                                                                                        "type"
                                                                                    ]
                                                                                },
                                                                                "needY": {
                                                                                    "description": "\u662f\u5426\u9700\u8981\u663e\u793aY\u8f74",
                                                                                    "type": "object",
                                                                                    "properties": {
                                                                                        "type": {
                                                                                            "type": "boolean"
                                                                                        }
                                                                                    },
                                                                                    "required": [
                                                                                        "type"
                                                                                    ]
                                                                                }
                                                                            },
                                                                            "required": [
                                                                                "title",
                                                                                "needTitle",
                                                                                "width",
                                                                                "height",
                                                                                "needX",
                                                                                "needY"
                                                                            ]
                                                                        },
                                                                        "required": {
                                                                            "type": "array",
                                                                            "items": {
                                                                                "type": "string"
                                                                            }
                                                                        }
                                                                    },
                                                                    "required": [
                                                                        "type",
                                                                        "properties",
                                                                        "required"
                                                                    ]
                                                                },
                                                                "dataSource": {
                                                                    "type": "object",
                                                                    "properties": {
                                                                        "type": {
                                                                            "type": "string"
                                                                        },
                                                                        "properties": {
                                                                            "type": "object",
                                                                            "properties": {
                                                                                "type": {
                                                                                    "description": "\u6570\u636e\u6e90\u7c7b\u578b(CUBE|HIVE|MODEL|WORKTABLE)",
                                                                                    "type": "object",
                                                                                    "properties": {
                                                                                        "type": {
                                                                                            "type": "string"
                                                                                        }
                                                                                    },
                                                                                    "required": [
                                                                                        "type"
                                                                                    ]
                                                                                },
                                                                                "schema": {
                                                                                    "description": "\u6570\u636e\u5e93schema",
                                                                                    "type": "object",
                                                                                    "properties": {
                                                                                        "type": {
                                                                                            "type": "string"
                                                                                        }
                                                                                    },
                                                                                    "required": [
                                                                                        "type"
                                                                                    ]
                                                                                },
                                                                                "model_name": {
                                                                                    "description": "\u6a21\u578b\u540d\u79f0",
                                                                                    "type": "object",
                                                                                    "properties": {
                                                                                        "type": {
                                                                                            "type": "string"
                                                                                        }
                                                                                    },
                                                                                    "required": [
                                                                                        "type"
                                                                                    ]
                                                                                },
                                                                                "table": {
                                                                                    "description": "\u6570\u636e\u5e93\u8868\u540d",
                                                                                    "type": "object",
                                                                                    "properties": {
                                                                                        "type": {
                                                                                            "type": "string"
                                                                                        }
                                                                                    },
                                                                                    "required": [
                                                                                        "type"
                                                                                    ]
                                                                                },
                                                                                "dimensions": {
                                                                                    "description": "\u7ef4\u5ea6\u4fe1\u606f",
                                                                                    "type": "object",
                                                                                    "properties": {
                                                                                        "type": {
                                                                                            "type": "string"
                                                                                        },
                                                                                        "items": {
                                                                                            "type": "object",
                                                                                            "properties": {
                                                                                                "type": {
                                                                                                    "type": "string"
                                                                                                }
                                                                                            },
                                                                                            "required": [
                                                                                                "type"
                                                                                            ]
                                                                                        }
                                                                                    },
                                                                                    "required": [
                                                                                        "type",
                                                                                        "items"
                                                                                    ]
                                                                                },
                                                                                "measures": {
                                                                                    "description": "\u6307\u6807\u4fe1\u606f",
                                                                                    "type": "object",
                                                                                    "properties": {
                                                                                        "type": {
                                                                                            "type": "string"
                                                                                        },
                                                                                        "items": {
                                                                                            "type": "object",
                                                                                            "properties": {
                                                                                                "type": {
                                                                                                    "type": "string"
                                                                                                }
                                                                                            },
                                                                                            "required": [
                                                                                                "type"
                                                                                            ]
                                                                                        }
                                                                                    },
                                                                                    "required": [
                                                                                        "type",
                                                                                        "items"
                                                                                    ]
                                                                                },
                                                                                "limit": {
                                                                                    "description": "\u67e5\u8be2\u7ed3\u679c\u6700\u5927\u8fd4\u56de\u8bb0\u5f55\u6570",
                                                                                    "type": "object",
                                                                                    "properties": {
                                                                                        "type": {
                                                                                            "type": "string"
                                                                                        }
                                                                                    },
                                                                                    "required": [
                                                                                        "type"
                                                                                    ]
                                                                                }
                                                                            },
                                                                            "required": [
                                                                                "type",
                                                                                "schema",
                                                                                "model_name",
                                                                                "table",
                                                                                "dimensions",
                                                                                "measures",
                                                                                "limit"
                                                                            ]
                                                                        },
                                                                        "required": {
                                                                            "type": "array",
                                                                            "items": {
                                                                                "type": "string"
                                                                            }
                                                                        }
                                                                    },
                                                                    "required": [
                                                                        "type",
                                                                        "properties",
                                                                        "required"
                                                                    ]
                                                                }
                                                            },
                                                            "required": [
                                                                "chart",
                                                                "type",
                                                                "viewType",
                                                                "previewRows",
                                                                "sorter",
                                                                "frequency",
                                                                "style",
                                                                "dataSource"
                                                            ]
                                                        },
                                                        "required": {
                                                            "type": "array",
                                                            "items": {
                                                                "type": "string"
                                                            }
                                                        }
                                                    },
                                                    "required": [
                                                        "type",
                                                        "properties",
                                                        "required"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "type",
                                                "items"
                                            ]
                                        },
                                        "layout": {
                                            "description": "\u5e03\u5c40\u7c7b\u578b(HBOX|TABBOX|ROW)",
                                            "type": "object",
                                            "properties": {
                                                "type": {
                                                    "type": "string"
                                                }
                                            },
                                            "required": [
                                                "type"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "children",
                                        "layout"
                                    ]
                                },
                                "required": {
                                    "type": "array",
                                    "items": {
                                        "type": "string"
                                    }
                                }
                            },
                            "required": [
                                "type",
                                "properties",
                                "required"
                            ]
                        }
                    },
                    "required": [
                        "type",
                        "items"
                    ]
                },
                "name": {
                    "description": "\u6570\u636e\u6545\u4e8b\u540d\u79f0",
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "type"
                    ]
                }
            },
            "required": [
                "views",
                "name"
            ]
        },
        "required": {
            "type": "array",
            "items": {
                "type": "string"
            }
        }
    },
    "required": [
        "$schema",
        "type",
        "properties",
        "required"
    ]
}