Files
ols-ucentral-schema/ucentral.schema.json
2021-05-17 09:59:18 +02:00

1387 lines
43 KiB
JSON

{
"$id": "https://openwrt.org/ucentral.schema.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"uuid": {
"type": "integer"
},
"unit": {
"$ref": "#/$defs/unit"
},
"globals": {
"$ref": "#/$defs/globals"
},
"definitions": {
"$ref": "#/$defs/definitions"
},
"radios": {
"type": "array",
"items": {
"$ref": "#/$defs/radio"
}
},
"interfaces": {
"type": "array",
"items": {
"$ref": "#/$defs/interface"
}
},
"services": {
"$ref": "#/$defs/service"
},
"metrics": {
"$ref": "#/$defs/metrics"
},
"config-raw": {
"$ref": "#/$defs/config-raw"
}
},
"$defs": {
"unit": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"location": {
"type": "string"
},
"timezone": {
"type": "string",
"examples": [
"UTC",
"EST5",
"CET-1CEST,M3.5.0,M10.5.0/3"
]
}
}
},
"globals": {
"type": "object",
"properties": {
"ipv4-network": {
"type": "string",
"format": "uc-cidr4",
"examples": [
"192.168.0.0/16"
]
},
"ipv6-network": {
"type": "string",
"format": "uc-cidr6",
"examples": [
"fdca:1234:4567::/48"
]
}
}
},
"definitions": {
"type": "object",
"properties": {
"wireless-encryption": {
"type": "object",
"patternProperties": {
".+": {
"$ref": "#/interface/ssid/encryption",
"additionalProperties": false
}
}
}
}
},
"radio.he": {
"type": "object",
"properties": {
"multiple-bssid": {
"type": "boolean",
"default": false
},
"ema": {
"type": "boolean",
"default": false
},
"bss-color": {
"type": "integer",
"default": 64
}
}
},
"radio": {
"type": "object",
"properties": {
"band": {
"type": "string",
"enum": [
"2G",
"5G",
"6G"
]
},
"bandwidth": {
"type": "integer",
"enum": [
5,
10,
20
]
},
"channel": {
"oneOf": [
{
"type": "integer",
"maximum": 171,
"minimum": 1
},
{
"type": "string",
"enum": [
"auto"
]
}
]
},
"country": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"examples": [
"US"
]
},
"channel-mode": {
"type": "string",
"enum": [
"HT",
"VHT",
"HE"
]
},
"channel-width": {
"type": "integer",
"enum": [
20,
40,
80,
160,
8080
]
},
"require-mode": {
"type": "string",
"enum": [
"HT",
"VHT",
"HE"
]
},
"mimo": {
"type": "string",
"enum": [
"1x1",
"2x2",
"3x3",
"4x4",
"5x5",
"6x6",
"7x7",
"8x8"
]
},
"tx-power": {
"type": "integer",
"maximum": 30,
"minimum": 0
},
"legacy-rates": {
"type": "boolean",
"default": false
},
"beacon-interval": {
"type": "integer",
"default": 100,
"maximum": 65535,
"minimum": 15
},
"dtim-period": {
"type": "integer",
"default": 2,
"maximum": 255,
"minimum": 1
},
"he-settings": {
"$ref": "#/$defs/radio.he"
},
"hostapd-iface-raw": {
"type": "array",
"items": {
"type": "string",
"examples": [
"ap_table_expiration_time=3600",
"device_type=6-0050F204-1",
"ieee80211h=1",
"rssi_ignore_probe_request=-75",
"time_zone=EST5",
"uuid=12345678-9abc-def0-1234-56789abcdef0",
"venue_url=1:http://www.example.com/info-eng",
"wpa_deny_ptk0_rekey=0"
]
}
}
}
},
"interface.vlan": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 2,
"maximum": 4096
},
"proto": {
"decription": "The L2 vlan tag that shall be added (1q,1ad)",
"type": "string",
"enum": [
"802.1ad",
"802.1q"
],
"default": "802.1q"
}
}
},
"interface.bridge": {
"type": "object",
"properties": {
"mtu": {
"type": "integer",
"maximum": 65535,
"minimum": 256,
"examples": [
1500
]
},
"tx-queue-len": {
"type": "integer",
"examples": [
5000
]
},
"isolate-ports": {
"type": "boolean",
"default": false
}
}
},
"interface.ethernet": {
"type": "object",
"properties": {
"select-ports": {
"type": "array",
"items": {
"type": "string",
"examples": [
"LAN1",
"LAN2",
"LAN3",
"LAN4",
"LAN*",
"WAN*",
"*"
]
}
},
"multicast": {
"type": "boolean",
"default": true
},
"learning": {
"type": "boolean",
"default": true
},
"isolate": {
"type": "boolean",
"default": false
},
"macaddr": {
"type": "string",
"format": "uc-mac"
},
"reverse-path-filter": {
"type": "boolean",
"default": false
}
}
},
"interface.ipv4.dhcp": {
"type": "object",
"properties": {
"lease-first": {
"type": "integer",
"examples": [
10
]
},
"lease-count": {
"type": "integer",
"examples": [
100
]
},
"lease-time": {
"type": "string",
"format": "uc-timeout",
"default": "6h"
}
}
},
"interface.ipv4.dhcp-lease": {
"type": "object",
"properties": {
"macaddr": {
"type": "string",
"format": "uc-mac",
"examples": [
"00:11:22:33:44:55"
]
},
"static-lease-offset": {
"type": "integer",
"examples": [
10
]
},
"lease-time": {
"type": "string",
"format": "uc-timeout",
"default": "6h"
},
"publish-hostname": {
"type": "boolean",
"default": true
}
}
},
"interface.ipv4": {
"type": "object",
"properties": {
"addressing": {
"type": "string",
"enum": [
"dynamic",
"static"
],
"examples": [
"static"
]
},
"subnet": {
"type": "string",
"format": "uc-cidr4",
"examples": [
"auto/24"
]
},
"gateway": {
"type": "string",
"format": "uc-cidr4",
"examples": [
"192.168.1.1"
]
},
"send-hostname": {
"type": "boolean",
"default": true,
"examples": [
true
]
},
"use-dns": {
"type": "array",
"items": {
"type": "string",
"format": "ipv4",
"examples": [
"8.8.8.8",
"4.4.4.4"
]
}
},
"dhcp": {
"$ref": "#/$defs/interface.ipv4.dhcp"
},
"dhcp-leases": {
"type": "array",
"items": {
"$ref": "#/$defs/interface.ipv4.dhcp-lease"
}
}
}
},
"interface.ssid.encryption": {
"type": "object",
"properties": {
"proto": {
"type": "string",
"enum": [
"none",
"psk",
"psk2",
"psk-mixed",
"wpa",
"wpa2",
"wpa-mixed",
"sae",
"sae-mixed",
"wpa3",
"wpa3-mixed"
],
"examples": [
"psk2"
]
},
"key": {
"type": "string",
"maxLength": 63,
"minLength": 8
},
"ieee80211w": {
"type": "string",
"enum": [
"disabled",
"optional",
"required"
],
"default": "disabled"
}
}
},
"interface.ssid.captive": {
"type": "object",
"properties": {
"gateway-name": {
"type": "string",
"default": "uCentral - Captive Portal"
},
"gateway-fqdn": {
"type": "string",
"format": "fqdn",
"default": "ucentral.splash"
},
"maxclients": {
"type": "integer",
"default": 32
},
"upload-rate": {
"type": "integer",
"default": 10000
},
"download-rate": {
"type": "integer",
"default": 10000
},
"upload-quota": {
"type": "integer",
"default": 10000
},
"download-quota": {
"type": "integer",
"default": 10000
}
}
},
"interface.ssid.rrm": {
"type": "object",
"properties": {
"neighbor-reporting": {
"type": "boolean",
"default": false
},
"lci": {
"type": "string"
},
"civic-location": {
"type": "string"
},
"ftm-responder": {
"type": "boolean",
"default": false
},
"stationary-ap": {
"type": "boolean",
"default": false
}
}
},
"interface.ssid.rates": {
"type": "object",
"properties": {
"beacon": {
"type": "integer",
"default": 0,
"enum": [
0,
1000,
2000,
5500,
6000,
9000,
11000,
12000,
18000,
24000,
36000,
48000,
54000
]
},
"multicast": {
"type": "integer",
"default": 0,
"enum": [
0,
1000,
2000,
5500,
6000,
9000,
11000,
12000,
18000,
24000,
36000,
48000,
54000
]
}
}
},
"interface.ssid.rate-limit": {
"type": "object",
"properties": {
"ingress-rate": {
"type": "integer",
"default": 0
},
"egress-rate": {
"type": "integer",
"default": 0
}
}
},
"interface.ssid.roaming": {
"type": "object",
"properties": {
"message-exchange": {
"type": "string",
"enum": [
"air",
"ds"
],
"default": "ds"
},
"generate-psk": {
"type": "boolean",
"default": true
},
"domain-identifier": {
"type": "string",
"maxLength": 4,
"minLength": 4,
"examples": [
"abcd"
]
}
}
},
"interface.ssid.radius.local-user": {
"type": "object",
"properties": {
"mac": {
"type": "string",
"format": "uc-mac"
},
"key": {
"type": "string",
"maxLength": 63,
"minLength": 8
},
"vid": {
"type": "integer",
"maximum": 4096,
"examples": [
3,
100,
200,
4094
]
}
}
},
"interface.ssid.radius.server": {
"type": "object",
"properties": {
"host": {
"type": "string",
"format": "uc-host",
"examples": [
"192.168.1.10"
]
},
"port": {
"type": "integer",
"maximum": 65535,
"minimum": 1024,
"examples": [
1812
]
},
"secret": {
"type": "string",
"examples": [
"secret"
]
},
"request-attribute": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"maximum": 255,
"minimum": 1
},
"value": {
"anyOf": [
{
"type": "integer",
"maximum": 4294967295,
"minimum": 0
},
{
"type": "string"
}
]
}
},
"examples": [
{
"id": 27,
"value": 900
},
{
"id": 32,
"value": "My NAS ID"
},
{
"id": 56,
"value": 1004
},
{
"id": 126,
"value": "Example Operator"
}
]
},
"examples": [
"126:s:Operator"
]
},
"request-cui": {
"type": "boolean",
"default": false
}
}
},
"interface.ssid.radius": {
"type": "object",
"properties": {
"local-users": {
"type": "array",
"items": {
"$ref": "#/$defs/interface.ssid.radius.local-user"
}
},
"authentication": {
"$ref": "#/$defs/interface.ssid.radius.server"
},
"accounting": {
"$ref": "#/$defs/interface.ssid.radius.server",
"properties": {
"interval": {
"type": "integer",
"maximum": 600,
"minimum": 60,
"default": 60
}
}
}
}
},
"interface.ssid.pass-point": {
"type": "object",
"properties": {
"venue-name": {
"type": "string"
},
"venue-group": {
"type": "integer",
"maximum": 32
},
"venue-type": {
"type": "integer",
"maximum": 32
},
"venue-url": {
"type": "string",
"format": "uri"
},
"auth-type": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"terms-and-conditions",
"online-enrollment",
"http-redirection",
"dns-redirection"
]
},
"uri": {
"type": "string",
"format": "uri",
"examples": [
"https://operator.example.org/wireless-access/terms-and-conditions.html",
"http://www.example.com/redirect/me/here/"
]
}
},
"minLength": 2,
"maxLength": 2
},
"domain-name": {
"type": "string",
"format": "hostname"
},
"nai-realm": {
"type": "string"
},
"osen": {
"type": "boolean"
},
"anqp-domain": {
"type": "integer",
"maximum": 65535,
"minimum": 0
},
"friendly-name": {
"type": "string"
},
"icon": {
"type": "array",
"items": {
"type": "object",
"properties": {
"width": {
"type": "integer",
"examples": [
64
]
},
"height": {
"type": "integer",
"examples": [
64
]
},
"type": {
"type": "string",
"examples": [
"image/png"
]
},
"uri": {
"type": "string",
"format": "uri",
"examples": [
"http://example.org/operator-64x64.png"
]
},
"language": {
"type": "string",
"pattern": "^[a-z][a-z][a-z]$",
"examples": [
"eng",
"fre",
"ger",
"ita"
]
}
},
"examples": [
{
"width": 32,
"height": 32,
"type": "image/png",
"uri": "http://example.org/operator-32x32.png",
"language": "eng"
},
{
"width": 64,
"height": 64,
"type": "image/png",
"uri": "http://example.org/operator-64x64.png",
"language": "eng"
},
{
"width": 16,
"height": 16,
"type": "image/gif",
"uri": "data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7",
"language": "eng"
}
]
}
}
}
},
"interface.ssid": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"wifi-bands": {
"type": "array",
"items": {
"type": "string",
"enum": [
"2G",
"5G",
"6G"
]
}
},
"bss-mode": {
"type": "string",
"enum": [
"ap",
"sta",
"mesh",
"wds"
],
"default": "ap"
},
"bssid": {
"type": "string",
"format": "uc-mac"
},
"hidden-ssid": {
"type": "boolean"
},
"isolate-clients": {
"type": "boolean"
},
"power-save": {
"type": "boolean"
},
"rts-threshold": {
"type": "integer",
"maximum": 65535,
"minimum": 1
},
"broadcast-time": {
"type": "boolean"
},
"unicast-conversion": {
"type": "boolean"
},
"encryption": {
"$ref": "#/$defs/interface.ssid.encryption"
},
"captive": {
"$ref": "#/$defs/interface.ssid.captive"
},
"rrm": {
"$ref": "#/$defs/interface.ssid.rrm"
},
"rates": {
"$ref": "#/$defs/interface.ssid.rates"
},
"rate-limit": {
"$ref": "#/$defs/interface.ssid.rate-limit"
},
"roaming": {
"$ref": "#/$defs/interface.ssid.roaming"
},
"radius": {
"$ref": "#/$defs/interface.ssid.radius"
},
"pass-point": {
"$ref": "#/$defs/interface.ssid.pass-point"
},
"hostapd-bss-raw": {
"type": "array",
"items": {
"type": "string",
"examples": [
"ap_table_expiration_time=3600",
"device_type=6-0050F204-1",
"ieee80211h=1",
"rssi_ignore_probe_request=-75",
"time_zone=EST5",
"uuid=12345678-9abc-def0-1234-56789abcdef0",
"venue_url=1:http://www.example.com/info-eng",
"wpa_deny_ptk0_rekey=0"
]
}
}
}
},
"interface.tunnel.mesh": {
"type": "object",
"properties": {
"proto": {
"type": "string",
"enum": [
"mesh"
]
}
}
},
"interface.tunnel.vxlan": {
"type": "object",
"properties": {
"proto": {
"type": "string",
"enum": [
"vxlan"
]
},
"peer-address": {
"type": "string",
"format": "uc-cidr4",
"example": "192.168.100.1"
},
"peer-port": {
"type": "integer",
"maximum": 65535,
"minimum": 1,
"examples": [
4789
]
}
}
},
"interface.tunnel": {
"oneOf": [
{
"$ref": "#/$defs/interface.tunnel.mesh"
},
{
"$ref": "#/$defs/interface.tunnel.vxlan"
}
]
},
"interface": {
"type": "object",
"properties": {
"name": {
"type": "string",
"examples": [
"LAN"
]
},
"role": {
"type": "string",
"enum": [
"upstream",
"downstream"
]
},
"isolate-hosts": {
"type": "boolean"
},
"metric": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0
},
"services": {
"type": "array",
"items": {
"type": "string",
"examples": [
"ssh",
"lldp"
]
}
},
"vlan": {
"$ref": "#/$defs/interface.vlan"
},
"bridge": {
"$ref": "#/$defs/interface.bridge"
},
"ethernet": {
"type": "array",
"items": {
"$ref": "#/$defs/interface.ethernet"
}
},
"ipv4": {
"$ref": "#/$defs/interface.ipv4"
},
"ipv6": {
"ref": "https://ucentral.io/schema/v1/interface/ipv6/"
},
"ssids": {
"type": "array",
"items": {
"$ref": "#/$defs/interface.ssid"
}
},
"tunnel": {
"$ref": "#/$defs/interface.tunnel"
}
}
},
"service.lldp": {
"type": "object",
"properties": {
"describe": {
"type": "string",
"default": "uCentral Access Point"
},
"location": {
"type": "string",
"default": "uCentral Network"
}
}
},
"service.ssh": {
"type": "object",
"properties": {
"port": {
"type": "integer",
"maximum": 65535,
"default": 22
},
"authorized-keys": {
"type": "array",
"items": {
"type": "string",
"examples": [
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC0ghdSd2D2y08TFowZLMZn3x1/Djw3BkNsIeHt/Z+RaXwvfV1NQAnNdaOngMT/3uf5jZtYxhpl+dbZtRhoUPRvKflKBeFHYBqjZVzD3r4ns2Ofm2UpHlbdOpMuy9oeTSCeF0IKZZ6szpkvSirQogeP2fe9KRkzQpiza6YxxaJlWw== user@example",
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ4FDjyCsg+1Mh2C5G7ibR3z0Kw1dU57kfXebLRwS6CL bob@work",
"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBP/JpJ/KHtKKImzISBDwLO0/EwytIr4pGZQXcP6GCSHchLMyfjf147KNlF9gC+3FibzqKH02EiQspVhRgfuK6y0= alice@home"
]
}
},
"password-authentication": {
"type": "boolean",
"default": true
}
}
},
"service.ntp": {
"type": "object",
"properties": {
"servers": {
"type": "array",
"items": {
"type": "string",
"format": "uc-host"
},
"examples": [
"0.openwrt.pool.ntp.org"
]
},
"local-server": {
"type": "boolean",
"examples": [
true
]
}
}
},
"service.mdns": {
"type": "object",
"properties": {
"enable": {
"type": "boolean",
"default": false
}
}
},
"service.rtty": {
"type": "object",
"properties": {
"host": {
"type": "string",
"format": "uc-host",
"examples": [
"192.168.1.10"
]
},
"port": {
"type": "integer",
"maximum": 65535,
"default": 5912
},
"token": {
"type": "string",
"maxLength": 32,
"minLength": 32,
"examples": [
"01234567890123456789012345678901"
]
}
}
},
"service.log": {
"type": "object",
"properties": {
"host": {
"type": "string",
"format": "uc-host",
"examples": [
"192.168.1.10"
]
},
"port": {
"type": "integer",
"maximum": 65535,
"minimum": 100,
"examples": [
2000
]
},
"proto": {
"type": "string",
"enum": [
"tcp",
"udp"
],
"default": "udp"
},
"size": {
"type": "integer",
"minimum": 32,
"default": 1000
}
}
},
"service.http": {
"type": "object",
"properties": {
"http-port": {
"type": "integer",
"maximum": 65535,
"minimum": 1,
"default": 80
}
}
},
"service.igmp": {
"type": "object",
"properties": {
"enable": {
"type": "boolean",
"default": false
}
}
},
"service.wifi-steering": {
"type": "object",
"properties": {
"mode": {
"type": "string",
"enum": [
"local",
"cloud"
],
"examples": [
"local"
]
},
"network": {
"type": "string",
"examples": [
"upstream"
]
},
"key": {
"type": "string",
"examples": [
"secret"
]
}
}
},
"service": {
"type": "object",
"properties": {
"lldp": {
"$ref": "#/$defs/service.lldp"
},
"ssh": {
"$ref": "#/$defs/service.ssh"
},
"ntp": {
"$ref": "#/$defs/service.ntp"
},
"mdns": {
"$ref": "#/$defs/service.mdns"
},
"rtty": {
"$ref": "#/$defs/service.rtty"
},
"log": {
"$ref": "#/$defs/service.log"
},
"http": {
"$ref": "#/$defs/service.http"
},
"igmp": {
"$ref": "#/$defs/service.igmp"
},
"wifi-steering": {
"$ref": "#/$defs/service.wifi-steering"
}
}
},
"metrics.statistics": {
"type": "object",
"properties": {
"interval": {
"type": "integer",
"minimum": 60
},
"types": {
"type": "array",
"items": {
"type": "string",
"enum": [
"ssids",
"lldp",
"clients"
]
}
}
}
},
"metrics.health": {
"type": "object",
"properties": {
"interval": {
"type": "integer",
"minimum": 60
}
}
},
"metrics.wifi-frames": {
"type": "object",
"properties": {
"filters": {
"type": "array",
"items": {
"type": "string",
"enum": [
"probe",
"auth",
"assoc",
"disassoc",
"deauth",
"local-deauth",
"inactive-deauth",
"key-mismatch",
"beacon-report",
"radar-detected"
]
}
}
}
},
"metrics.dhcp-snooping": {
"type": "object",
"properties": {
"filters": {
"type": "array",
"items": {
"type": "string",
"enum": [
"ack",
"discover",
"offer",
"request",
"solicit",
"reply",
"renew"
]
}
}
}
},
"metrics": {
"type": "object",
"properties": {
"statistics": {
"$ref": "#/$defs/metrics.statistics"
},
"health": {
"$ref": "#/$defs/metrics.health"
},
"wifi-frames": {
"$ref": "#/$defs/metrics.wifi-frames"
},
"dhcp-snooping": {
"$ref": "#/$defs/metrics.dhcp-snooping"
}
}
},
"config-raw": {
"type": "array",
"items": {
"type": "array",
"minItems": 2,
"items": {
"type": "string"
},
"examples": [
[
"set",
"system.@system[0].timezone",
"GMT0"
],
[
"delete",
"firewall.@zone[0]"
],
[
"delete",
"dhcp.wan"
],
[
"add",
"dhcp",
"dhcp"
],
[
"add-list",
"system.ntp.server",
"0.pool.example.org"
],
[
"del-list",
"system.ntp.server",
"1.openwrt.pool.ntp.org"
]
]
}
}
}
}