{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
        "os": {
            "type": "string"
        },
        "text": {
            "type": "string"
        },
        "over": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "graph": {
                        "type": "string"
                    },
                    "text": {
                        "type": "string"
                    }
                },
                "required": ["graph", "text"],
                "additionalProperties": false
            }
        },
        "type": {
            "type": "string"
        },
        "discovery": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "sysObjectID": {"$ref": "#/$defs/oid_group"},
                    "sysObjectID_except":  {"$ref": "#/$defs/oid_group"},
                    "sysObjectID_regex": {"$ref": "#/$defs/regex_group"},
                    "sysObjectID_regex_except": {"$ref": "#/$defs/regex_group"},
                    "sysDescr": {"$ref": "#/$defs/string_group"},
                    "sysDescr_except":  {"$ref": "#/$defs/string_group"},
                    "sysDescr_regex": {"$ref": "#/$defs/regex_group"},
                    "sysDescr_regex_except": {"$ref": "#/$defs/regex_group"},
                    "snmpget": {"$ref": "#/$defs/snmpget"},
                    "snmpget_except": {"$ref": "#/$defs/snmpget"},
                    "snmpwalk": {"$ref": "#/$defs/snmpget"}
                },
                "minProperties": 1,
                "additionalProperties": false,
                "anyOf": [
                    {"required": ["sysObjectID"]},
                    {"required": ["sysObjectID_regex"]},
                    {"required": ["sysDescr"]},
                    {"required": ["sysDescr_regex"]}
                ]
            }
        },
        "group": {
            "type": "string"
        },
        "icon": {
            "type": "string"
        },
        "config_highlighting": {
            "type": "string"
        },
        "poller_modules": {
            "type": "object",
            "properties": {
                "cisco-qfp": {
                    "type": "boolean"
                },
                "cisco-cef": {
                    "type": "boolean"
                },
                "mac-accounting": {
                    "type": "boolean"
                },
                "cisco-remote-access-monitor": {
                    "type": "boolean"
                },
                "slas": {
                    "type": "boolean"
                },
                "cisco-ipsec-flow-monitor": {
                    "type": "boolean"
                },
                "cipsec-tunnels": {
                    "type": "boolean"
                },
                "cisco-otv": {
                    "type": "boolean"
                },
                "cisco-ace-serverfarms": {
                    "type": "boolean"
                },
                "cisco-ace-loadbalancer": {
                    "type": "boolean"
                },
                "entity-state": {
                    "type": "boolean"
                },
                "ipmi": {
                    "type": "boolean"
                },
                "isis": {
                    "type": "boolean"
                },
                "entity-physical": {
                    "type": "boolean"
                },
                "processors": {
                    "type": "boolean"
                },
                "mempools": {
                    "type": "boolean"
                },
                "storage": {
                    "type": "boolean"
                },
                "netstats": {
                    "type": "boolean"
                },
                "hr-mib": {
                    "type": "boolean"
                },
                "ucd-mib": {
                    "type": "boolean"
                },
                "ipSystemStats": {
                    "type": "boolean"
                },
                "ports": {
                    "type": "boolean"
                },
                "bgp-peers": {
                    "type": "boolean"
                },
                "ospf": {
                    "type": "boolean"
                },
                "ospfv3": {
                    "type": "boolean"
                },
                "ucd-diskio": {
                    "type": "boolean"
                },
                "sensors": {
                    "type": "boolean"
                },
                "services": {
                    "type": "boolean"
                },
                "route": {
                    "type": "boolean"
                },
                "stp": {
                    "type": "boolean"
                },
                "ntp": {
                    "type": "boolean"
                },
                "wireless": {
                    "type": "boolean"
                },
                "fdb-table": {
                    "type": "boolean"
                },
                "applications": {
                    "type": "boolean"
                },
                "aruba-controller": {
                    "type": "boolean"
                },
                "mib": {
                    "type": "boolean"
                },
                "printer-supplies": {
                    "type": "boolean"
                },
                "cisco-vpdn": {
                    "type": "boolean"
                },
                "vminfo": {
                    "type": "boolean"
                },
                "vlans": {
                    "type": "boolean"
                },
                "arp-table": {
                    "type": "boolean"
                },
                "mef": {
                    "type": "boolean"
                },
                "cisco-vrf-lite": {
                    "type": "boolean"
                },
                "tnms-nbi": {
                    "type": "boolean"
                },
                "loadbalancers": {
                    "type": "boolean"
                },
                "junose-atm-vp": {
                    "type": "boolean"
                },
                "mpls": {
                    "type": "boolean"
                },
                "netscaler-vsvr": {
                    "type": "boolean"
                },
                "xdsl": {
                    "type": "boolean"
                },
                "port-security": {
                    "type": "boolean"
                }
            },
            "additionalProperties": false
        },
        "polling": {
            "type": "object",
            "properties": {
                "selected_ports": {
                    "type": "boolean"
                }
            },
            "additionalProperties": false
        },
        "discovery_modules": {
            "type": "object",
            "properties": {
                "cisco-qfp": {
                    "type": "boolean"
                },
                "cisco-cef": {
                    "type": "boolean"
                },
                "slas": {
                    "type": "boolean"
                },
                "mac-accounting": {
                    "type": "boolean"
                },
                "cisco-otv": {
                    "type": "boolean"
                },
                "cisco-pw": {
                    "type": "boolean"
                },
                "entity-state": {
                    "type": "boolean"
                },
                "vrf": {
                    "type": "boolean"
                },
                "cisco-vrf-lite": {
                    "type": "boolean"
                },
                "ports": {
                    "type": "boolean"
                },
                "ports-stack": {
                    "type": "boolean"
                },
                "entity-physical": {
                    "type": "boolean"
                },
                "processors": {
                    "type": "boolean"
                },
                "mempools": {
                    "type": "boolean"
                },
                "storage": {
                    "type": "boolean"
                },
                "hr-device": {
                    "type": "boolean"
                },
                "isis": {
                    "type": "boolean"
                },
                "discovery-protocols": {
                    "type": "boolean"
                },
                "bgp-peers": {
                    "type": "boolean"
                },
                "vlans": {
                    "type": "boolean"
                },
                "ucd-diskio": {
                    "type": "boolean"
                },
                "ucd-dsktable": {
                    "type": "boolean"
                },
                "services": {
                    "type": "boolean"
                },
                "stp": {
                    "type": "boolean"
                },
                "ntp": {
                    "type": "boolean"
                },
                "wireless": {
                    "type": "boolean"
                },
                "fdb-table": {
                    "type": "boolean"
                },
                "arp-table": {
                    "type": "boolean"
                },
                "printer-supplies": {
                    "type": "boolean"
                },
                "ipv4-addresses": {
                    "type": "boolean"
                },
                "ipv6-addresses": {
                    "type": "boolean"
                },
                "charge": {
                    "type": "boolean"
                },
                "ospf": {
                    "type": "boolean"
                },
                "ucd-mib": {
                    "type": "boolean"
                },
                "ipmi": {
                    "type": "boolean"
                },
                "mef": {
                    "type": "boolean"
                },
                "ipv6-address": {
                    "type": "boolean"
                },
                "loadbalancers": {
                    "type": "boolean"
                },
                "applications": {
                    "type": "boolean"
                },
                "sensors": {
                    "type": "boolean"
                },
                "diskio": {
                    "type": "boolean"
                },
                "junose-atm-vp": {
                    "type": "boolean"
                },
                "vminfo": {
                    "type": "boolean"
                },
                "mpls": {
                    "type": "boolean"
                },
                "ip6-addresses": {
                    "type": "boolean"
                },
                "xdsl": {
                    "type": "boolean"
                }
            },
            "additionalProperties": false
        },
        "ifname": {
            "type": "boolean"
        },
        "ifalias": {
            "type": "boolean"
        },
        "mib_dir": {
            "type":  "string"
        },
        "good_if": {
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "oids": {
            "type": "object",
            "properties": {
                "no_bulk": {
                    "type": "array"
                },
                "unordered": {
                    "type": "array"
                }
            },
            "additionalProperties": false
        },
        "snmp_bulk": {
            "type": "boolean"
        },
        "snmp_max_oid": {
            "type": "integer",
            "minimum": 1
        },
    "snmp":{
        "type": "object",
        "properties": {
            "max_repeaters": {
                "type": "integer",
                "minimum": 1
            }
        },
        "additionalProperties": false
    },
    "syslog_hook": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "regex": {
                        "type": "string"
                    },
                    "script": {
                        "type": "string"
                    }
                },
                "required": ["regex", "script"],
                "additionalProperties": false
            }
        },
        "ifXmcbc": {
            "type": "boolean"
        },
        "rfc1628_compat": {
            "type": "boolean"
        },
        "empty_ifdescr": {
            "type": "boolean"
        },
        "bad_entity_sensor_regex": {"$ref": "#/$defs/regex_group"},
        "bad_if": {
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "bad_ifXEntry": {
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "bad_iftype": {
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "bad_ifoperstatus": {
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "processor_stacked": {
            "type": "boolean"
        },
        "disabled_sensors": {
            "type": "object",
            "patternProperties": {
                ".": {"type": "boolean"}
            }
        },
        "disabled_sensors_regex": {"$ref": "#/$defs/regex_group"},
        "bad_ifname_regexp": {"$ref": "#/$defs/regex_group"},
        "bad_if_regexp": {"$ref": "#/$defs/regex_group"},
        "bad_snmpEngineTime": {
            "type": "boolean"
        },
        "bad_uptime": {
            "type": "boolean"
        },
        "ignore_mount_string": {
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "ignore_mount_regexp": {
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "ignore_mount_type": {
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "ignore_vlans": {
            "type": "array",
            "items": {
                "type": "integer"
            }
        },
        "bad_hrSystemUptime": {
            "type": "boolean"
        },
        "icons": {
            "type": "array",
            "items": {
                "type": "string"
            }
        }
    },
    "additionalProperties": false,
    "required": [
        "os",
        "text",
        "type",
        "discovery"
    ],
    "$defs": {
        "string_group": {
            "oneOf": [
                {
                    "type": "string"
                },
                {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            ]
        },
        "oid_group": {
            "oneOf": [
                {
                    "type": "string",
                    "pattern": "^(\\.\\d+)+\\.?$"
                },
                {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "pattern": "^(\\.\\d+)+\\.?$"
                    }
                }
            ]
        },
        "regex_group": {
            "oneOf": [
                {
                    "type": "string"
                },
                {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            ]
        },
        "snmpget": {
            "type": "object",
            "properties": {
                "oid": {
                    "$ref": "oid_types.json#/$defs/oid"
                },
                "op": {
                    "$ref": "#/$defs/comparison"
                },
                "value": {
                    "anyOf": [
                        {
                            "type": [
                                "boolean",
                                "string"
                            ]
                        },
                        {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    ]
                },
                "mib_dir": {
                    "type": "string"
                },
                "options": {
                    "type": "string",
                    "pattern": "^-"
                }
            },
            "additionalProperties": false,
            "required": [
                "oid",
                "value"
            ]
        },
        "comparison": {
            "type": "string",
            "enum": [
                "=",
                "!=",
                "==",
                "!==",
                "<=",
                ">=",
                "<",
                ">",
                "starts",
                "ends",
                "contains",
                "regex",
                "not_starts",
                "not_ends",
                "not_contains",
                "not_regex",
                "in_array",
                "not_in_array",
                "exists"
            ]
        }
    }
}
