diff --git a/wifi.ap/wifi.ap.add_neighbor.json b/wifi.ap/wifi.ap.add_neighbor.json
new file mode 100644
index 0000000000000000000000000000000000000000..292a672c28e7045a079e36b939bfd644cddf6f58
--- /dev/null
+++ b/wifi.ap/wifi.ap.add_neighbor.json
@@ -0,0 +1,5 @@
+{
+    "definitions": {},
+    "$schema": "wifi.ap.add_neighbor",
+    "$id": "iopsys"
+  }
\ No newline at end of file
diff --git a/wifi.ap/wifi.ap.add_vendor_ie.json b/wifi.ap/wifi.ap.add_vendor_ie.json
new file mode 100644
index 0000000000000000000000000000000000000000..e267b132e29f167f8b97217e60cb2057e217da45
--- /dev/null
+++ b/wifi.ap/wifi.ap.add_vendor_ie.json
@@ -0,0 +1,5 @@
+{
+    "definitions": {},
+    "$schema": "wifi.ap.add_vendor_ie",
+    "$id": "iopsys"
+  }
\ No newline at end of file
diff --git a/wifi.ap/wifi.ap.assoclist.json b/wifi.ap/wifi.ap.assoclist.json
new file mode 100644
index 0000000000000000000000000000000000000000..8c7130ea10bd49383167a35ba76ab95a79bb56ff
--- /dev/null
+++ b/wifi.ap/wifi.ap.assoclist.json
@@ -0,0 +1,32 @@
+{
+    "definitions": {},
+    "$schema": "wifi.ap.assoclist",
+    "$id": "iopsys",
+    "type": "object",
+    "required": [
+      "assoclist"
+    ],
+    "properties": {
+      "assoclist": {
+        "type": "array",
+        "items": {
+          "type": "object",
+          "required": [
+            "wdev",
+            "macaddr"
+          ],
+          "properties": {
+            "wdev": {
+              "type": "string",
+              "minLength": 1,
+              "maxLength": 16
+            },
+            "macaddr": {
+              "type": "string",
+              "pattern": "^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$"
+            }
+          }
+        }
+      }
+    }
+  }
\ No newline at end of file
diff --git a/wifi.ap/wifi.ap.del_neighbor.json b/wifi.ap/wifi.ap.del_neighbor.json
new file mode 100644
index 0000000000000000000000000000000000000000..b17603d363942e2ab372e32e32154fed94d80cc0
--- /dev/null
+++ b/wifi.ap/wifi.ap.del_neighbor.json
@@ -0,0 +1,5 @@
+{
+    "definitions": {},
+    "$schema": "wifi.ap.del_neighbor",
+    "$id": "iopsys"
+  }
\ No newline at end of file
diff --git a/wifi.ap/wifi.ap.del_vendor_ie.json b/wifi.ap/wifi.ap.del_vendor_ie.json
new file mode 100644
index 0000000000000000000000000000000000000000..e267b132e29f167f8b97217e60cb2057e217da45
--- /dev/null
+++ b/wifi.ap/wifi.ap.del_vendor_ie.json
@@ -0,0 +1,5 @@
+{
+    "definitions": {},
+    "$schema": "wifi.ap.add_vendor_ie",
+    "$id": "iopsys"
+  }
\ No newline at end of file
diff --git a/wifi.ap/wifi.ap.disconnect.json b/wifi.ap/wifi.ap.disconnect.json
new file mode 100644
index 0000000000000000000000000000000000000000..f946560fcc0829b0e3ea90ccba9d56e85b3cc831
--- /dev/null
+++ b/wifi.ap/wifi.ap.disconnect.json
@@ -0,0 +1,5 @@
+{
+    "definitions": {},
+    "$schema": "wifi.ap.disconnect",
+    "$id": "iopsys"
+  }
\ No newline at end of file
diff --git a/wifi.ap/wifi.ap.list_neighbor.json b/wifi.ap/wifi.ap.list_neighbor.json
new file mode 100644
index 0000000000000000000000000000000000000000..c8ee2879e3ad3dcaa0d8502b476883d9773c4db9
--- /dev/null
+++ b/wifi.ap/wifi.ap.list_neighbor.json
@@ -0,0 +1,49 @@
+{
+    "definitions": {},
+    "$schema": "wifi.ap.list_neighbor",
+    "$id": "iopsys",
+    "type": "object",
+    "required": [
+      "neighbors"
+    ],
+    "properties": {
+      "neighbors": {
+        "type": "array",
+        "items": {
+          "type": "object",
+          "required": [
+            "bssid",
+            "bss_info",
+            "regulatory",
+            "channel",
+            "phy"
+          ],
+          "properties": {
+            "bssid": {
+              "type": "string",
+              "default": "",
+              "pattern": "^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$"
+            },
+            "bss_info": {
+              "type": "integer",
+              "minimum": 0
+            },
+            "regulatory": {
+              "type": "integer",
+              "minimum": 0
+            },
+            "channel": {
+              "type": "integer",
+              "minimum": 1,
+              "maximum": 200
+            },
+            "phy": {
+              "type": "integer",
+              "minimum": 0,
+              "maximum": 9
+            }
+          }
+        }
+      }
+    }
+  }
\ No newline at end of file
diff --git a/wifi.ap/wifi.ap.monitor.json b/wifi.ap/wifi.ap.monitor.json
new file mode 100644
index 0000000000000000000000000000000000000000..0eef09e8cd5248d78c9d9adb2b12c98f71f486a8
--- /dev/null
+++ b/wifi.ap/wifi.ap.monitor.json
@@ -0,0 +1,5 @@
+{
+    "definitions": {},
+    "$schema": "wifi.ap.monitor",
+    "$id": "iopsys"
+  }
\ No newline at end of file
diff --git a/wifi.ap/wifi.ap.request_neighbor.json b/wifi.ap/wifi.ap.request_neighbor.json
new file mode 100644
index 0000000000000000000000000000000000000000..1174f544d83fc32b0b9f52b36e3722c196714ab8
--- /dev/null
+++ b/wifi.ap/wifi.ap.request_neighbor.json
@@ -0,0 +1,5 @@
+{
+    "definitions": {},
+    "$schema": "wifi.ap.request_neighbor",
+    "$id": "iopsys"
+  }
\ No newline at end of file
diff --git a/wifi.ap/wifi.ap.request_transition.json b/wifi.ap/wifi.ap.request_transition.json
new file mode 100644
index 0000000000000000000000000000000000000000..29bdf7a89f0b5e95d5f1b8383f03b4f55447724e
--- /dev/null
+++ b/wifi.ap/wifi.ap.request_transition.json
@@ -0,0 +1,5 @@
+{
+    "definitions": {},
+    "$schema": "wifi.ap.request_transition",
+    "$id": "iopsys"
+  }
\ No newline at end of file
diff --git a/wifi.ap/wifi.ap.stations.json b/wifi.ap/wifi.ap.stations.json
new file mode 100644
index 0000000000000000000000000000000000000000..75ad8e483f94707d5a076277a5673f4717042067
--- /dev/null
+++ b/wifi.ap/wifi.ap.stations.json
@@ -0,0 +1,330 @@
+{
+	"definitions": {},
+	"$schema": "wifi.ap.stations",
+	"$id": "iopsys",
+	"type": "object",
+	"required": [
+	  "stations"
+	],
+	"properties": {
+	  "stations": {
+		"type": "array",
+		"items": {
+		  "type": "object",
+		  "required": [
+			"macaddr",
+			"wdev",
+			"frequency",
+			"rssi",
+			"snr",
+			"idle",
+			"in_network",
+			"tx_airtime",
+			"rx_airtime",
+			"airtime",
+			"max_rate",
+			"status",
+			"capabilities",
+			"stats",
+			"rssi_per_antenna"
+		  ],
+		  "properties": {
+			"macaddr": {
+			  "type": "string",
+			  "pattern": "^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$"
+			},
+			"wdev": {
+			  "type": "string",
+			  "minLength": 1,
+			  "maxLength": 16
+			},
+			"frequency": {
+			  "type": "string",
+			  "enum": ["5GHz", "2.4GHz"]
+			},
+			"rssi": {
+			  "type": "integer",
+			  "minimum": -128,
+			  "maximum": 0
+			},
+			"snr": {
+			  "type": "integer",
+			  "minimum": 0,
+			  "maximum": 100
+			},
+			"idle": {
+			  "type": "integer",
+			  "minimum": 0
+			},
+			"in_network": {
+			  "type": "integer",
+			  "minimum": 0
+			},
+			"tx_airtime": {
+			  "type": "integer",
+			  "minimum": 0,
+			  "maximum": 100
+			},
+			"rx_airtime": {
+			  "type": "integer",
+			  "minimum": 0,
+			  "maximum": 100
+			},
+			"airtime": {
+			  "type": "integer",
+			  "minimum": 0,
+			  "maximum": 100
+			},
+			"max_rate": {
+			  "type": "integer",
+			  "minimum": 0
+			},
+			"status": {
+			  "type": "object",
+			  "required": [
+				"wmm",
+				"ps"
+			  ],
+			  "properties": {
+				"wmm": {
+				  "type": "boolean"
+				},
+				"ps": {
+				  "type": "boolean"
+				}
+			  }
+			},
+			"capabilities": {
+			  "type": "object",
+			  "required": [
+				"wmm",
+				"apsd",
+				"shortslot",
+				"dot11h",
+				"dot11k",
+				"2040coex",
+				"psmp",
+				"proxy_arp",
+				"dot11v_btm",
+				"dot11n",
+				"dot11n_ldpc",
+				"dot11n_40",
+				"dot11n_ps",
+				"dot11n_sgi20",
+				"dot11n_sgi40",
+				"dot11n_tx_stbc",
+				"dot11n_rx_stbc",
+				"dot11ac",
+				"dot11ac_160",
+				"dot11ac_8080",
+				"dot11ac_mpdu_max",
+				"dot11ac_sgi80",
+				"dot11ac_sgi160",
+				"dot11ac_rx_ldpc",
+				"dot11ac_tx_stbc",
+				"dot11ac_rx_stbc_1ss",
+				"dot11ac_rx_stbc_2ss",
+				"dot11ac_rx_stbc_3ss",
+				"dot11ac_rx_stbc_4ss",
+				"dot11ac_su_beamformer",
+				"dot11ac_su_beamformee",
+				"dot11ac_mu_beamformer",
+				"dot11ac_mu_beamformee",
+				"dot11k_link_meas",
+				"dot11k_nbr_report",
+				"dot11k_bcn_passive",
+				"dot11k_bcn_active",
+				"dot11k_bcn_table",
+				"dot11k_rcpi",
+				"dot11k_rsni"
+			  ],
+			  "properties": {
+				"wmm": {
+				  "type": "boolean"
+				},
+				"apsd": {
+				  "type": "boolean"
+				},
+				"shortslot": {
+				  "type": "boolean"
+				},
+				"dot11h": {
+				  "type": "boolean"
+				},
+				"dot11k": {
+				  "type": "boolean"
+				},
+				"2040coex": {
+				  "type": "boolean"
+				},
+				"psmp": {
+				  "type": "boolean"
+				},
+				"proxy_arp": {
+				  "type": "boolean"
+				},
+				"dot11v_btm": {
+				  "type": "boolean"
+				},
+				"dot11n": {
+				  "type": "boolean"
+				},
+				"dot11n_ldpc": {
+				  "type": "boolean"
+				},
+				"dot11n_40": {
+				  "type": "boolean"
+				},
+				"dot11n_ps": {
+				  "type": "boolean"
+				},
+				"dot11n_sgi20": {
+				  "type": "boolean"
+				},
+				"dot11n_sgi40": {
+				  "type": "boolean"
+				},
+				"dot11n_tx_stbc": {
+				  "type": "boolean"
+				},
+				"dot11n_rx_stbc": {
+				  "type": "boolean"
+				},
+				"dot11ac": {
+				  "type": "boolean"
+				},
+				"dot11ac_160": {
+				  "type": "boolean"
+				},
+				"dot11ac_8080": {
+				  "type": "boolean"
+				},
+				"dot11ac_mpdu_max": {
+				  "type": "integer",
+				  "minimum": 0,
+				  "maximum": 65535
+				},
+				"dot11ac_sgi80": {
+				  "type": "boolean"
+				},
+				"dot11ac_sgi160": {
+				  "type": "boolean"
+				},
+				"dot11ac_rx_ldpc": {
+				  "type": "boolean"
+				},
+				"dot11ac_tx_stbc": {
+				  "type": "boolean"
+				},
+				"dot11ac_rx_stbc_1ss": {
+				  "type": "boolean"
+				},
+				"dot11ac_rx_stbc_2ss": {
+				  "type": "boolean"
+				},
+				"dot11ac_rx_stbc_3ss": {
+				  "type": "boolean"
+				},
+				"dot11ac_rx_stbc_4ss": {
+				  "type": "boolean"
+				},
+				"dot11ac_su_beamformer": {
+				  "type": "boolean"
+				},
+				"dot11ac_su_beamformee": {
+				  "type": "boolean"
+				},
+				"dot11ac_mu_beamformer": {
+				  "type": "boolean"
+				},
+				"dot11ac_mu_beamformee": {
+				  "type": "boolean"
+				},
+				"dot11k_link_meas": {
+				  "type": "boolean"
+				},
+				"dot11k_nbr_report": {
+				  "type": "boolean"
+				},
+				"dot11k_bcn_passive": {
+				  "type": "boolean"
+				},
+				"dot11k_bcn_active": {
+				  "type": "boolean"
+				},
+				"dot11k_bcn_table": {
+				  "type": "boolean"
+				},
+				"dot11k_rcpi": {
+				  "type": "boolean"
+				},
+				"dot11k_rsni": {
+				  "type": "boolean"
+				}
+			  }
+			},
+			"stats": {
+			  "type": "object",
+			  "required": [
+				"tx_total_pkts",
+				"tx_total_bytes",
+				"tx_failures",
+				"tx_pkts_retries",
+				"rx_data_pkts",
+				"rx_data_bytes",
+				"rx_failures",
+				"rate_of_last_tx_pkt",
+				"rate_of_last_rx_pkt"
+			  ],
+			  "properties": {
+				"tx_total_pkts": {
+				  "type": "integer",
+				  "minimum": 0
+				},
+				"tx_total_bytes": {
+				  "type": "integer",
+				  "minimum": 0
+				},
+				"tx_failures": {
+				  "type": "integer",
+				  "minimum": 0
+				},
+				"tx_pkts_retries": {
+				  "type": "integer",
+				  "minimum": 0
+				},
+				"rx_data_pkts": {
+				  "type": "integer",
+				  "minimum": 0
+				},
+				"rx_data_bytes": {
+				  "type": "integer",
+				  "minimum": 0
+				},
+				"rx_failures": {
+				  "type": "integer",
+				  "minimum": 0
+				},
+				"rate_of_last_tx_pkt": {
+				  "type": "integer",
+				  "minimum": 0
+				},
+				"rate_of_last_rx_pkt": {
+				  "type": "integer",
+				  "minimum": 0
+				}
+			  }
+			},
+			"rssi_per_antenna": {
+			  "type": "array",
+			  "items": {
+				"type": "integer",
+				"minimum": -128,
+				"maximum": 0
+			  }
+			}
+		  }
+		}
+	  }
+	}
+  }
\ No newline at end of file
diff --git a/wifi.ap/wifi.ap.stats.json b/wifi.ap/wifi.ap.stats.json
new file mode 100644
index 0000000000000000000000000000000000000000..b6d97f2342fbb9e66b9be9c95a5f006c31cc54bd
--- /dev/null
+++ b/wifi.ap/wifi.ap.stats.json
@@ -0,0 +1,115 @@
+{
+    "definitions": {},
+    "$schema": "wifi.ap.stats.json",
+    "$id": "iopsys",
+    "type": "object",
+    "required": [
+      "tx_bytes",
+      "tx_packets",
+      "tx_unicast_packets",
+      "tx_multicast_packets",
+      "tx_broadcast_packets",
+      "tx_error_packets",
+      "tx_retrans_packets",
+      "tx_retrans_fail_packets",
+      "tx_retry_packets",
+      "tx_multi_retry_packets",
+      "tx_dropped_packets",
+      "ack_fail_packets",
+      "aggregate_packets",
+      "rx_bytes",
+      "rx_packets",
+      "rx_unicast_packets",
+      "rx_multicast_packets",
+      "rx_broadcast_packets",
+      "rx_error_packets",
+      "rx_dropped_packets",
+      "rx_unknown_packets"
+    ],
+    "properties": {
+      "tx_bytes": {
+        "type": "integer",
+        "minimum": 0
+      },
+      "tx_packets": {
+        "type": "integer",
+        "minimum": 0
+      },
+      "tx_unicast_packets": {
+        "type": "integer",
+        "minimum": 0
+      },
+      "tx_multicast_packets": {
+        "type": "integer",
+        "minimum": 0
+      },
+      "tx_broadcast_packets": {
+        "type": "integer",
+        "minimum": 0
+      },
+      "tx_error_packets": {
+        "type": "integer",
+        "minimum": 0
+      },
+      "tx_retrans_packets": {
+        "type": "integer",
+        "minimum": 0
+      },
+      "tx_retrans_fail_packets": {
+        "type": "integer",
+        "minimum": 0
+      },
+      "tx_retry_packets": {
+        "type": "integer",
+        "minimum": 0
+      },
+      "tx_multi_retry_packets": {
+        "type": "integer",
+        "minimum": 0
+      },
+      "tx_dropped_packets": {
+        "type": "integer",
+        "minimum": 0
+      },
+      "ack_fail_packets": {
+        "type": "integer",
+        "minimum": 0
+      },
+      "aggregate_packets": {
+        "type": "integer",
+        "minimum": 0
+      },
+      "rx_bytes": {
+        "type": "integer",
+        "minimum": 0
+      },
+      "rx_packets": {
+        "type": "integer",
+        "minimum": 0
+      },
+      "rx_unicast_packets": {
+        "type": "integer",
+        "minimum": 0
+      },
+      "rx_multicast_packets": {
+        "type": "integer",
+        "minimum": 0
+      },
+      "rx_broadcast_packets": {
+        "type": "integer",
+        "minimum": 0
+      },
+      "rx_error_packets": {
+        "type": "integer",
+        "minimum": 0
+      },
+      "rx_dropped_packets": {
+        "type": "integer",
+        "minimum": 0
+      },
+      "rx_unknown_packets": {
+        "type": "integer",
+        "minimum": 0
+      }
+    }
+  }
\ No newline at end of file
diff --git a/wifi.ap/wifi.ap.status.json b/wifi.ap/wifi.ap.status.json
new file mode 100644
index 0000000000000000000000000000000000000000..69b55c5224c70fee1fe69a6f3405011fad210b09
--- /dev/null
+++ b/wifi.ap/wifi.ap.status.json
@@ -0,0 +1,197 @@
+{
+  "definitions": {},
+  "$schema": "wifi.ap.iface.status",
+  "$id": "iopsys",
+  "type": "object",
+  "required": [
+    "ifname",
+    "status",
+    "ssid",
+    "bssid",
+    "encryption",
+    "bandwidth",
+    "standard",
+    "num_stations",
+    "utilization",
+    "adm_capacity",
+    "hidden",
+    "max_stations",
+    "capabilities"
+  ],
+  "properties": {
+    "ifname": {
+      "type": "string",
+      "minLength": 1,
+      "maxLength": 16
+    },
+    "status": {
+      "type": "string"
+    },
+    "ssid": {
+      "type": "string",
+      "minLength": 0,
+      "maxLength": 32
+    },
+    "bssid": {
+      "type": "string",
+      "pattern": "^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$"
+    },
+    "encryption": {
+      "type": "string"
+    },
+    "bandwidth": {
+      "type": "integer",
+      "default": 0,
+      "enum": [20, 40, 80, 160]
+    },
+    "standard": {
+      "type": "string"
+    },
+    "num_stations": {
+      "type": "integer",
+      "minimum": 0,
+      "maximum": 2007
+    },
+    "utilization": {
+      "type": "integer",
+      "minimum": 0,
+      "maximum": 100
+    },
+    "adm_capacity": {
+      "type": "integer"
+    },
+    "hidden": {
+      "type": "boolean"
+    },
+    "max_stations": {
+      "type": "integer",
+      "minimum": 0,
+      "maximum": 2007
+    },
+    "capabilities": {
+      "type": "object",
+      "required": [
+        "wmm",
+        "apsd",
+        "shortslot",
+        "dot11h",
+        "dot11k",
+        "dot11n",
+        "dot11n_ldpc",
+        "dot11n_40",
+        "dot11n_ps",
+        "dot11n_sgi20",
+        "dot11n_sgi40",
+        "dot11n_tx_stbc",
+        "dot11n_rx_stbc",
+        "dot11ac",
+        "dot11ac_160",
+        "dot11ac_8080",
+        "dot11ac_mpdu_max",
+        "dot11ac_sgi80",
+        "dot11ac_sgi160",
+        "dot11ac_rx_ldpc",
+        "dot11ac_tx_stbc",
+        "dot11ac_rx_stbc_1ss",
+        "dot11ac_rx_stbc_2ss",
+        "dot11ac_rx_stbc_3ss",
+        "dot11ac_rx_stbc_4ss",
+        "dot11ac_su_beamformer",
+        "dot11ac_su_beamformee",
+        "dot11ac_mu_beamformer",
+        "dot11ac_mu_beamformee"
+      ],
+      "properties": {
+        "wmm": {
+          "type": "boolean"
+        },
+        "apsd": {
+          "type": "boolean"
+        },
+        "shortslot": {
+          "type": "boolean"
+        },
+        "dot11h": {
+          "type": "boolean"
+        },
+        "dot11k": {
+          "type": "boolean"
+        },
+        "dot11n": {
+          "type": "boolean"
+        },
+        "dot11n_ldpc": {
+          "type": "boolean"
+        },
+        "dot11n_40": {
+          "type": "boolean"
+        },
+        "dot11n_ps": {
+          "type": "boolean"
+        },
+        "dot11n_sgi20": {
+          "type": "boolean"
+        },
+        "dot11n_sgi40": {
+          "type": "boolean"
+        },
+        "dot11n_tx_stbc": {
+          "type": "boolean"
+        },
+        "dot11n_rx_stbc": {
+          "type": "boolean"
+        },
+        "dot11ac": {
+          "type": "boolean"
+        },
+        "dot11ac_160": {
+          "type": "boolean"
+        },
+        "dot11ac_8080": {
+          "type": "boolean"
+        },
+        "dot11ac_mpdu_max": {
+          "type": "integer",
+          "minimum": 0,
+          "maximum": 65535
+        },
+        "dot11ac_sgi80": {
+          "type": "boolean"
+        },
+        "dot11ac_sgi160": {
+          "type": "boolean"
+        },
+        "dot11ac_rx_ldpc": {
+          "type": "boolean"
+        },
+        "dot11ac_tx_stbc": {
+          "type": "boolean"
+        },
+        "dot11ac_rx_stbc_1ss": {
+          "type": "boolean"
+        },
+        "dot11ac_rx_stbc_2ss": {
+          "type": "boolean"
+        },
+        "dot11ac_rx_stbc_3ss": {
+          "type": "boolean"
+        },
+        "dot11ac_rx_stbc_4ss": {
+          "type": "boolean"
+        },
+        "dot11ac_su_beamformer": {
+          "type": "boolean"
+        },
+        "dot11ac_su_beamformee": {
+          "type": "boolean"
+        },
+        "dot11ac_mu_beamformer": {
+          "type": "boolean"
+        },
+        "dot11ac_mu_beamformee": {
+          "type": "boolean"
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/wifi.radio/wifi.radio.autochannel.json b/wifi.radio/wifi.radio.autochannel.json
new file mode 100644
index 0000000000000000000000000000000000000000..f687d9d18066fb5655ab3c09841b34119487dfcf
--- /dev/null
+++ b/wifi.radio/wifi.radio.autochannel.json
@@ -0,0 +1,25 @@
+{
+  "definitions": {},
+  "$schema": "wifi.radio.autochannel",
+  "$id": "iopsys",
+  "type": "object",
+  "title": "wifi.radio.autochannel",
+  "required": [
+    "code",
+    "new_channel",
+    "status"
+  ],
+  "properties": {
+    "code": {
+      "type": "integer"
+    },
+    "new_channel": {
+      "type": "integer",
+      "minimum": 1,
+      "maximum": 200
+    },
+    "status": {
+      "type": "string"
+    }
+  }
+}
\ No newline at end of file
diff --git a/wifi.radio/wifi.radio.get.json b/wifi.radio/wifi.radio.get.json
new file mode 100644
index 0000000000000000000000000000000000000000..bca0eab04572d3bf9a2fdb96f7044748d117238a
--- /dev/null
+++ b/wifi.radio/wifi.radio.get.json
@@ -0,0 +1,19 @@
+{
+  "definitions": {},
+  "$schema": "wifi.radio.iface",
+  "$id": "iopsys",
+  "type": "object",
+  "title": "wifi.radio.iface",
+  "required": [
+    "status",
+    "value_int"
+  ],
+  "properties": {
+    "status": {
+      "type": "integer"
+    },
+    "value_int": {
+      "type": "integer"
+    }
+  }
+}
\ No newline at end of file
diff --git a/wifi.radio/wifi.radio.scan.json b/wifi.radio/wifi.radio.scan.json
new file mode 100644
index 0000000000000000000000000000000000000000..72488404593b3eecbf13983e87773c7f0f97d5f1
--- /dev/null
+++ b/wifi.radio/wifi.radio.scan.json
@@ -0,0 +1,5 @@
+{
+  "definitions": {},
+  "$schema": "wifi.radio.iface",
+  "$id": "iopsys"
+}
\ No newline at end of file
diff --git a/wifi.radio/wifi.radio.scanresults.ifelse.json b/wifi.radio/wifi.radio.scanresults.ifelse.json
new file mode 100644
index 0000000000000000000000000000000000000000..bd585cd5c9911fa0a6b2ad26bc438e0e450baf88
--- /dev/null
+++ b/wifi.radio/wifi.radio.scanresults.ifelse.json
@@ -0,0 +1,95 @@
+{
+  "definitions": {},
+  "$schema": "wifi.radio.iface",
+  "$id": "iopsys",
+  "type": "object",
+  "title": "wifi.radio.iface",
+  "required": [
+    "accesspoints"
+  ],
+  "properties": {
+    "accesspoints": {
+      "required": true,
+      "type": "array",
+      "items": {
+        "type": "object",
+        "properties": {
+          "ssid": {
+            "required": true,
+            "type": "string"
+          },
+          "bssid": {
+            "required": true,
+            "type": "string",
+            "pattern": "^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$"
+          },
+          "if": {
+              "properties": {
+                "band": {
+                  "const": "2.4GHz"
+                }
+              }
+          },
+          "then": {
+            "properties": {
+              "channel": {
+                "required": true,
+                "type": "integer",
+                "minimum": 1,
+                "maximum": 14
+              }
+            }
+          },
+          "else": {
+            "channel": {
+              "required": true,
+              "type": "integer",
+              "minimum": 32,
+              "maximum": 173
+            }
+          },
+          "bandwidth": {
+            "required": true,
+            "type": "integer",
+            "default": 0,
+            "enum": [10, 20, 40, 80, 160]
+          },
+          "encryption": {
+            "required": true,
+            "type": "string"
+          },
+          "band": {
+            "required": true,
+            "type": "string",
+            "enum": ["2.4GHz", "5GHz"]
+          },
+          "rssi": {
+            "required": true,
+            "type": "integer",
+            "maximum": 0
+          },
+          "standard": {
+            "required": true,
+            "type": "string",
+            "enum": ["802.11a"]
+          },
+          "load_stas": {
+            "required": true,
+            "type": "integer",
+            "minimum": 0
+          },
+          "load_utilization": {
+            "required": true,
+            "type": "integer",
+            "minimum": 0
+          },
+          "load_available": {
+            "required": true,
+            "type": "integer",
+            "minimum": 0
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/wifi.radio/wifi.radio.scanresults.json b/wifi.radio/wifi.radio.scanresults.json
new file mode 100644
index 0000000000000000000000000000000000000000..5d33e41e8c08291fb3c4b73739a86bfc0dcaf99b
--- /dev/null
+++ b/wifi.radio/wifi.radio.scanresults.json
@@ -0,0 +1,79 @@
+{
+  "definitions": {},
+  "$schema": "wifi.radio.iface",
+  "$id": "iopsys",
+  "type": "object",
+  "title": "wifi.radio.iface",
+  "required": [
+    "accesspoints"
+  ],
+  "properties": {
+    "accesspoints": {
+      "required": true,
+      "type": "array",
+      "items": {
+        "type": "object",
+        "properties": {
+          "ssid": {
+            "required": true,
+            "type": "string",
+            "minLength": 0,
+            "maxLength": 32
+          },
+          "bssid": {
+            "required": true,
+            "type": "string",
+            "pattern": "^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$"
+          },
+          "channel": {
+            "required": true,
+            "type": "integer",
+            "minimum": 1,
+            "maximum": 200
+          },
+          "bandwidth": {
+            "required": true,
+            "type": "integer",
+            "default": 0,
+            "enum": [20, 40, 80, 160]
+          },
+          "encryption": {
+            "required": true,
+            "type": "string"
+          },
+          "band": {
+            "required": true,
+            "type": "string",
+            "enum": ["2.4GHz", "5GHz"]
+          },
+          "rssi": {
+            "required": true,
+            "type": "integer",
+            "maximum": 0,
+            "minimum": -127
+          },
+          "standard": {
+            "required": true,
+            "type": "string"
+          },
+          "load_stas": {
+            "required": true,
+            "type": "integer",
+            "minimum": 0
+          },
+          "load_utilization": {
+            "required": true,
+            "type": "integer",
+            "minimum": 0,
+            "maximum": 100
+          },
+          "load_available": {
+            "required": true,
+            "type": "integer",
+            "minimum": 0
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/wifi.radio/wifi.radio.stats.json b/wifi.radio/wifi.radio.stats.json
new file mode 100644
index 0000000000000000000000000000000000000000..fe92e3c5e1058f69abc88189edbd11f4c9bc25a6
--- /dev/null
+++ b/wifi.radio/wifi.radio.stats.json
@@ -0,0 +1,74 @@
+{
+  "definitions": {},
+  "$schema": "wifi.radio.iface",
+  "$id": "iopsys",
+  "type": "object",
+  "title": "wifi.radio.iface",
+  "required": [
+    "tx_bytes",
+    "tx_packets",
+    "tx_error_packets",
+    "tx_dropped_packets",
+    "rx_bytes",
+    "rx_packets",
+    "rx_error_packets",
+    "rx_dropped_packets",
+    "rx_fcs_error_packets"
+  ],
+  "properties": {
+    "tx_bytes": {
+      "required": true,
+      "type": "integer",
+      "default": 0,
+      "minimum": 0
+    },
+    "tx_packets": {
+      "required": true,
+      "type": "integer",
+      "default": 0,
+      "minimum": 0
+    },
+    "tx_error_packets": {
+      "required": true,
+      "type": "integer",
+      "default": 0,
+      "minimum": 0
+    },
+    "tx_dropped_packets": {
+      "required": true,
+      "type": "integer",
+      "default": 0,
+      "minimum": 0
+    },
+    "rx_bytes": {
+      "required": true,
+      "type": "integer",
+      "default": 0,
+      "minimum": 0
+    },
+    "rx_packets": {
+      "required": true,
+      "type": "integer",
+      "default": 0,
+      "minimum": 0
+    },
+    "rx_error_packets": {
+      "required": true,
+      "type": "integer",
+      "default": 0,
+      "minimum": 0
+    },
+    "rx_dropped_packets": {
+      "required": true,
+      "type": "integer",
+      "default": 0,
+      "minimum": 0
+    },
+    "rx_fcs_error_packets": {
+      "required": true,
+      "type": "integer",
+      "default": 0,
+      "minimum": 0
+    }
+  }
+}
\ No newline at end of file
diff --git a/wifi.radio/wifi.radio.status.ifelse.json b/wifi.radio/wifi.radio.status.ifelse.json
new file mode 100644
index 0000000000000000000000000000000000000000..c42dce500af5218c58c29059b7a18dfa3614d040
--- /dev/null
+++ b/wifi.radio/wifi.radio.status.ifelse.json
@@ -0,0 +1,109 @@
+{
+  "definitions": {},
+  "$schema": "wifi.radio.iface",
+  "$id": "iopsys",
+  "type": "object",
+  "title": "wifi.radio.iface",
+  "required": [
+    "radio",
+    "isup",
+    "band",
+    "channel",
+    "bandwidth",
+    "noise",
+    "rate",
+    "beacon_int",
+    "dtim_period",
+    "short_retry_limit",
+    "long_retry_limit",
+    "frag_threshold",
+    "rts_threshold"
+  ],
+  "properties": {
+    "radio": {
+      "required": true,
+      "type": "string",
+      "minLength": 1,
+      "maxLength": 16
+    },
+    "isup": {
+      "required": true,
+      "type": "boolean",
+      "default": 0,
+      "minimum": 0
+    },
+    "band": {
+      "required": true,
+      "type": "integer",
+      "enum": [2, 5]
+    },
+    "if": {
+      "properties": {
+        "band": {
+          "const": 2
+        }
+      }
+    },
+    "then": {
+      "properties": {
+        "channel": {
+          "required": true,
+          "type": "integer",
+          "minimum": 1,
+          "maximum": 14
+        }
+      }
+    },
+    "else": {
+      "channel": {
+        "required": true,
+        "type": "integer",
+        "minimum": 32,
+        "maximum": 173
+      }
+    },
+    "bandwidth": {
+      "required": true,
+      "type": "integer",
+      "default": 0,
+      "enum": [10, 20, 40, 80, 160]
+    },
+    "noise": {
+      "required": true,
+      "type": "integer",
+      "default": 0,
+      "minimum": 0
+    },
+    "rate": {
+      "required": true,
+      "type": "integer",
+      "minimum": 0
+    },
+    "beacon_int": {
+      "required": true,
+      "type": "integer",
+      "default": 0,
+      "minimum": 0
+    },
+    "dtim_period": {
+      "required": true,
+      "type": "integer"
+    },
+    "short_retry_limit": {
+      "required": true,
+      "type": "integer"
+    },
+    "long_retry_limit": {
+      "required": true,
+      "type": "integer"
+    },
+    "frag_threshold": {
+      "required": true,
+      "type": "integer"
+    },
+    "rts_threshold": {
+      "required": true,
+      "type": "integer"
+    }
+  }
+}
\ No newline at end of file
diff --git a/wifi.radio/wifi.radio.status.json b/wifi.radio/wifi.radio.status.json
new file mode 100644
index 0000000000000000000000000000000000000000..a13cfe058dd32c39117410e2d61beeb323939f3a
--- /dev/null
+++ b/wifi.radio/wifi.radio.status.json
@@ -0,0 +1,88 @@
+{
+  "definitions": {},
+  "$schema": "wifi.radio.iface",
+  "$id": "iopsys",
+  "type": "object",
+  "title": "wifi.radio.iface",
+  "required": [
+    "radio",
+    "isup",
+    "band",
+    "channel",
+    "bandwidth",
+    "noise",
+    "rate",
+    "beacon_int",
+    "dtim_period",
+    "short_retry_limit",
+    "long_retry_limit",
+    "frag_threshold",
+    "rts_threshold"
+  ],
+  "properties": {
+    "radio": {
+      "type": "string",
+      "minLength": 1,
+      "maxLength": 16
+    },
+    "isup": {
+      "type": "boolean"
+    },
+    "band": {
+      "type": "integer",
+      "enum": [2, 5]
+    },
+    "channel": {
+      "type": "integer",
+      "minimum": 1,
+      "maximum": 200
+    },
+    "bandwidth": {
+      "type": "integer",
+      "enum": [20, 40, 80, 160]
+    },
+    "noise": {
+      "type": "integer",
+      "maximum": 0,
+      "minimum": -128
+    },
+    "rate": {
+      "type": "integer",
+      "minimum": 0
+    },
+    "beacon_int": {
+      "type": "integer",
+      "default": 100,
+      "minimum": 1,
+      "maximum": 65535
+    },
+    "dtim_period": {
+      "type": "integer",
+      "default": 1,
+      "minimum": 1,
+      "maximum": 255
+    },
+    "short_retry_limit": {
+      "type": "integer",
+      "minimum": 1,
+      "maximum": 255
+    },
+    "long_retry_limit": {
+      "type": "integer",
+      "minimum": 1,
+      "maximum": 255
+    },
+    "frag_threshold": {
+      "type": "integer",
+      "default": 2346,
+      "minimum": 256,
+      "maximum": 65535
+    },
+    "rts_threshold": {
+      "type": "integer",
+      "default": 2347,
+      "minimum": 0,
+      "maximum": 65535
+    }
+  }
+}
\ No newline at end of file
diff --git a/wifi.wps/wifi.wps.generate_pin.json b/wifi.wps/wifi.wps.generate_pin.json
new file mode 100644
index 0000000000000000000000000000000000000000..4450de4cfb326fee32ed29a096a583ca99b65c4b
--- /dev/null
+++ b/wifi.wps/wifi.wps.generate_pin.json
@@ -0,0 +1,16 @@
+{
+  "definitions": {},
+  "$schema": "wifi.wps.generate_pin",
+  "$id": "iopsys",
+  "type": "object",
+  "required": [
+    "pin"
+  ],
+  "properties": {
+    "pin": {
+      "type": "string",
+      "minLength": 8,
+      "maxLength": 8
+    }
+  }
+}
\ No newline at end of file
diff --git a/wifi.wps/wifi.wps.setpin.json b/wifi.wps/wifi.wps.setpin.json
new file mode 100644
index 0000000000000000000000000000000000000000..85b9bb7ce8e6a98d96a8317d77857fbde942e82d
--- /dev/null
+++ b/wifi.wps/wifi.wps.setpin.json
@@ -0,0 +1,5 @@
+{
+    "definitions": {},
+    "$schema": "wifi.ap.setpin",
+    "$id": "iopsys"
+  }
\ No newline at end of file
diff --git a/wifi.wps/wifi.wps.showpin.json b/wifi.wps/wifi.wps.showpin.json
new file mode 100644
index 0000000000000000000000000000000000000000..8c81270e4be06e0f898332d0317b93ba4be347f6
--- /dev/null
+++ b/wifi.wps/wifi.wps.showpin.json
@@ -0,0 +1,16 @@
+{
+    "definitions": {},
+    "$schema": "wifi.wps.showpin",
+    "$id": "iopsys",
+    "type": "object",
+    "required": [
+      "pin"
+    ],
+    "properties": {
+      "pin": {
+        "type": "string",
+        "minLength": 8,
+        "maxLength": 8
+      }
+    }
+  }
\ No newline at end of file
diff --git a/wifi.wps/wifi.wps.start.json b/wifi.wps/wifi.wps.start.json
new file mode 100644
index 0000000000000000000000000000000000000000..84deb7c32b5abca0836b1d79d5be41446f7530fd
--- /dev/null
+++ b/wifi.wps/wifi.wps.start.json
@@ -0,0 +1,5 @@
+{
+    "definitions": {},
+    "$schema": "wifi.ap.start",
+    "$id": "iopsys"
+  }
\ No newline at end of file
diff --git a/wifi.wps/wifi.wps.status.json b/wifi.wps/wifi.wps.status.json
new file mode 100644
index 0000000000000000000000000000000000000000..ea00bd23c1e50d43cfd7d032b01d979bda5093e2
--- /dev/null
+++ b/wifi.wps/wifi.wps.status.json
@@ -0,0 +1,19 @@
+{
+  "definitions": {},
+  "$schema": "wifi.wps.status",
+  "$id": "iopsys",
+  "type": "object",
+  "required": [
+    "code",
+    "status"
+  ],
+  "properties": {
+    "code": {
+      "type": "integer",
+      "minimum": 0
+    },
+    "status": {
+      "type": "string"
+    }
+  }
+}
\ No newline at end of file
diff --git a/wifi.wps/wifi.wps.stop.json b/wifi.wps/wifi.wps.stop.json
new file mode 100644
index 0000000000000000000000000000000000000000..5b46fb1c718f71e1fa2b0b0d758e314e7c8a729c
--- /dev/null
+++ b/wifi.wps/wifi.wps.stop.json
@@ -0,0 +1,5 @@
+{
+    "definitions": {},
+    "$schema": "wifi.ap.stop",
+    "$id": "iopsys"
+  }
\ No newline at end of file
diff --git a/wifi.wps/wifi.wps.validate_pin.json b/wifi.wps/wifi.wps.validate_pin.json
new file mode 100644
index 0000000000000000000000000000000000000000..eb56f54ab1adc414c044eda7ef2c1d7bcb8673ea
--- /dev/null
+++ b/wifi.wps/wifi.wps.validate_pin.json
@@ -0,0 +1,14 @@
+{
+    "definitions": {},
+    "$schema": "wifi.wps.validate_pin",
+    "$id": "iopsys",
+    "type": "object",
+    "required": [
+      "valid"
+    ],
+    "properties": {
+      "valid": {
+        "type": "boolean"
+      }
+    }
+  }
\ No newline at end of file
diff --git a/wifi/wifi.status.ifelse.json b/wifi/wifi.status.ifelse.json
new file mode 100644
index 0000000000000000000000000000000000000000..7bf0df81eceba759b6b6ff400a79a8c2dc4315c8
--- /dev/null
+++ b/wifi/wifi.status.ifelse.json
@@ -0,0 +1,163 @@
+{
+    "definitions": {},
+    "$schema": "wifi.status",
+    "$id": "iopsys",
+    "type": "object",
+    "required": [
+      "radios"
+    ],
+    "properties": {
+      "radios": {
+        "type": "array",
+        "items": {
+          "type": "object",
+          "required": [
+            "name",
+            "isup",
+            "standard",
+            "country",
+            "band",
+            "channel",
+            "bandwidth",
+            "noise",
+            "rate",
+            "channels",
+            "accesspoints",
+            "backhauls"
+          ],
+          "properties": {
+            "name": {
+              "type": "string",
+              "minLength": 1,
+              "maxLength": 16
+            },
+            "isup": {
+              "type": "boolean",
+            },
+            "standard": {
+              "type": "string",
+              "enum": [
+                "b,g,n", 
+              ],
+            },
+            "country": {
+              "type": "string",
+              "enum": [
+                "DE",
+              ]
+            },
+            "band": {
+              "type": "integer",
+              "enum": [2, 5]
+            },
+            "if": {
+              "properties": {
+                "band": {
+                  "const": 2
+                }
+              }
+            },
+            "then": {
+              "properties": {
+                "channel": {
+                  "required": true,
+                  "type": "integer",
+                  "minimum": 1,
+                  "maximum": 14
+                }
+              }
+            },
+            "else": {
+              "channel": {
+                "required": true,
+                "type": "integer",
+                "minimum": 32,
+                "maximum": 173
+              }
+            },
+            "bandwidth": {
+              "type": "integer",
+              "default": 0,
+              "enum": [10, 20, 40, 80, 160]
+            },
+            "noise": {
+              "type": "integer"
+            },
+            "rate": {
+              "type": "integer"
+            },
+            "channels": {
+              "type": "array",
+              "items": {
+                "type": "integer"
+              }
+            },
+            "accesspoints": {
+              "type": "array",
+              "items": {
+                "type": "object",
+                "required": [
+                  "ifname",
+                  "status",
+                  "ssid",
+                  "bssid"
+                ],
+                "properties": {
+                  "ifname": {
+                    "type": "string",
+                    "minLength": 1,
+                    "maxLength": 16
+                  },
+                  "status": {
+                    "type": "string",
+                    "enum": [ "running", ]
+                  },
+                  "ssid": {
+                    "type": "string",
+                    "minLength": 0,
+                    "maxLength": 32
+                  },
+                  "bssid": {
+                    "type": "string",
+                    "pattern": "^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$"
+                  }
+                }
+              }
+            },
+            "backhauls": {
+              "type": "array",
+              "items": {
+                "type": "object",
+                "required": [
+                  "ifname",
+                  "status",
+                  "ssid",
+                  "bssid"
+                ],
+                "properties": {
+                  "ifname": {
+                    "type": "string",
+                    "minLength": 1,
+                    "maxLength": 16
+                  },
+                  "status": {
+                    "type": "string",
+                    "enum": [ "running", ]
+                  },
+                  "ssid": {
+                    "type": "string",
+                    "minLength": 0,
+                    "maxLength": 32
+                  },
+                  "bssid": {
+                    "type": "string",
+                    "pattern": "^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$"
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
\ No newline at end of file
diff --git a/wifi/wifi.status.json b/wifi/wifi.status.json
new file mode 100644
index 0000000000000000000000000000000000000000..15a83eaf512ee81b0e1b41d3ee83eaff78f8aa3c
--- /dev/null
+++ b/wifi/wifi.status.json
@@ -0,0 +1,141 @@
+{
+    "definitions": {},
+    "$schema": "wifi.status",
+    "$id": "iopsys",
+    "type": "object",
+    "required": [
+      "radios"
+    ],
+    "properties": {
+      "radios": {
+        "type": "array",
+        "items": {
+          "type": "object",
+          "required": [
+            "name",
+            "isup",
+            "standard",
+            "country",
+            "band",
+            "channel",
+            "bandwidth",
+            "noise",
+            "rate",
+            "channels",
+            "accesspoints",
+            "backhauls"
+          ],
+          "properties": {
+            "name": {
+              "type": "string",
+              "minLength": 1,
+              "maxLength": 16
+            },
+            "isup": {
+              "type": "boolean"
+            },
+            "standard": {
+              "type": "string"
+            },
+            "country": {
+              "type": "string",
+              "minLength": 2,
+              "maxLength": 3
+            },
+            "band": {
+              "type": "integer",
+              "enum": [2, 5]
+            },
+            "channel": {
+              "type": "integer",
+              "minimum": 1,
+              "maximum": 200
+            },
+            "bandwidth": {
+              "type": "integer",
+              "enum": [20, 40, 80, 160]
+            },
+            "noise": {
+              "type": "integer",
+              "minimum": -127,
+              "maximum": 0
+            },
+            "rate": {
+              "type": "integer",
+              "minimum": 0
+            },
+            "channels": {
+              "type": "array",
+              "items": {
+                "type": "integer",
+                "minimum": 1,
+                "maximum": 200
+              }
+            },
+            "accesspoints": {
+              "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": {
+                    "type": "string",
+                    "pattern": "^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$"
+                  }
+                }
+              }
+            },
+            "backhauls": {
+              "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": {
+                    "type": "string",
+                    "pattern": "^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$"
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
\ No newline at end of file