{
	"$schema": "http://json-schema.org/draft-04/schema#",
	"type": "object",
	"title": "Root configuration object",
	"description": "sysmon root configuration object.",
	"additionalItems": false,
	"properties": {
		"inspectorType": {
			"enum": ["Fixed", "Floating", "Free"]
		},
		"icons": {
			"type": "array",
			"title": "Icon array",
			"description": "An array of icon description objects.",
			"items": {
				"type": "object",
				"title": "Icon description object",
				"description": "An object that defines the configuration of an icon.",
				"additionalItems": false,
				"properties": {
					"updateInterval": {
						"type": "integer",
						"title": "Update interval",
						"description": "The time in milliseconds between updates."
					},
					"scrollAmount": {
						"type": "integer",
						"title": "Scroll speed",
						"description": "The horizontal amount by which the graph moves per update interval."
					},
					"units": {
						"type": "string",
						"title": "Value units",
						"description": "The units of measurement the value is represented in."
					},
					"gaugeLines": {
						"type": "array",
						"title": "GaugeLines array",
						"description": "An array of gauge line description objects.",
						"items": {
							"type": "object",
							"title": "Gauge line description object",
							"description": "An object that defines the configuration of a gauge line.",
							"additionalItems": false,
							"properties": {
								"value": {
									"type": "integer",
									"title": "Value",
									"description": "The value at which the gauge line is rendered."
								},
								"colour": {
									"type": "string",
									"title": "Colour",
									"description": "The colour of the gauge line."
								},
								"dotPitch": {
									"type": "integer",
									"title": "Dot pitch",
									"description": "The distance between the dots in the gauge line."
								}
							},
							"required": [
								"value",
								"colour"
							]
						}
					},
					"graphs": {
						"type": "array",
						"title": "Graph array",
						"description": "An array of graph description objects.",
						"items": {
							"type": "object",
							"title": "Graph description object",
							"description": "An object that defines the configuration of a graph.",
							"additionalItems": false,
							"properties": {
								"input": {
									"type": "object",
									"title": "Input description object",
									"description": "An object that defines the configuration of an input data source for a graph.",
									"additionalItems": false,
									"properties": {
										"type": {
											"type": "string",
											"title": "Source type",
											"description": "The type of the input data source."
										},
										"name": {
											"type": "string",
											"title": "Source name",
											"description": "The name of the input data source."
										}
									},
									"required": [
										"type"
									]
								},
								"output": {
									"type": "object",
									"title": "Output description object",
									"description": "An object that defines the configuration for the visual output of a graph.",
									"additionalItems": false,
									"properties": {
										"renderMethod": {
											"type": "string",
											"title": "RenderMethod",
											"description": "The type of graph to render."
										},
										"toolTip": {
											"type": "string",
											"title": "ToolTip",
											"description": "A piece of descriptive/friendly text that is displayed in the icon tool-tip."
										},
										"rescale": {
											"type": "boolean",
											"title": "Rescale",
											"description": "Whether the display vertically rescales to accomodate this graph."
										},										
										"previewOnly": {
											"type": "boolean",
											"title": "Preview Only",
											"description": "Whether this graph is rendered in the preview only."
										},																				
										"colours": {
											"type": "array",
											"title": "Colours array.",
											"description": "An array of colour description objects.",
											"items": {
												"type": "object",
												"title": "Colour description object",
												"description": "An object that defines the configuration of an element in the colour look-up table.",
												"additionalItems": false,
												"properties": {
													"value": {
														"type": "integer",
														"title": "Value",
														"description": "The value at which the intensity of the specified colour peaks."
													},
													"colour": {
														"type": "string",
														"title": "Colour schema.",
														"description": "The colour in which to render lines with."
													}
												},
												"required": [
													"value",
													"colour"
												]
											}
										},
										"highlight": {
											"type": "object",
											"title": "Highlight description object",
											"description": "An object that defines the configuration of the highlighting logic applicable to this graph.",
											"additionalItems": false,
											"properties": {
												"units": {
													"type": "string",
													"title": "Units",
													"description": "The of unit of measurement by which to calculate highlighting contribution."
												},
												"value": {
													"type": "integer",
													"title": "Value",
													"description": "The value to use when calculating highlighting contribution."
												},
												"colour": {
													"type": "string",
													"title": "Colour",
													"description": "The highlight colour."
												}
											},
											"required": [
												"value"
											]
										}
									},
									"required": [
										"renderMethod",
										"colours"
									]
								}
							},
							"required": [
								"input",
								"output"
							]
						}
					}
				},
				"required": [
					"updateInterval",
					"scrollAmount",
					"graphs"
				]
			}
		}
	},
	"required": [
		"icons"
	]
}
