And FWIW in v7.9rc1 on RB1100, single quotes works.
I use them for a read for a "dumb admin" to remove at least some stuff that is not going be used, but here is the specific skin I tested:
WORKS...
{
'Quick Set': 1,
WebFig: { name: 'Configuration' },
Interfaces: {
'IP Tunnel': 0,
'GRE Tunnel': 0,
VXLAN: 0,
Bonding: 0,
VRF: 0,
'EoIP Tunnel': 0,
Interface: { name: 'All Interfaces' },
'Interface List': 0,
'LTE Cell Monitor': 0,
'LTE Scanner': 0,
Modem: 0,
Ethernet: { name: 'Ethernet Ports' },
VLAN: { name: 'Virtual LAN (VLANS)' },
VRRP: { name: 'Virtual Routers (VRRP)' }
},
WireGuard: 0,
PPP: 0,
Bridge: {
'Port Extensions': 0,
VLANs: 0,
MSTIs: 0,
'Port MST Overrides': 0,
MDB: 0
},
Mesh: 0,
IP: {
'DHCP Relay': 0,
Hotspot: 0,
Packing: 0,
SMB: 0,
Socks: 0,
'Traffic Flow': 0,
VRF: 0,
'Web Proxy': 0,
'Kid Control': 0,
TFTP: 0,
'DHCP Client': {
'DHCP Client': {
'&': { remove: 0 }
},
'DHCP Client Options': 0
},
'DHCP Server': {
'DHCP Config': 0,
'DHCP Setup': 0,
Options: 0,
'Option Sets': 0,
'Vendor Classes': 0
},
SNMP: 0,
SSH: 0
},
MPLS: 0,
'IPv6': {
'DHCP Client': 0,
'DHCP Relay': 0,
'DHCP Server': 0,
Firewall: 0,
Pool: 0
},
Routing: {
BGP: 0,
OSPF: 0,
RPKI: 0,
Filters: 0,
'IGMP Proxy': 0,
'PIM SM': 0,
RIP: 0
},
System: {
'Auto Upgrade': 0,
Disks: 0,
LEDs: 0,
License: 0,
'NTP Client': 0,
'NTP Server': 0,
'Reset Configuration': 0,
'Special Login': 0,
GPS: {
GPS: {
Channel: 0,
'Init Channel': 0,
'Init String': 0,
'Set System Time': 0
}
},
Certificates: {
'SCEP Servers': 0,
'SCEP RA': 0,
Requests: 0,
OTP: 0,
CRL: 0
}
},
'Dot1X': 0,
RADIUS: 0,
Partition: 0,
Undo: 0,
Redo: 0,
'Safe Mode': 0,
License: 0,
Status: {
Status: {
'4': { alias: 'Interfaces:LTE:*7:General:Type', tab: 'LTE Status' },
'5': { alias: 'Interfaces:LTE:*7:Cellular:Current Operator' },
'6': { alias: 'Interfaces:LTE:*7:Cellular:RSRP' },
'7': { alias: 'Interfaces:LTE:*7:Cellular:RSRQ' },
'8': { alias: 'Interfaces:LTE:*7:Cellular:Primary Band' },
'9': { alias: 'Interfaces:LTE:*7:Cellular:CA Band' },
'10': { alias: 'Interfaces:LTE:*7:Cellular:RSSI' },
'11': { alias: 'Interfaces:LTE:*7:Cellular:SINR' },
'12': { alias: 'Interfaces:LTE:*7:Cellular:CQI' },
'13': { alias: 'Interfaces:LTE:*7:Traffic:Tx/Rx Rate' },
'14': { alias: 'Interfaces:LTE:*7:Traffic:Byte Graph' },
'15': { alias: 'Interfaces:LTE:*7:Traffic:Packet Graph' },
'16': { alias: 'Interfaces:VLAN:*B:General:Name', tab: 'Hardline Internet' },
'18': { alias: 'Interfaces:VLAN:*B:General:VLAN ID' },
'19': { alias: 'Interfaces:VLAN:*B:Traffic:Tx/Rx Rate' },
'20': { alias: 'Interfaces:VLAN:*B:Traffic:Byte Graph' },
'21': { alias: 'IP:DHCP Client:DHCP Client:*2:Status:IP Address' },
'22': { alias: 'IP:DHCP Client:DHCP Client:*2:Status:Gateway' },
'27': { alias: 'Tools:Netwatch:Netwatch:*0:Host:Status' }
}
},
CAPsMAN: 0,
Wireless: {
CAP: 0,
'WPS Client': 0,
Alignment: 0,
Align: 0,
'W60G Station': 0,
'Nstreme Dual': 0,
'Security Profiles': 0,
Channels: 0,
'Interworking Profiles': 0
},
Tools: { 'Flood Ping': 0, Graphing: 0 },
IoT: { Bluetooth: 0, Modbus: 0 },
'Hide Passwords': 0,
ZeroTier: { Instance: 0, name: 'ZeroTier VPN' }
}
If I convert that to valid JSON using double-quotes, skin is ignored by winbox. And all UI is shown...
DOES NOT WORK
{
"Quick Set": 1,
"WebFig": { "name": "Configuration" },
"Interfaces": {
"IP Tunnel": 0,
"GRE Tunnel": 0,
"VXLAN": 0,
"Bonding": 0,
"VRF": 0,
"EoIP Tunnel": 0,
"Interface": { "name": "All Interfaces" },
"Interface List": 0,
"LTE Cell Monitor": 0,
"LTE Scanner": 0,
"Modem": 0,
"Ethernet": { "name": "Ethernet Ports" },
"VLAN": { "name": "Virtual LAN (VLANS)" },
"VRRP": { "name": "Virtual Routers (VRRP)" }
},
"WireGuard": 0,
"PPP": 0,
"Bridge": {
"Port Extensions": 0,
"VLANs": 0,
"MSTIs": 0,
"Port MST Overrides": 0,
"MDB": 0
},
"Mesh": 0,
"IP": {
"DHCP Relay": 0,
"Hotspot": 0,
"Packing": 0,
"SMB": 0,
"Socks": 0,
"Traffic Flow": 0,
"VRF": 0,
"Web Proxy": 0,
"Kid Control": 0,
"TFTP": 0,
"DHCP Client": {
"DHCP Client": { "&": { "remove": 0 } },
"DHCP Client Options": 0
},
"DHCP Server": {
"DHCP Config": 0,
"DHCP Setup": 0,
"Options": 0,
"Option Sets": 0,
"Vendor Classes": 0
},
"SNMP": 0,
"SSH": 0
},
"MPLS": 0,
"IPv6": {
"DHCP Client": 0,
"DHCP Relay": 0,
"DHCP Server": 0,
"Firewall": 0,
"Pool": 0
},
"Routing": {
"BGP": 0,
"OSPF": 0,
"RPKI": 0,
"Filters": 0,
"IGMP Proxy": 0,
"PIM SM": 0,
"RIP": 0
},
"System": {
"Auto Upgrade": 0,
"Disks": 0,
"LEDs": 0,
"License": 0,
"NTP Client": 0,
"NTP Server": 0,
"Reset Configuration": 0,
"Special Login": 0,
"GPS": {
"GPS": {
"Channel": 0,
"Init Channel": 0,
"Init String": 0,
"Set System Time": 0
}
},
"Certificates": {
"SCEP Servers": 0,
"SCEP RA": 0,
"Requests": 0,
"OTP": 0,
"CRL": 0
}
},
"Dot1X": 0,
"RADIUS": 0,
"Partition": 0,
"Undo": 0,
"Redo": 0,
"Safe Mode": 0,
"License": 0,
"Status": {
"Status": {
"4": { "alias": "Interfaces:LTE:*7:General:Type", "tab": "LTE Status" },
"5": { "alias": "Interfaces:LTE:*7:Cellular:Current Operator" },
"6": { "alias": "Interfaces:LTE:*7:Cellular:RSRP" },
"7": { "alias": "Interfaces:LTE:*7:Cellular:RSRQ" },
"8": { "alias": "Interfaces:LTE:*7:Cellular:Primary Band" },
"9": { "alias": "Interfaces:LTE:*7:Cellular:CA Band" },
"10": { "alias": "Interfaces:LTE:*7:Cellular:RSSI" },
"11": { "alias": "Interfaces:LTE:*7:Cellular:SINR" },
"12": { "alias": "Interfaces:LTE:*7:Cellular:CQI" },
"13": { "alias": "Interfaces:LTE:*7:Traffic:Tx/Rx Rate" },
"14": { "alias": "Interfaces:LTE:*7:Traffic:Byte Graph" },
"15": { "alias": "Interfaces:LTE:*7:Traffic:Packet Graph" },
"16": {
"alias": "Interfaces:VLAN:*B:General:Name",
"tab": "Hardline Internet"
},
"18": { "alias": "Interfaces:VLAN:*B:General:VLAN ID" },
"19": { "alias": "Interfaces:VLAN:*B:Traffic:Tx/Rx Rate" },
"20": { "alias": "Interfaces:VLAN:*B:Traffic:Byte Graph" },
"21": { "alias": "IP:DHCP Client:DHCP Client:*2:Status:IP Address" },
"22": { "alias": "IP:DHCP Client:DHCP Client:*2:Status:Gateway" },
"27": { "alias": "Tools:Netwatch:Netwatch:*0:Host:Status" }
}
},
"CAPsMAN": 0,
"Wireless": {
"CAP": 0,
"WPS Client": 0,
"Alignment": 0,
"Align": 0,
"W60G Station": 0,
"Nstreme Dual": 0,
"Security Profiles": 0,
"Channels": 0,
"Interworking Profiles": 0
},
"Tools": { "Flood Ping": 0, "Graphing": 0 },
"IoT": { "Bluetooth": 0, "Modbus": 0 },
"Hide Passwords": 0,
"ZeroTier": { "Instance": 0, "name": "ZeroTier VPN" }
}
Note: It the "Status" page (that only shows in webfig) is why I know... since if you want to make a status page, it needs the RouterOS .id field (e.g. *01) but those can vary between devices, so I have script that can look them up... I tried for a bit a while back to use double-quotes (since JavaScript etc expects "real" JSON)....but found this same problem that winbox really wants the single quotes. I now just use a different branding package per device, so I don't have to use a script to generate them, but the single quotes are needed AFAIK