diff --git a/ubus/wifi.json b/ubus/wifi.json
index 26b5588d66f0afaf7fe996c518f7b05fb840ebec..478196b2c61b158e393e1ceaa0b572b03d51c724 100644
--- a/ubus/wifi.json
+++ b/ubus/wifi.json
@@ -1,175 +1,202 @@
 {
-	"definitions": {
-		"macaddr_t": {
-			"title": "MAC Address",
-			"type": "string",
-			"minLength": 17,
-			"maxLength": 17,
-			"pattern":"^([0-9a-fA-F][0-9a-fA-F]:){5}[0-9a-fA-F][0-9a-fA-F]$"
-		},
-		"noisepower_t": {
-			"title": "Noise",
-			"type": "integer",
-			"minimum": -127,
-			"maximum": 0
-		},
-		"channel_2_t": {
-			"title": "2.4GHz Channel",
-			"type": "integer",
-			"minimum": 1,
-			"maximum": 14
-		},
-		"channel_5_t": {
-			"title": "5GHz Channel",
-			"type": "integer",
-			"minimum": 32,
-			"maximum": 200
-		},
-		"channels_2_t": {
-			"title": "2.4GHz Channels",
-			"type": "array",
-			"items": { "$ref": "#/definitions/channel_2_t"}
-		},
-		"channels_5_t": {
-			"title": "5GHz Channels",
-			"type": "array",
-			"items": { "$ref": "#/definitions/channel_5_t"}
-		},
-		"iface_t": {
-			"title": "Interface",
-			"type": "string",
-			"minLength": 1,
-			"maxLength": 16
-		},
-		"band_t": {
-			"title": "WiFi Band",
-			"type": "string",
-			"enum": ["2.4GHz", "5GHz"]
-		},
-		"bandwidth_t": {
-			"title": "Bandwidth",
-			"type": "integer",
-			"enum": [
-				20,
-				40,
-				80,
-				160
-			]
-		},
-		"aps_t": {
-			"type": "array",
-			"items": {
-				"type": "object",
-				"required": [
-					"ifname",
-					"status",
-					"ssid",
-					"bssid"
-				],
-				"properties": {
-					"ifname": {
-						"type": "string",
-						"minLength": 1,
-						"maxLength": 16
-					},
-					"status": { "type": "string" },
-					"ssid": {
-						"type": "string",
-						"minLength": 0,
-						"maxLength": 32
-					},
-					"bssid": { "$ref": "#/definitions/macaddr_t" }
-				}
-			}
-		}
-	},
-	"$schema": "http://json-schema.org/draft-07/schema#",
-	"$id": "https://www.iopsys.eu/wifi",
-	"type": "object",
-	"properties": {
-		"output": {
-			"type":"object",
-			"properties": {
-				"status": {
-					"type": "object",
-					"required": [
-						"radios"
-					],
-					"properties": {
-						"radios": {
-							"type": "array",
-							"items": {
-								"type": "object",
-								"required": [
-									"name",
-									"isup",
-									"standard",
-									"country",
-									"band",
-									"channel",
-									"bandwidth",
-									"noise",
-									"rate",
-									"channels",
-									"accesspoints",
-									"backhauls"
-								],
-								"if": {
-									"properties": {
-										"band": {
-											"const": "2.4GHz"
-										}
-									}
-								},
-								"then": {
-									"properties": {
-										"channel": { "$ref" : "#/definitions/channel_2_t" },
-										"channels": { "$ref" : "#/definitions/channels_2_t" }
-									}
-								},
-								"else": {
-									"properties": {
-										"channel": { "$ref" : "#/definitions/channel_5_t" },
-										"channels": { "$ref" : "#/definitions/channels_5_t" }
-									}
-								},
-								"properties": {
-									"name": { "$ref" : "#/definitions/iface_t" },
-									"isup": {
-										"type": "boolean"
-									},
-									"standard": {
-										"type": "string"
-									},
-									"country": {
-										"type": "string",
-										"minLength": 2,
-										"maxLength": 3
-									},
-									"band": { "$ref" : "#/definitions/band_t" },
-									"bandwidth": { "$ref": "#/definitions/bandwidth_t"},
-									"noise": { "$ref": "#/definitions/noisepower_t" },
-									"rate": {
-										"type": "integer",
-										"minimum": 0
-									},
-									"accesspoints": { "$ref": "#/definitions/aps_t"},
-									"backhauls": { "$ref": "#/definitions/aps_t"}
-								}
-							}
-						}
-					}
-				}
-			}
-		},
-		"input": {
-			"type":"object",
-			"properties": {
-				"status": {
-					"type": "object",
-					"properties": { }
-				}
-			}
-		}
-	}
-}
+    "definitions": {
+        "macaddr_t": {
+            "title": "MAC Address",
+            "type": "string",
+            "minLength": 17,
+            "maxLength": 17,
+            "pattern": "^([0-9a-fA-F][0-9a-fA-F]:){5}[0-9a-fA-F][0-9a-fA-F]$"
+        },
+        "noisepower_t": {
+            "title": "Noise",
+            "type": "integer",
+            "minimum": -127,
+            "maximum": 0
+        },
+        "channel_2_t": {
+            "title": "2.4GHz Channel",
+            "type": "integer",
+            "minimum": 1,
+            "maximum": 14
+        },
+        "channel_5_t": {
+            "title": "5GHz Channel",
+            "type": "integer",
+            "minimum": 32,
+            "maximum": 200
+        },
+        "channels_2_t": {
+            "title": "2.4GHz Channels",
+            "type": "array",
+            "items": {
+                "$ref": "#/definitions/channel_2_t"
+            }
+        },
+        "channels_5_t": {
+            "title": "5GHz Channels",
+            "type": "array",
+            "items": {
+                "$ref": "#/definitions/channel_5_t"
+            }
+        },
+        "iface_t": {
+            "title": "Interface",
+            "type": "string",
+            "minLength": 1,
+            "maxLength": 16
+        },
+        "band_t": {
+            "title": "WiFi Band",
+            "type": "string",
+            "enum": [
+                "2.4GHz",
+                "5GHz"
+            ]
+        },
+        "bandwidth_t": {
+            "title": "Bandwidth",
+            "type": "integer",
+            "enum": [
+                20,
+                40,
+                80,
+                160
+            ]
+        },
+        "aps_t": {
+            "type": "array",
+            "items": {
+                "type": "object",
+                "required": [
+                    "ifname",
+                    "status",
+                    "ssid",
+                    "bssid"
+                ],
+                "properties": {
+                    "ifname": {
+                        "type": "string",
+                        "minLength": 1,
+                        "maxLength": 16
+                    },
+                    "status": {
+                        "type": "string"
+                    },
+                    "ssid": {
+                        "type": "string",
+                        "minLength": 0,
+                        "maxLength": 32
+                    },
+                    "bssid": {
+                        "$ref": "#/definitions/macaddr_t"
+                    }
+                }
+            }
+        }
+    },
+    "$schema": "http://json-schema.org/draft-07/schema#",
+    "$id": "https://www.iopsys.eu/wifi",
+    "type": "object",
+    "title": "Wifi",
+    "properties": {
+        "status": {
+            "type": "object",
+            "properties": {
+                "input": {
+                    "type": "object",
+                    "properties": {}
+                },
+                "output": {
+                    "type": "object",
+                    "required": [
+                        "radios"
+                    ],
+                    "properties": {
+                        "radios": {
+                            "type": "array",
+                            "items": {
+                                "type": "object",
+                                "required": [
+                                    "name",
+                                    "isup",
+                                    "standard",
+                                    "country",
+                                    "band",
+                                    "channel",
+                                    "bandwidth",
+                                    "noise",
+                                    "rate",
+                                    "channels",
+                                    "accesspoints",
+                                    "backhauls"
+                                ],
+                                "if": {
+                                    "properties": {
+                                        "band": {
+                                            "const": "2.4GHz"
+                                        }
+                                    }
+                                },
+                                "then": {
+                                    "properties": {
+                                        "channel": {
+                                            "$ref": "#/definitions/channel_2_t"
+                                        },
+                                        "channels": {
+                                            "$ref": "#/definitions/channels_2_t"
+                                        }
+                                    }
+                                },
+                                "else": {
+                                    "properties": {
+                                        "channel": {
+                                            "$ref": "#/definitions/channel_5_t"
+                                        },
+                                        "channels": {
+                                            "$ref": "#/definitions/channels_5_t"
+                                        }
+                                    }
+                                },
+                                "properties": {
+                                    "name": {
+                                        "$ref": "#/definitions/iface_t"
+                                    },
+                                    "isup": {
+                                        "type": "boolean"
+                                    },
+                                    "standard": {
+                                        "type": "string"
+                                    },
+                                    "country": {
+                                        "type": "string",
+                                        "minLength": 2,
+                                        "maxLength": 3
+                                    },
+                                    "band": {
+                                        "$ref": "#/definitions/band_t"
+                                    },
+                                    "bandwidth": {
+                                        "$ref": "#/definitions/bandwidth_t"
+                                    },
+                                    "noise": {
+                                        "$ref": "#/definitions/noisepower_t"
+                                    },
+                                    "rate": {
+                                        "type": "integer",
+                                        "minimum": 0
+                                    },
+                                    "accesspoints": {
+                                        "$ref": "#/definitions/aps_t"
+                                    },
+                                    "backhauls": {
+                                        "$ref": "#/definitions/aps_t"
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/ubus/wifi.radio.json b/ubus/wifi.radio.json
index b44d372da2c8394df4fdcde874c1afbeb0e55b22..74751b206fda66ebaedfcb5487eb49377200897d 100644
--- a/ubus/wifi.radio.json
+++ b/ubus/wifi.radio.json
@@ -105,10 +105,24 @@
     "$schema": "http://json-schema.org/draft-07/schema#",
     "$id": "https://www.iopsys.eu/wifi.radio",
     "properties": {
-        "output": {
+        "autochannel": {
             "type": "object",
             "properties": {
-                "autochannel": {
+                "input": {
+                    "type": "object",
+                    "properties": {
+                        "interval": {
+                            "type": "integer"
+                        },
+                        "algo": {
+                            "type": "integer"
+                        },
+                        "scans": {
+                            "type": "integer"
+                        }
+                    }
+                },
+                "output": {
                     "description": "Auto channel selection",
                     "type": "object",
                     "title": "wifi.radio.autochannel",
@@ -135,30 +149,48 @@
                             "type": "string"
                         }
                     }
-                },
-                "get": {
-                    "description": "Get value for a radio parameter",
+                }
+            }
+        },
+        "scan": {
+            "type": "object",
+            "properties": {
+                "input": {
                     "type": "object",
-                    "title": "wifi.radio.iface",
-                    "required": [
-                        "status",
-                        "value_int"
-                    ],
                     "properties": {
-                        "status": {
-                            "type": "integer"
+                        "ssid": {
+                            "$ref": "#/definitions/ssid_t"
                         },
-                        "value_int": {
-                            "type": "integer"
+                        "bssid": {
+                            "$ref": "#/definitions/macaddr_t"
+                        },
+                        "channel": {
+                            "oneOf": [
+                                {
+                                    "$ref": "#/definitions/channel_2_t"
+                                },
+                                {
+                                    "$ref": "#/definitions/channel_5_t"
+                                }
+                            ]
                         }
                     }
                 },
-                "scan": {
+                "output": {
                     "description": "Trigger a scan",
                     "type": "object",
                     "properties": {}
+                }
+            }
+        },
+        "scanresults": {
+            "type": "object",
+            "properties": {
+                "input": {
+                    "type": "object",
+                    "properties": {}
                 },
-                "scanresults": {
+                "output": {
                     "description": "Show scan results",
                     "type": "object",
                     "title": "wifi.radio.iface",
@@ -249,8 +281,17 @@
                             }
                         }
                     }
+                }
+            }
+        },
+        "stats": {
+            "type": "object",
+            "properties": {
+                "input": {
+                    "type": "object",
+                    "properties": {}
                 },
-                "stats": {
+                "output": {
                     "description": "Radio statistics",
                     "type": "object",
                     "title": "wifi.radio.iface",
@@ -294,8 +335,17 @@
                             "$ref": "#/definitions/rxtx_t"
                         }
                     }
+                }
+            }
+        },
+        "status": {
+            "type": "object",
+            "properties": {
+                "input": {
+                    "type": "object",
+                    "properties": {}
                 },
-                "status": {
+                "output": {
                     "description": "Radio status",
                     "type": "object",
                     "title": "wifi.radio.iface",
@@ -396,18 +446,10 @@
                 }
             }
         },
-        "input": {
+        "get": {
             "type": "object",
             "properties": {
-                "status": {
-                    "type": "object",
-                    "properties": {}
-                },
-                "stats": {
-                    "type": "object",
-                    "properties": {}
-                },
-                "get": {
+                "input": {
                     "type": "object",
                     "properties": {
                         "param": {
@@ -415,41 +457,13 @@
                         }
                     }
                 },
-                "scan": {
+                "output": {
                     "type": "object",
                     "properties": {
-                        "ssid": {
-                            "$ref": "#/definitions/ssid_t"
-                        },
-                        "bssid": {
-                            "$ref": "#/definitions/macaddr_t"
-                        },
-                        "channel": {
-                            "oneOf": [
-                                {
-                                    "$ref": "#/definitions/channel_2_t"
-                                },
-                                {
-                                    "$ref": "#/definitions/channel_5_t"
-                                }
-                            ]
-                        }
-                    }
-                },
-                "scanresults": {
-                    "type": "object",
-                    "properties": {}
-                },
-                "autochannel": {
-                    "type": "object",
-                    "properties": {
-                        "interval": {
-                            "type": "integer"
-                        },
-                        "algo": {
+                        "status": {
                             "type": "integer"
                         },
-                        "scans": {
+                        "values": {
                             "type": "integer"
                         }
                     }
diff --git a/ubus/wifi.wps.json b/ubus/wifi.wps.json
index d08d47bfe50d9d5d52e5278378d82c8ae2192445..d3009a1e97ba784b7072cf4bb66487f37095e754 100644
--- a/ubus/wifi.wps.json
+++ b/ubus/wifi.wps.json
@@ -17,10 +17,10 @@
     "$schema": "http://json-schema.org/draft-07/schema#",
     "$id": "https://www.iopsys.eu/wifi.wps",
     "properties": {
-        "output": {
+        "generate_pin": {
             "type": "object",
             "properties": {
-                "generate_pin": {
+                "output": {
                     "type": "object",
                     "required": [
                         "pin"
@@ -30,63 +30,58 @@
                             "$ref": "#/definitions/pin_t"
                         }
                     }
-                },
-                "setpin": {
-                    "type": "object",
-                    "properties": {}
-                },
-                "showpin": {
+                }
+            }
+        },
+        "setpin": {
+            "type": "object",
+            "properties": {
+                "input": {
                     "type": "object",
                     "required": [
                         "pin"
                     ],
                     "properties": {
+                        "vif": {
+                            "$ref": "#/definitions/iface_t"
+                        },
                         "pin": {
                             "$ref": "#/definitions/pin_t"
                         }
                     }
                 },
-                "start": {
+                "output": {
                     "type": "object",
                     "properties": {}
-                },
-                "status": {
+                }
+            }
+        },
+        "showpin": {
+            "type": "object",
+            "properties": {
+                "input": {
                     "type": "object",
-                    "required": [
-                        "code",
-                        "status"
-                    ],
-                    "properties": {
-                        "code": {
-                            "type": "integer",
-                            "minimum": 0
-                        },
-                        "status": {
-                            "type": "string"
-                        }
+                    "vif": {
+                        "$ref": "#/definitions/iface_t"
                     }
                 },
-                "stop": {
-                    "type": "object",
-                    "properties": {}
-                },
-                "validate_pin": {
+                "output": {
                     "type": "object",
                     "required": [
-                        "valid"
+                        "pin"
                     ],
                     "properties": {
-                        "valid": {
-                            "type": "boolean"
+                        "pin": {
+                            "$ref": "#/definitions/pin_t"
                         }
                     }
                 }
             }
         },
-        "input": {
+        "start": {
             "type": "object",
             "properties": {
-                "start": {
+                "input": {
                     "type": "object",
                     "properties": {
                         "vif": {
@@ -103,11 +98,16 @@
                         }
                     }
                 },
-                "stop": {
+                "output": {
                     "type": "object",
                     "properties": {}
-                },
-                "status": {
+                }
+            }
+        },
+        "status": {
+            "type": "object",
+            "properties": {
+                "input": {
                     "type": "object",
                     "properties": {
                         "vif": {
@@ -115,11 +115,41 @@
                         }
                     }
                 },
-                "generate_pin": {
+                "output": {
+                    "type": "object",
+                    "required": [
+                        "code",
+                        "status"
+                    ],
+                    "properties": {
+                        "code": {
+                            "type": "integer",
+                            "minimum": 0
+                        },
+                        "status": {
+                            "type": "string"
+                        }
+                    }
+                }
+            }
+        },
+        "stop": {
+            "type": "object",
+            "properties": {
+                "input": {
                     "type": "object",
                     "properties": {}
                 },
-                "validate_pin": {
+                "output": {
+                    "type": "object",
+                    "properties": {}
+                }
+            }
+        },
+        "validate_pin": {
+            "type": "object",
+            "properties": {
+                "input": {
                     "type": "object",
                     "required": [
                         "pin"
@@ -130,23 +160,14 @@
                         }
                     }
                 },
-                "showpin": {
-                    "type": "object",
-                    "vif": {
-                        "$ref": "#/definitions/iface_t"
-                    }
-                },
-                "setpin": {
+                "output": {
                     "type": "object",
                     "required": [
-                        "pin"
+                        "valid"
                     ],
                     "properties": {
-                        "vif": {
-                            "$ref": "#/definitions/iface_t"
-                        },
-                        "pin": {
-                            "$ref": "#/definitions/pin_t"
+                        "valid": {
+                            "type": "boolean"
                         }
                     }
                 }