[
  ["update", "o", {"title": "Firmware updater"}],
  ["update.timeout", "i", {"title": "Update will be aborted if it does not finish within this time"}],
  ["update.commit_timeout", "i", {"title": "After applying update, wait for commit up to this long"}],
  ["update.url", "s", {"title": "Fetch updates form here"}],
  ["update.interval", "i", {"title": "Check for updates this often"}],
  ["update.ssl_ca_file", "s", {"title": "TLS CA file"}],
  ["update.ssl_client_cert_file", "s", {"title": "TLS client cert file"}],
  ["update.ssl_server_name", "s", {"title": "TLS Server Name"}],
  ["update.enable_post", "b", {"title": "Enable POST updates"}],
  ["device", "o", {"title": "Device settings"}],
  ["device.id", "s", {"title": "Device ID"}],
  ["device.password", "s", {"title": "Device password"}],
  ["debug", "o", {"title": "Debug Settings"}],
  ["debug.udp_log_addr", "s", {"title": "Send logs to this ip:port (UDP)"}],
  ["debug.mbedtls_level", "i", {"title": "mbedTLS debug level"}],
  ["debug.level", "i", {"title": "Level", "type": "select", "values": [{"title": "NONE", "value": -1}, {"title": "ERROR", "value": 0}, {"title": "WARN", "value": 1}, {"title": "INFO", "value": 2}, {"title": "DEBUG", "value": 3}, {"title": "VERBOSE_DEBUG", "value": 4}]}],
  ["debug.filter", "s", {"title": "Log filter against source file name or function name. Comma separated list of prefix match glob patterns, e.g. *mqtt*,mgos_wifi"}],
  ["debug.stdout_uart", "i", {"title": "STDOUT UART (-1 to disable)"}],
  ["debug.stderr_uart", "i", {"title": "STDERR UART (-1 to disable)"}],
  ["debug.factory_reset_gpio", "i", {"title": "Factory reset GPIO (low on boot)"}],
  ["debug.mg_mgr_hexdump_file", "s", {"title": "File name to hexdump network traffic to. Use '-' for stdout, '--' for stderr."}],
  ["debug.stdout_topic", "s", {"title": "MQTT topic to publish STDOUT to"}],
  ["debug.stderr_topic", "s", {"title": "MQTT topic to publish STDERR to"}],
  ["sys", "o", {"title": "System settings"}],
  ["sys.mount", "o", {"title": "Extra filesystem to mount"}],
  ["sys.mount.path", "s", {"title": "Mount point"}],
  ["sys.mount.dev_type", "s", {"title": "Storage device type"}],
  ["sys.mount.dev_opts", "s", {"title": "Storage device options"}],
  ["sys.mount.fs_type", "s", {"title": "Filesystem type"}],
  ["sys.mount.fs_opts", "s", {"title": "Filesystem options"}],
  ["sys.tz_spec", "s", {"title": "See formats for the TZ env var: \"man tzset\". Formats like \":/path/to/file\" are not supported"}],
  ["sys.wdt_timeout", "i", {"title": "Watchdog timeout (seconds)"}],
  ["sys.pref_ota_lib", "s", {"title": "Preferred ota lib, e.g. dash, ota-http-client"}],
  ["sys.atca", "o", {"title": "CryptoAuthLib configuration"}],
  ["sys.atca.enable", "b", {"title": "Enable the chip"}],
  ["sys.atca.i2c_addr", "i", {"title": "I2C address of the chip"}],
  ["sys.atca.ecdh_slots_mask", "i", {"title": "Which slots can be used for ECDH (bitmask)"}],
  ["conf_acl", "s", {"title": "Conf ACL"}],
  ["i2c", "o", {"title": "I2C settings"}],
  ["i2c.enable", "b", {"title": "Enable I2C"}],
  ["i2c.freq", "i", {"title": "Clock frequency"}],
  ["i2c.debug", "b", {"title": "Debug I2C bus activity"}],
  ["i2c.sda_gpio", "i", {"title": "GPIO to use for SDA"}],
  ["i2c.scl_gpio", "i", {"title": "GPIO to use for SCL"}],
  ["wifi", "o", {"hide": true}],
  ["wifi.sta", "o", {"title": "WiFi Station"}],
  ["wifi.sta.enable", "b", {"title": "Connect to existing WiFi"}],
  ["wifi.sta.ssid", "s", {"title": "SSID"}],
  ["wifi.sta.pass", "s", {"title": "Password", "type": "password"}],
  ["wifi.sta.user", "s", {"title": "Username for WPA-PEAP mode"}],
  ["wifi.sta.anon_identity", "s", {"title": "Anonymous identity for WPA mode"}],
  ["wifi.sta.cert", "s", {"title": "Client certificate for WPA-TTLS mode"}],
  ["wifi.sta.key", "s", {"title": "Client key for WPA-TTLS mode"}],
  ["wifi.sta.ca_cert", "s", {"title": "CA certificate for WPA-enterprise mode"}],
  ["wifi.sta.ip", "s", {"title": "Static IP Address"}],
  ["wifi.sta.netmask", "s", {"title": "Static Netmask"}],
  ["wifi.sta.gw", "s", {"title": "Static Default Gateway"}],
  ["wifi.sta.nameserver", "s", {"title": "DNS Server"}],
  ["wifi.sta.dhcp_hostname", "s", {"title": "Host name to include in DHCP requests"}],
  ["wifi.ap", "o", {"title": "WiFi Access Point"}],
  ["wifi.ap.enable", "b", {"title": "Enable"}],
  ["wifi.ap.ssid", "s", {"title": "SSID"}],
  ["wifi.ap.pass", "s", {"title": "Password", "type": "password"}],
  ["wifi.ap.hidden", "b", {"title": "Hide SSID"}],
  ["wifi.ap.channel", "i", {"title": "Channel"}],
  ["wifi.ap.max_connections", "i", {"title": "Max connections"}],
  ["wifi.ap.ip", "s", {"title": "IP address"}],
  ["wifi.ap.netmask", "s", {"title": "Network Mask"}],
  ["wifi.ap.gw", "s", {"title": "Default Gateway"}],
  ["wifi.ap.dhcp_start", "s", {"title": "DHCP Start Address"}],
  ["wifi.ap.dhcp_end", "s", {"title": "DHCP End Address"}],
  ["wifi.ap.trigger_on_gpio", "i", {"title": "Trigger AP on low GPIO"}],
  ["wifi.ap.disable_after", "i", {"title": "If > 0, will disable itself after the specified number of seconds"}],
  ["wifi.ap.hostname", "s", {"title": "If not empty, DNS server will resolve given host name to the IP address of AP"}],
  ["wifi.ap.keep_enabled", "b", {"title": "Keep AP enabled when station is on"}],
  ["http", "o", {"title": "HTTP Server"}],
  ["http.enable", "b", {"title": "Enable HTTP Server"}],
  ["http.listen_addr", "s", {"title": "Listening port / address"}],
  ["http.document_root", "s", {"title": "Root for serving files. Setting to empty disables file serving."}],
  ["http.ssl_cert", "s", {"title": "Turn on SSL on the listener, use this cert"}],
  ["http.ssl_key", "s", {"title": "SSL key to use"}],
  ["http.ssl_ca_cert", "s", {"title": "Verify clients this CA bundle"}],
  ["http.upload_acl", "s", {"title": "Upload file ACL"}],
  ["http.hidden_files", "s", {"title": "Hidden file pattern"}],
  ["http.auth_domain", "s", {"title": "Enable authentication of all HTTP requests"}],
  ["http.auth_file", "s", {"title": "Password file to use for auth"}],
  ["mqtt", "o", {"title": "MQTT settings"}],
  ["mqtt.enable", "b", {"title": "Enable MQTT"}],
  ["mqtt.server", "s", {"title": "MQTT server"}],
  ["mqtt.client_id", "s", {"title": "ClientID t send to the broker. Defaults to device.id."}],
  ["mqtt.user", "s", {"title": "User name"}],
  ["mqtt.pass", "s", {"title": "Password"}],
  ["mqtt.reconnect_timeout_min", "d", {"title": "Starting reconnect timeout"}],
  ["mqtt.reconnect_timeout_max", "d", {"title": "Maximum reconnect timeout"}],
  ["mqtt.ssl_cert", "s", {"title": "Client certificate to present to the server"}],
  ["mqtt.ssl_key", "s", {"title": "Private key corresponding to the certificate"}],
  ["mqtt.ssl_ca_cert", "s", {"title": "Verify server certificate using this CA bundle"}],
  ["mqtt.ssl_cipher_suites", "s", {"title": "Cipher suites to offer to the server"}],
  ["mqtt.ssl_psk_identity", "s", {"title": "PSK identity (must specify PSK cipher suites)"}],
  ["mqtt.ssl_psk_key", "s", {"title": "PSK key"}],
  ["mqtt.clean_session", "b", {"title": "Clean Session"}],
  ["mqtt.keep_alive", "i", {"title": "Keep alive interval"}],
  ["mqtt.will_topic", "s", {"title": "Will topic"}],
  ["mqtt.will_message", "s", {"title": "Will message"}],
  ["mqtt.max_qos", "i", {"title": "Limit QoS of outgoing messages to at most this"}],
  ["mqtt.recv_mbuf_limit", "i", {"title": "Limit recv buffer size"}],
  ["shadow", "o", {"title": "Device shadow settings"}],
  ["shadow.lib", "s", {"title": "Preferred shadow lib, e.g. aws, dash, gcp"}],
  ["aws", "o", {"title": "AWS settings"}],
  ["aws.thing_name", "s", {"title": "Set thing name. If not specified, device.id is used"}],
  ["aws.greengrass", "o", {"title": "AWS Greengrass settings"}],
  ["aws.greengrass.enable", "b", {"title": "Enable AWS Greengrass service"}],
  ["aws.greengrass.reconnect_timeout_min", "i", {"title": "Starting reconnect timeout"}],
  ["aws.greengrass.reconnect_timeout_max", "i", {"title": "Maximum reconnect timeout"}],
  ["rpc", "o", {"title": "RPC settings"}],
  ["rpc.enable", "b", {"title": "Enable RPC"}],
  ["rpc.max_frame_size", "i", {"title": "Max Frame Size"}],
  ["rpc.max_queue_length", "i", {"title": "Max Queue Length"}],
  ["rpc.default_out_channel_idle_close_timeout", "i", {"title": "Default idle close timeout for outbound channels"}],
  ["rpc.acl_file", "s", {"title": "File with RPC ACL JSON"}],
  ["rpc.auth_domain", "s", {"title": "Realm to use for digest authentication"}],
  ["rpc.auth_file", "s", {"title": "File with user credentials in the htdigest format"}],
  ["rpc.ws", "o", {"title": "RPC over WebSocket settings"}],
  ["rpc.ws.enable", "b", {"title": "Enable RPC over WebSocket"}],
  ["rpc.ws.server_address", "s", {"title": "Cloud server address"}],
  ["rpc.ws.reconnect_interval_min", "i", {"title": "Minimal reconnect interval"}],
  ["rpc.ws.reconnect_interval_max", "i", {"title": "Maximal reconnect interval"}],
  ["rpc.ws.ssl_server_name", "s", {"title": "TLS Server Name"}],
  ["rpc.ws.ssl_ca_file", "s", {"title": "TLS CA file"}],
  ["rpc.ws.ssl_client_cert_file", "s", {"title": "TLS client cert file"}],
  ["rpc.mqtt", "o", {"title": "RPC over MQTT settings"}],
  ["rpc.mqtt.enable", "b", {"title": "Enable RPC over MQTT"}],
  ["rpc.mqtt.topic", "s", {"title": "Topic to use for RPC requests and responses. The default is ${device.id}/rpc"}],
  ["rpc.uart", "o", {"title": "RPC-over-UART settings"}],
  ["rpc.uart.uart_no", "i", {"title": "UART number (-1 to disable)"}],
  ["rpc.uart.baud_rate", "i", {"title": "Baud rate"}],
  ["rpc.uart.fc_type", "i", {"title": "Flow control: 0 - none, 1 - CTS/RTS, 2 - XON/XOFF"}],
  ["rpc.uart.wait_for_start_frame", "b", {"title": "Wait for an incoming frame before using the channel"}],
  ["dash", "o", {"title": "Device management dashboard settings"}],
  ["dash.enable", "b", {"title": "Enable"}],
  ["dash.token", "s", {"title": "Access token"}],
  ["dash.server", "s", {"title": "Server address"}],
  ["dash.ca_file", "s", {"title": "CA file"}],
  ["dash.send_logs", "b", {"title": "Send logs"}],
  ["dash.stats_interval", "i", {"title": "Stats interval in seconds. Set to 0 to disable"}],
  ["dash.ota_chunk_size", "i", {"title": "OTA download chunk size in bytes"}],
  ["dns_sd", "o", {"title": "DNS-SD service discovery"}],
  ["dns_sd.enable", "b", {"title": "Enable service discovery"}],
  ["dns_sd.host_name", "s", {"title": "DNS-SD host name. '?' chars will be expanded with MAC address hex digits"}],
  ["dns_sd.txt", "s", {"title": "Extra comma-separated key=value pairs to put into the TXT service record"}],
  ["dns_sd.ttl", "i", {"title": "Time-to-live in seconds"}],
  ["gcp", "o", {"title": "GCP IOT settings"}],
  ["gcp.enable", "b", {"title": "Enable GCP IOT"}],
  ["gcp.project", "s", {"title": "Project ID"}],
  ["gcp.region", "s", {"title": "Region name"}],
  ["gcp.registry", "s", {"title": "Device registry name"}],
  ["gcp.device", "s", {"title": "Device name"}],
  ["gcp.key", "s", {"title": "Private key to use for token signing"}],
  ["gcp.token_ttl", "i", {"title": "Life time of the token"}],
  ["sntp", "o", {"title": "SNTP settings"}],
  ["sntp.enable", "b", {"title": "Enable SNTP"}],
  ["sntp.server", "s", {"title": "Server address"}],
  ["sntp.retry_min", "i", {"title": "Minimum retry interval"}],
  ["sntp.retry_max", "i", {"title": "Maximum retry interval"}],
  ["sntp.update_interval", "i", {"title": "Update interval. If 0, performs a one-off sync"}],
  ["spi", "o", {"title": "SPI settings"}],
  ["spi.enable", "b", {"title": "Enable SPI"}],
  ["spi.debug", "b", {"title": "Debug SPI bus activity"}],
  ["spi.miso_gpio", "i", {"title": "GPIO to use for MISO"}],
  ["spi.mosi_gpio", "i", {"title": "GPIO to use for MOSI"}],
  ["spi.sclk_gpio", "i", {"title": "GPIO to use for SCLK"}],
  ["spi.cs0_gpio", "i", {"title": "GPIO to use for CS0"}],
  ["spi.cs1_gpio", "i", {"title": "GPIO to use for CS1"}],
  ["spi.cs2_gpio", "i", {"title": "GPIO to use for CS2"}],
  ["pins", "o", {"title": "Pins layout"}],
  ["pins.led", "i", {"title": "LED GPIO pin"}],
  ["pins.button", "i", {"title": "Button GPIO pin"}],
  ["mjs", "o", {"title": "mJS settings"}],
  ["mjs.generate_jsc", "b", {"title": "Generate .jsc file when executing any .js file"}]
]
