{
	"json_plugin_version": 2,
	"Device.{BBF_VENDOR_PREFIX}NetMode.": {
		"type": "object",
		"protocols": [
			"cwmp",
			"usp"
		],
		"description": "Datamodel vendor extension to support easy switching between wan types, a reboot is required in some cases after switching the mode",
		"access": false,
		"array": false,
		"dependency": "file:/etc/config/netmode",
		"Enable": {
			"type": "boolean",
			"read": true,
			"write": true,
			"description": "Enable/Disable WAN switching using netmode",
			"protocols": [
				"cwmp",
				"usp"
			],
			"mapping": [
				{
					"type": "uci",
					"uci": {
						"file": "netmode",
						"section": {
							"name": "global"
						},
						"option": {
							"name": "enabled"
						}
					}
				}
			]
		},
		"Mode": {
			"type": "string",
			"read": true,
			"write": true,
			"description": "Current configured netmode value",
			"protocols": [
				"cwmp",
				"usp"
			],
			"flags": [
				"Reference"
			],
			"mapping": [
				{
					"type": "uci",
					"uci": {
						"file": "netmode",
						"section": {
							"name": "global"
						},
						"option": {
							"name": "mode"
						}
					},
					"linker_obj": "Device.{BBF_VENDOR_PREFIX}NetMode.SupportedModes.*.Name"
				}
			]
		},
		"SupportedModesNumberOfEntries": {
			"type": "unsignedInt",
			"read": true,
			"write": false,
			"description": "SupportedModes Number of entries in the current config",
			"protocols": [
				"cwmp",
				"usp"
			],
			"mapping": [
			{
				"type": "uci",
				"uci": {
					"file": "netmode",
					"section": {
						"type": "supported_modes"
					},
					"option": {
						"name": "@Count"
					}
				}
			}
			]
		},
		"Device.{BBF_VENDOR_PREFIX}NetMode.SupportedModes.{i}.": {
			"type": "object",
			"protocols": [
				"cwmp",
				"usp"
			],
			"access": false,
			"array": true,
			"description": "Object to list supported wan modes",
			"mapping": [
				{
					"type": "uci",
					"uci": {
						"file": "netmode",
						"section": {
							"type": "supported_modes"
						},
						"dmmapfile": "dmmap_netmode"
					}
				}
			],
			"Name": {
				"type": "string",
				"read": true,
				"write": false,
				"description": "Name of the wan mode, it has to be unique and in sync with /etc/netmodes/",
				"protocols": [
					"cwmp",
					"usp"
				],
				"flags": [
					"Linker",
					"Unique"
				],
				"mapping": [
					{
						"type": "uci_sec",
						"data": "@Parent",
						"key": "name"
					}
				]
			},
			"Description": {
				"type": "string",
				"read": true,
				"write": false,
				"description": "Human readable description for this mode",
				"protocols": [
					"cwmp",
					"usp"
				],
				"mapping": [
					{
						"type": "uci_sec",
						"data": "@Parent",
						"key": "description"
					}
				]
			},
			"SupportedArgumentsNumberOfEntries": {
				"type": "unsignedInt",
				"read": true,
				"write": false,
				"description": "SupportedModes Number of entries in the current config",
				"protocols": [
					"cwmp",
					"usp"
				],
				"mapping": [
				{
					"type": "uci",
					"uci": {
						"file": "netmode",
						"section": {
							"type": "supported_args"
						},
						"option": {
							"name": "@Count"
						}
					}
				}
				]
			},
			"Device.{BBF_VENDOR_PREFIX}NetMode.SupportedModes.{i}.SupportedArguments.{i}.": {
				"type": "object",
				"protocols": [
					"cwmp",
					"usp"
				],
				"access": false,
				"array": true,
				"description": "Extra arguments for this Mode",
				"mapping": [
					{
						"type": "uci",
						"uci": {
							"file": "netmode",
							"section": {
								"type": "supported_args"
							},
							"dmmapfile": "dmmap_netmode"
						}
					}
				],
				"Name": {
					"type": "string",
					"read": true,
					"write": false,
					"description": "Name of the argument",
					"protocols": [
						"cwmp",
						"usp"
					],
					"mapping": [
						{
							"type": "uci_sec",
							"data": "@Parent",
							"key": "name"
						}
					]
				},
				"Type": {
					"type": "string",
					"read": true,
					"write": true,
					"description": "Datatype for this argument",
					"protocols": [
						"cwmp",
						"usp"
					],
					"mapping": [
						{
							"type": "uci_sec",
							"data": "@Parent",
							"key": "type"
						}
					]
				},
				"Description": {
					"type": "string",
					"read": true,
					"write": false,
					"description": "Human readable description for this Argument",
					"protocols": [
						"cwmp",
						"usp"
					],
					"mapping": [
						{
							"type": "uci_sec",
							"data": "@Parent",
							"key": "description"
						}
					]
				},
				"Required": {
					"type": "boolean",
					"read": true,
					"write": false,
					"description": "If Required is true, then Name and Value is mandatory for mode to apply",
					"protocols": [
						"cwmp",
						"usp"
					],
					"mapping": [
						{
							"type": "uci_sec",
							"data": "@Parent",
							"key": "required"
						}
					]
				},
				"Value": {
					"type": "string",
					"read": true,
					"write": true,
					"description": "Value for this SupportedArguments Name, get on this parameter result into empty output",
					"protocols": [
						"cwmp",
						"usp"
					],
					"flags": [
						"Secure"
					],
					"mapping": [
						{
							"type": "uci_sec",
							"data": "@Parent",
							"key": "value"
						}
					]
				}
			}
		}
	}
}
