{
	"$schema": "http://json-schema.org/draft-04/schema#",
	"title": "Scan Pattern",
	"description": "Scan pattern description",
	"definitions": {
		"program": {
			"description": "Measurement program",
			"type": "object",
			"properties": {
				"name": {
					"description": "Name of measurement program",
					"type": "string"
				},
				"laser_prr": {
					"description": "Laser Pulse Repetition Rate [Hz]",
					"type": "number",
					"minimum": 0,
					"exclusiveMinimum": false
				}
			},
			"required": [
				"name"
			]
		}
	},
	"properties": {
		"rectangular": {
			"description": "Rectangular Field Of View Scan Pattern",
			"type": "object",
			"properties": {
				"phi_start": {
					"description": "Start phi angle in SOCS [deg]",
					"type": "number",
					"minimum": 0.0,
					"maximum": 360.0
				},
				"phi_stop": {
					"description": "Stop phi angle in SOCS [deg]",
					"type": "number",
					"minimum": 0.0,
					"maximum": 720.0
				},
				"phi_increment": {
					"description": "Increment of phi angle in SOCS [deg]",
					"type": "number",
					"minimum": 0.0,
					"maximum": 90.0
				},
				"theta_start": {
					"description": "Start theta angle in SOCS [deg]",
					"type": "number",
					"minimum": 0.0,
					"maximum": 180.0
				},
				"theta_stop": {
					"description": "Stop theta angle in SOCS [deg]",
					"type": "number",
					"minimum": 0.0,
					"maximum": 180.0
				},
				"theta_increment": {
					"description": "Increment of theta angle in SOCS [deg]",
					"type": "number",
					"minimum": 0.0,
					"maximum": 90.0
				},
				"program": {
					"$ref": "#/definitions/program"
				}
			},
			"required": [
				"phi_start",
				"phi_stop",
				"phi_increment",
				"theta_start",
				"theta_stop",
				"theta_increment"
			]
		},
		"line": {
			"description": "Line Scan Pattern",
			"type": "object",
			"properties": {
				"start": {
					"description": "Start angle in SOCS [deg]",
					"type": "number",
					"minimum": 0.0,
					"maximum": 360.0
				},
				"stop": {
					"description": "Stop angle in SOCS [deg]",
					"type": "number",
					"minimum": 0.0,
					"maximum": 720.0
				},
				"increment": {
					"description": "Increment of angle in SOCS [deg]",
					"type": "number",
					"minimum": 0.0,
					"maximum": 90.0
				},
				"program": {
					"$ref": "#/definitions/program"
				}
			},
			"required": [
				"start",
				"stop",
				"increment"
			]
		},
		"segments": {
			"description": "Segmented Line Scan Pattern",
			"type": "object",
			"properties": {
				"list": {
					"type": "array",
					"items": {
						"description": "Line Scan Segment",
						"type": "object",
						"properties": {
							"start": {
								"description": "Start angle in SOCS [deg]",
								"type": "number",
								"minimum": 0.0,
								"maximum": 360.0
							},
							"stop": {
								"description": "Stop angle in SOCS [deg]",
								"type": "number",
								"minimum": 0.0,
								"maximum": 720.0
							},
							"increment": {
								"description": "Increment of angle in SOCS [deg]",
								"type": "number",
								"minimum": 0.0,
								"maximum": 90.0
							}
						},
						"required": [
							"start",
							"stop",
							"increment"
						]
					}
				},
				"program": {
					"$ref": "#/definitions/program"
				}
			},
			"required": [
				"list"
			]
		}
	}
}