From b091afcff540ed2917850b4d04ee733867f5a670 Mon Sep 17 00:00:00 2001
From: Jakob Olsson <Jakob Olsson>
Date: Tue, 12 Nov 2019 15:59:19 +0100
Subject: [PATCH] combine each object type to single schema file

---
 wifi.ap.json    | 770 ++++++++++++++++++++++++++++++++++++++++++++++++
 wifi.json       | 150 ++++++++++
 wifi.radio.json | 297 +++++++++++++++++++
 wifi.wps.json   |  87 ++++++
 4 files changed, 1304 insertions(+)
 create mode 100644 wifi.ap.json
 create mode 100644 wifi.json
 create mode 100644 wifi.radio.json
 create mode 100644 wifi.wps.json

diff --git a/wifi.ap.json b/wifi.ap.json
new file mode 100644
index 0000000..c156ec7
--- /dev/null
+++ b/wifi.ap.json
@@ -0,0 +1,770 @@
+{
+	"definitions": {},
+	"$schema": "wifi.ap",
+	"$id": "iopsys",
+	"properties": {
+		"add_neighbor": {
+			"definitions": {},
+			"$schema": "add_neighbor",
+			"$id": "iopsys"
+		},
+		"del_neighbor": {
+			"definitions": {},
+			"$schema": "del_neighbor",
+			"$id": "iopsys"
+		},
+		"request_neighbor": {
+			"definitions": {},
+			"$schema": "request_neighbor",
+			"$id": "iopsys"
+		},
+		"request_transition": {
+			"definitions": {},
+			"$schema": "request_transition",
+			"$id": "iopsys"
+		},
+		"monitor": {
+			"definitions": {},
+			"$schema": "monitor",
+			"$id": "iopsys"
+		},
+		"add_vendor_ie": {
+			"definitions": {},
+			"$schema": "add_vendor_ie",
+			"$id": "iopsys"
+		},
+		"del_vendor_ie": {
+			"definitions": {},
+			"$schema": "del_vendor_ie",
+			"$id": "iopsys"
+		},
+		"disconnect": {
+			"definitions": {},
+			"$schema": "disconnect",
+			"$id": "iopsys"
+		},
+		"status": {
+			"definitions": {},
+			"$schema": "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"
+						}
+					}
+				}
+			}
+		},
+		"stats": {
+			"definitions": {},
+			"$schema": "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
+				}
+			}
+		},
+		"stations": {
+			"definitions": {},
+			"$schema": "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
+						}
+					}
+					}
+				}
+				}
+			}
+		},
+		"list_neighbor": {
+			"definitions": {},
+			"$schema": "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
+						}
+						}
+					}
+				}
+			}
+		},
+		"assoclist": {
+			"definitions": {},
+			"$schema": "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.json b/wifi.json
new file mode 100644
index 0000000..d890fce
--- /dev/null
+++ b/wifi.json
@@ -0,0 +1,150 @@
+{
+    "definitions": {},
+    "$schema": "wifi",
+    "$id": "iopsys",
+    "type": "object",
+    "properties": {
+        "status": {
+            "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
diff --git a/wifi.radio.json b/wifi.radio.json
new file mode 100644
index 0000000..d3310dc
--- /dev/null
+++ b/wifi.radio.json
@@ -0,0 +1,297 @@
+{
+    "definitions": {},
+    "$schema": "wifi.radio",
+    "$id": "iopsys",
+    "properties": {
+        "autochannel": {
+            "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"
+                }
+            }
+        },
+        "get": {
+            "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"
+                }
+            }
+        },
+        "scan": {
+            "definitions": {},
+            "$schema": "wifi.radio.iface",
+            "$id": "iopsys"
+        },
+        "scanresults": {
+            "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
+                            }
+                        }
+                    }
+                }
+            }
+        },
+        "stats": {
+            "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
+                }
+            }
+        },
+        "status": {
+            "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.json b/wifi.wps.json
new file mode 100644
index 0000000..0bd063a
--- /dev/null
+++ b/wifi.wps.json
@@ -0,0 +1,87 @@
+{
+    "definitions": {},
+    "$schema": "wifi.ap.stop",
+    "$id": "iopsys",
+    "properties": {
+        "generate_pin": {
+            "definitions": {},
+            "$schema": "wifi.wps.generate_pin",
+            "$id": "iopsys",
+            "type": "object",
+            "required": [
+                "pin"
+            ],
+            "properties": {
+                "pin": {
+                    "type": "string",
+                    "minLength": 8,
+                    "maxLength": 8
+                }
+            }
+        },
+        "setpin": {
+            "definitions": {},
+            "$schema": "wifi.ap.setpin",
+            "$id": "iopsys"
+        },
+        "showpin": {
+            "definitions": {},
+            "$schema": "wifi.wps.showpin",
+            "$id": "iopsys",
+            "type": "object",
+            "required": [
+                "pin"
+            ],
+            "properties": {
+                "pin": {
+                    "type": "string",
+                    "minLength": 8,
+                    "maxLength": 8
+                }
+            }
+        },
+        "start": {
+            "definitions": {},
+            "$schema": "wifi.ap.start",
+            "$id": "iopsys"
+        },
+        "status": {
+            "definitions": {},
+            "$schema": "wifi.wps.status",
+            "$id": "iopsys",
+            "type": "object",
+            "required": [
+                "code",
+                "status"
+            ],
+            "properties": {
+                "code": {
+                    "type": "integer",
+                    "minimum": 0
+                },
+                "status": {
+                    "type": "string"
+                }
+            }
+        },
+        "stop": {
+            "definitions": {},
+            "$schema": "wifi.ap.stop",
+            "$id": "iopsys"
+        },
+        "validate_pin": {
+            "definitions": {},
+            "$schema": "wifi.wps.validate_pin",
+            "$id": "iopsys",
+            "type": "object",
+            "required": [
+                "valid"
+            ],
+            "properties": {
+                "valid": {
+                    "type": "boolean"
+                }
+            }
+        }
+    }
+  }
\ No newline at end of file
-- 
GitLab