{
	"pluginAlias": "XboxTv",
	"pluginType": "platform",
	"singular": true,
	"fixArrays": true,
	"strictValidation": true,
	"customUi": true,
	"headerDisplay": "This plugin works with Xbox Game Consoles. Devices are exposed to HomeKit as separate accessories and each needs to be manually paired.",
	"footerDisplay": "For documentation please see [GitHub repository](https://github.com/grzegorz914/homebridge-xbox-tv).",
	"schema": {
		"type": "object",
		"properties": {
			"name": {
				"title": "Platform",
				"type": "string",
				"default": "Xbox TV"
			},
			"devices": {
				"type": "array",
				"items": {
					"title": "Device",
					"type": "object",
					"properties": {
						"name": {
							"title": "Name",
							"type": "string",
							"placeholder": "Game console"
						},
						"host": {
							"title": "IP/Hostname",
							"type": "string",
							"placeholder": "192.168.1.10 or xbox.local",
							"pattern": "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)(\\.([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?))*)$"
						},
						"xboxLiveId": {
							"title": "Live ID",
							"type": "string",
							"placeholder": "FD00000000000000",
							"description": "Xbox Live ID"
						},
						"displayType": {
							"title": "Accessory type",
							"type": "integer",
							"minimum": 0,
							"maximum": 4,
							"default": 2,
							"anyOf": [
								{
									"title": "None / Disabled",
									"enum": [
										0
									]
								},
								{
									"title": "Television",
									"enum": [
										1
									]
								},
								{
									"title": "TV Set Top Box",
									"enum": [
										2
									]
								},
								{
									"title": "TV Streaming Stick",
									"enum": [
										3
									]
								},
								{
									"title": "Audio Receiver",
									"enum": [
										4
									]
								}
							],
							"description": "Accessory type for Home app"
						},
						"webApi": {
							"title": "Web Api",
							"type": "object",
							"properties": {
								"enable": {
									"title": "Enable",
									"type": "boolean",
									"default": false,
									"description": "This enable console control over Web Api."
								},
								"token": {
									"title": "Token",
									"type": "string",
									"placeholder": "Web Api Token",
									"description": "Here put the reponse Token (value after ?code=) from the authorization URL.",
									"format": "password",
									"condition": {
										"functionBody": "return model.devices[arrayIndices].webApi.enable === true;"
									}
								},
								"clientId": {
									"title": "Client Id",
									"type": "string",
									"placeholder": "a34ac209-edab-4b08-91e7-a4558d8da1bd",
									"description": "Here set your own Client Id from Azure AD or leave empty if you do not have own account.",
									"condition": {
										"functionBody": "return model.devices[arrayIndices].webApi.enable === true;"
									}
								},
								"clientSecret": {
									"title": "Client Secret",
									"type": "string",
									"placeholder": "Client Secret",
									"description": "Here set your Client Secret from Azure AD or leave empty if you do not have own account.",
									"format": "password",
									"condition": {
										"functionBody": "return model.devices[arrayIndices].webApi.enable === true;"
									}
								}
							},
							"allOf": [
								{
									"if": {
										"required": [
											"enable"
										],
										"properties": {
											"enable": {
												"const": true
											}
										}
									},
									"then": {
										"required": [
											"token"
										]
									}
								}
							]
						},
						"inputs": {
							"title": "Inputs",
							"type": "object",
							"properties": {
								"getFromDevice": {
									"title": "Load Inputs From Device",
									"type": "boolean",
									"description": "This function get all available inputs direct from device, manually configured inputs will be skipped.",
									"condition": {
										"functionBody": "return model.devices[arrayIndices].webApi.enable === true;"
									}
								},
								"filterGames": {
									"title": "Hide Games",
									"type": "boolean",
									"default": false,
									"description": "If enabled, Games will not be displayed on the list of inputs."
								},
								"filterApps": {
									"title": "Hide Apps",
									"type": "boolean",
									"default": false,
									"description": "If enabled, Apps will not be displayed on the list of inputs."
								},
								"filterSystemApps": {
									"title": "Hide System Apps",
									"type": "boolean",
									"default": false,
									"description": "If enabled, System Apps (Accessory, TV, Network Troubleshooter, Xbox Guide) will not be displayed on the list of inputs."
								},
								"filterDlc": {
									"title": "Hide DLC",
									"type": "boolean",
									"default": false,
									"description": "If enabled, DLC will not be displayed on the list of inputs."
								},
								"displayOrder": {
									"title": "Display Order",
									"type": "integer",
									"minimum": 0,
									"maximum": 4,
									"description": "Here select display order of the inputs list.",
									"anyOf": [
										{
											"title": "Disabled",
											"enum": [
												0
											]
										},
										{
											"title": "Ascending by Name",
											"enum": [
												1
											]
										},
										{
											"title": "Descending by Name",
											"enum": [
												2
											]
										},
										{
											"title": "Ascending by Reference",
											"enum": [
												3
											]
										},
										{
											"title": "Descending by Reference",
											"enum": [
												4
											]
										}
									]
								},
								"data": {
									"title": "Inputs",
									"type": "array",
									"items": {
										"title": "Input",
										"type": "object",
										"properties": {
											"name": {
												"title": "Name",
												"type": "string",
												"placeholder": "Input name",
												"description": "Here set Your own name."
											},
											"titleId": {
												"title": "Title Id",
												"type": "string",
												"placeholder": "Input Title Id",
												"description": "Here set title Id. If web api is enable all available in */var/lib/homebridge/xboxTv/inputs_xxxxxx* file."
											},
											"reference": {
												"title": "Reference",
												"type": "string",
												"placeholder": "Input reference",
												"description": "Here set reference. If web api is enable all available in */var/lib/homebridge/xboxTv/inputs_xxxxxx* file."
											},
											"oneStoreProductId": {
												"title": "Product Id",
												"type": "string",
												"placeholder": "oneStoreProductId",
												"description": "Here set the *oneStoreProductId*. If web api enable, switch app/games will be possible, all available in */var/lib/homebridge/xboxTv/inputs_xxxxxx* file.",
												"condition": {
													"functionBody": "return model.devices[arrayIndices].webApi.enable === true;"
												}
											},
											"contentType": {
												"title": "Content Type",
												"type": "string",
												"description": "Here select source input type.",
												"anyOf": [
													{
														"title": "Game",
														"enum": [
															"Game"
														]
													},
													{
														"title": "Application",
														"enum": [
															"App"
														]
													},
													{
														"title": "System Appliction",
														"enum": [
															"System App"
														]
													},
													{
														"title": "Dlc",
														"enum": [
															"Dlc"
														]
													}
												]
											}
										}
									},
									"condition": {
										"functionBody": "return model.devices[arrayIndices].inputs.getFromDevice === false || model.devices[arrayIndices].webApi.enable === false;"
									}
								}
							}
						},
						"buttons": {
							"title": "Button",
							"type": "array",
							"items": {
								"type": "object",
								"properties": {
									"displayType": {
										"title": "Display Type",
										"type": "integer",
										"minimum": 0,
										"maximum": 2,
										"description": "Here select display type in HomeKit app.",
										"anyOf": [
											{
												"title": "Disabled",
												"enum": [
													0
												]
											},
											{
												"title": "Outlet",
												"enum": [
													1
												]
											},
											{
												"title": "Switch",
												"enum": [
													2
												]
											}
										]
									},
									"name": {
										"title": "Name",
										"type": "string",
										"placeholder": "Button name",
										"description": "Here set Your own name."
									},
									"mode": {
										"title": "Mode",
										"type": "integer",
										"minimum": 0,
										"maximum": 4,
										"description": "Here select the function mode.",
										"anyOf": [
											{
												"title": "Media Control",
												"enum": [
													0
												]
											},
											{
												"title": "Game Pad Control",
												"enum": [
													1
												]
											},
											{
												"title": "TV Remote Control",
												"enum": [
													2
												]
											},
											{
												"title": "Console Control",
												"enum": [
													3
												]
											},
											{
												"title": "Game/App Control",
												"enum": [
													4
												]
											}
										],
										"condition": {
											"functionBody": "return model.devices[arrayIndices[0]].buttons[arrayIndices[1]].displayType > 0;"
										}
									},
									"mediaCommand": {
										"title": "Media Command",
										"type": "string",
										"description": "Here select the media command.",
										"anyOf": [
											{
												"title": "Play",
												"enum": [
													"play"
												]
											},
											{
												"title": "Pause",
												"enum": [
													"pause"
												]
											},
											{
												"title": "Play/Pause",
												"enum": [
													"playPause"
												]
											},
											{
												"title": "Stop",
												"enum": [
													"stop"
												]
											},
											{
												"title": "Record",
												"enum": [
													"record"
												]
											},
											{
												"title": "Next Track",
												"enum": [
													"nextTrack"
												]
											},
											{
												"title": "Previous Track",
												"enum": [
													"prevTrack"
												]
											},
											{
												"title": "Fast Forward",
												"enum": [
													"fastForward"
												]
											},
											{
												"title": "Rewind",
												"enum": [
													"rewind"
												]
											},
											{
												"title": "Channel Up",
												"enum": [
													"channelUp"
												]
											},
											{
												"title": "Channel Down",
												"enum": [
													"channelDown"
												]
											},
											{
												"title": "Back",
												"enum": [
													"back"
												]
											},
											{
												"title": "View",
												"enum": [
													"view"
												]
											},
											{
												"title": "Menu",
												"enum": [
													"menu"
												]
											},
											{
												"title": "Seek",
												"enum": [
													"seek"
												]
											}
										],
										"condition": {
											"functionBody": "return model.devices[arrayIndices[0]].buttons[arrayIndices[1]].displayType > 0 && model.devices[arrayIndices[0]].buttons[arrayIndices[1]].mode === 0;"
										}
									},
									"gamePadCommand": {
										"title": "Game Pad Command",
										"type": "string",
										"description": "Here select the controler command.",
										"anyOf": [
											{
												"title": "Nexus",
												"enum": [
													"nexus"
												]
											},
											{
												"title": "View",
												"enum": [
													"view"
												]
											},
											{
												"title": "Menu",
												"enum": [
													"menu"
												]
											},
											{
												"title": "A",
												"enum": [
													"a"
												]
											},
											{
												"title": "B",
												"enum": [
													"b"
												]
											},
											{
												"title": "X",
												"enum": [
													"x"
												]
											},
											{
												"title": "Y",
												"enum": [
													"y"
												]
											},
											{
												"title": "Up",
												"enum": [
													"up"
												]
											},
											{
												"title": "Down",
												"enum": [
													"down"
												]
											},
											{
												"title": "Left",
												"enum": [
													"left"
												]
											},
											{
												"title": "Right",
												"enum": [
													"right"
												]
											}
										],
										"condition": {
											"functionBody": "return model.devices[arrayIndices[0]].buttons[arrayIndices[1]].displayType > 0 && model.devices[arrayIndices[0]].buttons[arrayIndices[1]].mode === 1;"
										}
									},
									"tvRemoteCommand": {
										"title": "TV Remote Command",
										"type": "string",
										"description": "Here select the tv remote command.",
										"anyOf": [
											{
												"title": "Volume Up",
												"enum": [
													"volUp"
												]
											},
											{
												"title": "Volume Down",
												"enum": [
													"volDown"
												]
											},
											{
												"title": "Mute",
												"enum": [
													"volMute"
												]
											}
										],
										"condition": {
											"functionBody": "return model.devices[arrayIndices[0]].buttons[arrayIndices[1]].displayType > 0 && model.devices[arrayIndices[0]].buttons[arrayIndices[1]].mode === 2;"
										}
									},
									"consoleControlCommand": {
										"title": "Console Control Command",
										"type": "string",
										"description": "Here select the console control command.",
										"anyOf": [
											{
												"title": "Reboot",
												"enum": [
													"reboot"
												]
											},
											{
												"title": "Record Game DVR",
												"enum": [
													"recordGameDvr"
												]
											}
										],
										"condition": {
											"functionBody": "return model.devices[arrayIndices[0]].buttons[arrayIndices[1]].displayType > 0 && model.devices[arrayIndices[0]].buttons[arrayIndices[1]].mode === 3;"
										}
									},
									"gameAppControlCommand": {
										"title": "Product Id",
										"type": "string",
										"placeholder": "oneStoreProductId",
										"description": "Here set the *oneStoreProductId*. If web api enabled, switch app/games will be possible, all available in */var/lib/homebridge/xboxTv/inputs_xxxxxx* file.",
										"condition": {
											"functionBody": "return model.devices[arrayIndices[0]].buttons[arrayIndices[1]].displayType > 0 && model.devices[arrayIndices[0]].buttons[arrayIndices[1]].mode === 4;"
										}
									},
									"namePrefix": {
										"title": "Prefix",
										"type": "boolean",
										"description": "Here enable/disable the accessory name as a prefix for button name.",
										"condition": {
											"functionBody": "return model.devices[arrayIndices[0]].buttons[arrayIndices[1]].displayType > 0;"
										}
									}
								},
								"allOf": [
									{
										"if": {
											"required": [
												"displayType"
											],
											"properties": {
												"displayType": {
													"enum": [
														1,
														2
													]
												}
											}
										},
										"then": {
											"required": [
												"mode"
											]
										}
									},
									{
										"if": {
											"required": [
												"displayType",
												"mode"
											],
											"properties": {
												"displayType": {
													"enum": [
														1,
														2
													]
												},
												"mode": {
													"enum": [
														0
													]
												}
											}
										},
										"then": {
											"required": [
												"mediaCommand"
											]
										}
									},
									{
										"if": {
											"required": [
												"displayType",
												"mode"
											],
											"properties": {
												"displayType": {
													"enum": [
														1,
														2
													]
												},
												"mode": {
													"enum": [
														1
													]
												}
											}
										},
										"then": {
											"required": [
												"gamePadCommand"
											]
										}
									},
									{
										"if": {
											"required": [
												"displayType",
												"mode"
											],
											"properties": {
												"displayType": {
													"enum": [
														1,
														2
													]
												},
												"mode": {
													"enum": [
														2
													]
												}
											}
										},
										"then": {
											"required": [
												"tvRemoteCommand"
											]
										}
									},
									{
										"if": {
											"required": [
												"displayType",
												"mode"
											],
											"properties": {
												"displayType": {
													"enum": [
														1,
														2
													]
												},
												"mode": {
													"enum": [
														3
													]
												}
											}
										},
										"then": {
											"required": [
												"consoleControlCommand"
											]
										}
									},
									{
										"if": {
											"required": [
												"displayType",
												"mode"
											],
											"properties": {
												"displayType": {
													"enum": [
														1,
														2
													]
												},
												"mode": {
													"enum": [
														4
													]
												}
											}
										},
										"then": {
											"required": [
												"gameAppControlCommand"
											]
										}
									}
								]
							}
						},
						"sensors": {
							"type": "array",
							"items": {
								"title": "Sensors",
								"type": "object",
								"properties": {
									"displayType": {
										"title": "Display Type",
										"type": "integer",
										"minimum": 0,
										"maximum": 3,
										"default": 0,
										"anyOf": [
											{
												"title": "Disabled",
												"enum": [
													0
												]
											},
											{
												"title": "Motion Sensor",
												"enum": [
													1
												]
											},
											{
												"title": "Occupancy Sensor",
												"enum": [
													2
												]
											},
											{
												"title": "Contact Sensor",
												"enum": [
													3
												]
											}
										],
										"description": "Here select sensor type to be exposed in HomeKit app."
									},
									"mode": {
										"title": "Mode",
										"type": "integer",
										"minimum": 0,
										"maximum": 5,
										"anyOf": [
											{
												"title": "App / Games",
												"enum": [
													0
												]
											},
											{
												"title": "Power",
												"enum": [
													1
												]
											},
											{
												"title": "Volume",
												"enum": [
													2
												]
											},
											{
												"title": "Mute",
												"enum": [
													3
												]
											},
											{
												"title": "Screen Saver",
												"enum": [
													4
												]
											},
											{
												"title": "Play State",
												"enum": [
													5
												]
											}
										],
										"description": "Here select the sensor mode.",
										"condition": {
											"functionBody": "return model.devices[arrayIndices[0]].sensors[arrayIndices[1]].displayType > 0;"
										}
									},
									"name": {
										"title": "Name",
										"type": "string",
										"placeholder": "Name",
										"description": "Here set Your own name."
									},
									"namePrefix": {
										"title": "Prefix",
										"type": "boolean",
										"description": "Here enable the accessory name as a prefix for sensor name.",
										"condition": {
											"functionBody": "return model.devices[arrayIndices[0]].sensors[arrayIndices[1]].displayType > 0;"
										}
									},
									"pulse": {
										"title": "Pulse",
										"type": "boolean",
										"description": "Here enable sensor pulse, sensor send pulse and fired on every value change of selected mode.",
										"condition": {
											"functionBody": "return model.devices[arrayIndices[0]].sensors[arrayIndices[1]].displayType > 0;"
										}
									},
									"reference": {
										"title": "Reference",
										"type": "string",
										"placeholder": "Reference",
										"description": "Here set the channel reference, sensor fired if switch to this reference.",
										"condition": {
											"functionBody": "return model.devices[arrayIndices[0]].sensors[arrayIndices[1]].displayType > 0 && model.devices[arrayIndices[0]].sensors[arrayIndices[1]].pulse === false && model.devices[arrayIndices[0]].sensors[arrayIndices[1]].mode === 0;"
										}
									},
									"level": {
										"title": "Level",
										"type": "number",
										"minimum": 0,
										"maximum": 100,
										"multipleOf": 1,
										"description": "Here set the level between 0-100% at which the sensor fired.",
										"condition": {
											"functionBody": "return model.devices[arrayIndices[0]].sensors[arrayIndices[1]].displayType > 0 && model.devices[arrayIndices[0]].sensors[arrayIndices[1]].pulse === false && model.devices[arrayIndices[0]].sensors[arrayIndices[1]].mode === 2;"
										}
									}
								},
								"allOf": [
									{
										"if": {
											"required": [
												"displayType"
											],
											"properties": {
												"displayType": {
													"enum": [
														1,
														2,
														3
													]
												}
											}
										},
										"then": {
											"required": [
												"mode"
											]
										}
									},
									{
										"if": {
											"required": [
												"displayType",
												"mode",
												"pulse"
											],
											"properties": {
												"displayType": {
													"enum": [
														1,
														2,
														3
													]
												},
												"pulse": {
													"const": false
												},
												"mode": {
													"enum": [
														0
													]
												}
											}
										},
										"then": {
											"required": [
												"reference"
											]
										}
									},
									{
										"if": {
											"required": [
												"displayType",
												"mode",
												"pulse"
											],
											"properties": {
												"displayType": {
													"enum": [
														1,
														2,
														3
													]
												},
												"pulse": {
													"const": false
												},
												"mode": {
													"enum": [
														2
													]
												}
											}
										},
										"then": {
											"required": [
												"level"
											]
										}
									}
								]
							}
						},
						"volume": {
							"title": "Volume",
							"type": "object",
							"properties": {
								"displayType": {
									"title": "Display Type",
									"type": "integer",
									"description": "Here select what a extra volume/mute control type You want to use.",
									"anyOf": [
										{
											"title": "Disabled",
											"enum": [
												0
											]
										},
										{
											"title": "Lightbulb",
											"enum": [
												1
											]
										},
										{
											"title": "Fan",
											"enum": [
												2
											]
										},
										{
											"title": "TV Speaker (HW buttons)",
											"enum": [
												3
											]
										},
										{
											"title": "TV Speaker / Lightbulb",
											"enum": [
												4
											]
										},
										{
											"title": "TV Speaker / Fan",
											"enum": [
												5
											]
										}
									]
								},
								"name": {
									"title": "Name",
									"type": "string",
									"placeholder": "Volume Control Name",
									"description": "Here set Your own volume control name or leave empty.",
									"condition": {
										"functionBody": "return model.devices[arrayIndices[0]].volume.displayType > 0;"
									}
								},
								"namePrefix": {
									"title": "Prefix",
									"type": "boolean",
									"description": "Here enable/disable the accessory name as a prefix for volume control name.",
									"condition": {
										"functionBody": "return model.devices[arrayIndices[0]].volume.displayType > 0;"
									}
								}
							}
						},
						"infoButtonCommand": {
							"title": "Info Button",
							"type": "string",
							"default": "nexus",
							"description": "Here select the function of info button in RC.",
							"anyOf": [
								{
									"title": "Game Pad View",
									"enum": [
										"view"
									]
								},
								{
									"title": "Game Pad Nexus",
									"enum": [
										"nexus"
									]
								},
								{
									"title": "Game Pad Menu",
									"enum": [
										"menu"
									]
								},
								{
									"title": "Game Pad A",
									"enum": [
										"a"
									]
								},
								{
									"title": "Game Pad B",
									"enum": [
										"b"
									]
								},
								{
									"title": "Game Pad X",
									"enum": [
										"x"
									]
								},
								{
									"title": "Game Pad Y",
									"enum": [
										"y"
									]
								}
							]
						},
						"log": {
							"title": "Log",
							"type": "object",
							"properties": {
								"deviceInfo": {
									"title": "Device Info",
									"type": "boolean",
									"default": true,
									"description": "This enable log level device info, will display overall device info by every plugin restart"
								},
								"success": {
									"title": "Success",
									"type": "boolean",
									"default": true,
									"description": "This enable log level success"
								},
								"info": {
									"title": "Info",
									"type": "boolean",
									"default": false,
									"description": "This enable log level info"
								},
								"warn": {
									"title": "Warn",
									"type": "boolean",
									"default": true,
									"description": "This enable log level warn"
								},
								"error": {
									"title": "Error",
									"type": "boolean",
									"default": true,
									"description": "This enable log level error"
								},
								"debug": {
									"title": "Debug",
									"type": "boolean",
									"default": false,
									"description": "This enable log level debug"
								}
							}
						},
						"restFul": {
							"title": "RESTFul",
							"type": "object",
							"properties": {
								"enable": {
									"title": "Enable",
									"type": "boolean",
									"default": false,
									"description": "This enable RESTful server."
								},
								"port": {
									"title": "Port",
									"type": "integer",
									"placeholder": 3000,
									"description": "Here set the listening Port for RESTful server.",
									"condition": {
										"functionBody": "return model.devices[arrayIndices].restFul.enable === true;"
									}
								}
							}
						},
						"mqtt": {
							"title": "MQTT",
							"type": "object",
							"properties": {
								"enable": {
									"title": "Enable",
									"type": "boolean",
									"default": false,
									"description": "This enable MQTT client."
								},
								"host": {
									"title": "IP/Hostname",
									"type": "string",
									"placeholder": "192.168.1.20 or mqtt.local",
									"pattern": "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)(\\.([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?))*)$",
									"description": "Here set the IP/Hostname of MQTT Broker.",
									"condition": {
										"functionBody": "return model.devices[arrayIndices].mqtt.enable === true;"
									}
								},
								"port": {
									"title": "Port",
									"type": "integer",
									"placeholder": 1883,
									"description": "Here set the port of MQTT Broker.",
									"condition": {
										"functionBody": "return model.devices[arrayIndices].mqtt.enable === true;"
									}
								},
								"clientId": {
									"title": "Client ID",
									"type": "string",
									"placeholder": "client id",
									"description": "Here optional set the Client ID of MQTT Broker.",
									"condition": {
										"functionBody": "return model.devices[arrayIndices].mqtt.enable === true"
									}
								},
								"prefix": {
									"title": "Prefix",
									"type": "string",
									"placeholder": "home",
									"description": "Here set the prefix.",
									"condition": {
										"functionBody": "return model.devices[arrayIndices].mqtt.enable === true;"
									}
								},
								"auth": {
									"title": "Authorization",
									"type": "object",
									"properties": {
										"enable": {
											"title": "Enable",
											"type": "boolean",
											"description": "This enable authorization for MQTT Broker."
										},
										"user": {
											"title": "User",
											"type": "string",
											"placeholder": "user",
											"description": "Here set the user of MQTT Broker.",
											"condition": {
												"functionBody": "return model.devices[arrayIndices].mqtt.auth.enable === true;"
											}
										},
										"passwd": {
											"title": "Password",
											"type": "string",
											"placeholder": "password",
											"description": "Here set the password of MQTT Broker.",
											"format": "password",
											"condition": {
												"functionBody": "return model.devices[arrayIndices].mqtt.auth.enable === true;"
											}
										}
									},
									"condition": {
										"functionBody": "return model.devices[arrayIndices].mqtt.enable === true;"
									},
									"allOf": [
										{
											"if": {
												"required": [
													"enable"
												],
												"properties": {
													"enable": {
														"const": true
													}
												}
											},
											"then": {
												"required": [
													"user",
													"passwd"
												]
											}
										}
									]
								}
							},
							"allOf": [
								{
									"if": {
										"required": [
											"enable"
										],
										"properties": {
											"enable": {
												"const": true
											}
										}
									},
									"then": {
										"required": [
											"host"
										]
									}
								}
							]
						}
					},
					"required": [
						"name",
						"host",
						"xboxLiveId",
						"displayType"
					]
				}
			}
		}
	},
	"layout": [
		{
			"key": "devices",
			"type": "tabarray",
			"title": "{{ value.name || 'Device' }}",
			"items": [
				"devices[].name",
				"devices[].host",
				"devices[].xboxLiveId",
				"devices[].displayType",
				{
					"key": "devices[].inputs",
					"type": "section",
					"title": "Inputs",
					"expandable": true,
					"expanded": false,
					"items": [
						"devices[].inputs.getFromDevice",
						"devices[].inputs.filterGames",
						"devices[].inputs.filterApps",
						"devices[].inputs.filterSystemApps",
						"devices[].inputs.filterDlc",
						"devices[].inputs.displayOrder",
						{
							"key": "devices[].inputs.data",
							"type": "tabarray",
							"title": "{{ value.name || 'Input' }}",
							"items": [
								"devices[].inputs.data[].name",
								"devices[].inputs.data[].titleId",
								"devices[].inputs.data[].reference",
								"devices[].inputs.data[].oneStoreProductId",
								"devices[].inputs.data[].contentType"
							]
						}
					]
				},
				{
					"key": "devices[]",
					"type": "section",
					"title": "Buttons",
					"expandable": true,
					"expanded": false,
					"items": [
						{
							"key": "devices[].buttons",
							"type": "tabarray",
							"title": "{{ value.name || 'Button' }}",
							"items": [
								"devices[].buttons[].displayType",
								"devices[].buttons[].name",
								"devices[].buttons[].mode",
								"devices[].buttons[].mediaCommand",
								"devices[].buttons[].gamePadCommand",
								"devices[].buttons[].tvRemoteCommand",
								"devices[].buttons[].consoleControlCommand",
								"devices[].buttons[].gameAppControlCommand",
								"devices[].buttons[].namePrefix"
							]
						}
					]
				},
				{
					"key": "devices[]",
					"type": "section",
					"title": "Advanced Settings",
					"expandable": true,
					"expanded": false,
					"items": [
						{
							"key": "devices[]",
							"type": "tabarray",
							"title": "{{ value.title }}",
							"items": [
								{
									"key": "devices[].volume",
									"title": "Volume",
									"items": [
										"devices[].volume.displayType",
										"devices[].volume.name",
										"devices[].volume.namePrefix"
									]
								},
								{
									"key": "devices[]",
									"title": "Sensors",
									"items": [
										{
											"key": "devices[].sensors",
											"type": "tabarray",
											"title": "{{ value.name || 'Sensor' }}",
											"items": [
												"devices[].sensors[].displayType",
												"devices[].sensors[].mode",
												"devices[].sensors[].name",
												"devices[].sensors[].namePrefix",
												"devices[].sensors[].pulse",
												"devices[].sensors[].reference",
												"devices[].sensors[].level"
											]
										}
									]
								},
								{
									"key": "devices[]",
									"title": "Device",
									"items": [
										"devices[].infoButtonCommand"
									]
								},
								{
									"key": "devices[].webApi",
									"title": "Web Api",
									"items": [
										"devices[].webApi.enable",
										{
											"key": "devices[].webApi.token",
											"type": "password"
										},
										{
											"key": "devices[].webApi.clientId",
											"type": "password"
										},
										{
											"key": "devices[].webApi.clientSecret",
											"type": "password"
										}
									]
								},
								{
									"key": "devices[].log",
									"title": "Log",
									"items": [
										"devices[].log.deviceInfo",
										"devices[].log.success",
										"devices[].log.info",
										"devices[].log.warn",
										"devices[].log.error",
										"devices[].log.debug"
									]
								},
								{
									"key": "devices[]",
									"title": "External Integrations",
									"items": [
										{
											"key": "devices[]",
											"type": "tabarray",
											"title": "{{ value.title }}",
											"items": [
												{
													"key": "devices[].restFul",
													"title": "RESTFul",
													"items": [
														"devices[].restFul.enable",
														"devices[].restFul.port"
													]
												},
												{
													"key": "devices[].mqtt",
													"title": "MQTT",
													"items": [
														"devices[].mqtt.enable",
														"devices[].mqtt.host",
														"devices[].mqtt.port",
														"devices[].mqtt.clientId",
														"devices[].mqtt.prefix",
														{
															"key": "devices[].mqtt.auth",
															"title": "Authorization",
															"items": [
																"devices[].mqtt.auth.enable",
																"devices[].mqtt.auth.user",
																{
																	"key": "devices[].mqtt.auth.passwd",
																	"type": "password"
																}
															]
														}
													]
												}
											]
										}
									]
								}
							]
						}
					]
				}
			]
		}
	]
}