ioBroker JSON UI
ioBroker JSON-based admin user interfaces - config, custom and tabs
| File match |
jsonConfig.json
jsonCustom.json
jsonTab.json
|
|---|---|
| Schema URL | https://catalog.lintel.tools/schemas/schemastore/iobroker-json-ui/latest.json |
| Source | https://raw.githubusercontent.com/ioBroker/json-config/main/schemas/jsonConfig.json |
Validate with Lintel
npx @lintel/lintel check
Definitions
JSON schema for the ObjectBrowserCustomFilter interface from TypeScript.
Note: ioBroker-specific enums (e.g., ObjectType, CommonType) are allowed here as strings or arrays of strings; typical values are mentioned in the description.
Object type(s) in Object Browser, e.g., 'state', 'channel', 'device'. Can be a string or an array of strings.
Filter on common.* properties of the object (e.g., type, role, custom)
3 nested properties
Data type of the state, e.g., 'number', 'string', 'boolean', 'object', 'array', 'mixed'. Accepts string or array of strings.
Role(s) of the state, e.g., 'switch', 'button' or beginning of roles. String or array of strings.
Special filter for common.custom:
- "_" => no custom set (literal underscore)
- "_dataSources" => only data sources (history/sql/influx etc.)
- true => any non-empty custom
- "adapter." or "adapter.0" or general string => specific custom (or prefix) Accepts: boolean true, string or array of strings.
If translations will be provided via files, e.g. in admin/i18n/de/translations.json or provide the path to the i18n folder if it's custom or provide the translations inside this attribute as an object
Type of the element
Placeholder (for text control)
Minimal value
Maximum value
Step size for increase and decrease buttons
Unit (could be multi-language)
Link
Static link or button
Color of the link
icon for button
If button is outlined, contained or text
Style of the button or control itself
Text input
If text must be trimmed or not (default = true)
Shows text as read only field
Shows copy to clipboard button, but only if disabled or read-only
Do not show a clear button
Placeholder (for text control)
default is 1. Set this attribute to 2 or more if you want to have a textarea with more than one row
max rows of textarea. Used only if minRows > 1
If true, the text will be shown as time. The value is readonly automatically
The linked attribute name
Component name that will be provided via props, like ComponentInstancesEditor
Location of the component
If translations will be provided via files, e.g. in admin/i18n/de/translations.json or provide the path to the i18n folder if it's custom or provide the translations inside this attribute as an object
If module written with TypeScript, set it to module. From Admin 7.5.x
Custom properties for the component as an object
Universal type that manages certPublic, certPrivate, certChained and leCollection attributes
Is value encrypted or not (of course only for texts)
Password must be compared with password
True if allow to view the password by toggling the view button
The read-only flag. Visible is automatically true if readOnly is true
Check if the instance is alive. If not defined, it will be used current instance. You can use ${data.number} pattern in the text.
Default text is Instance %s is alive, where %s will be replaced by ADAPTER.0
Default text is Instance %s is not alive, where %s will be replaced by ADAPTER.0
The data to be encoded in the QR Code
The size of the QR code
Foreground color
Background color
QR code level
Command to be sent to the adapter instance. The response must be a string to be encoded in the QR code.
Depends on other attributes and will be re-calculated when other attributes changed
Data to be sent as parsable string, can contain special placeholder. E. g. '{"subject1": "${data.subject}", "options1": {"host": "${data.host}"}}'
Data to be sent as JSON.
If true or a string/multilingual object, the QR code will not be loaded on mount but only after a click. If a string or multilingual object is provided, it will be used as the button text.
The size of the QR code
Foreground color
Background color
QR code error correction level
Show small device cards in the device manager
Show CRON with "minutes", "seconds" and so on
Show simple CRON settings
Command to be sent.
Optional color
sendTo can have icon (base64)
Data to be sent as parsable string, can contain special placeholder. E. g. '{"subject1": "${data.subject}", "options1": {"host": "${data.host}"}}'
Data to be sent as JSON.
{result1: {en: 'A'}, result2: {en: 'B'}}
{error1: {en: 'E'}, error2: {en: 'E2'}}
If outlined or contained
Placeholder (for text control)
if adapter returns result with native attribute it will be used for configuration. If saveConfig is true, the user will be requested to save the configuration
Show spinner while request is in progress
if true - open URL in new tab, if response contains attribute openUrl, like {"openUrl": "http://1.2.3.4:80/aaa", "window": "_blank", "saveConfig": true}. If saveConfig is true, the user will be requested to save the configuration.
if true - execute the button logic once initially
if openUrl is true, this is a name of the new window. Could be overwritten if response consist window attribute. It is not the title of the new window!
[
"_blank",
"_self"
]
Style of the button or control itself
timeout for request in ms. Default: none.
Which object ID should be taken for the controlling. The ID is without "adapter.X." prefix
IF true, the state will be taken from system.adapter.XX.I. and not from XX.I
How the value of the state should be shown
If false, the control will be read only
Unit (could be multi-language)
This text will be shown if the value is true
Style of the text if the value is true
This text will be shown if the value is false
Style of the text if the value is false
This image will be shown if the value is true. It could be base64 or URL
This image will be shown if the value is false. It could be base64 or URL
Minimum value for number or slider
Maximum value for number or slider
Step for number or slider
Delay in ms between the change and the command
Show spinner while request is in progress
Defines if the control is read-only. Applied only to 'input', 'slider', 'select', 'button', 'switch', 'number'
The 'oid' is absolute and no need to add 'adapter.X' or 'system.adapter.X.' to oid
With this flag, the value will appear just after the label
Value should blink when updated (true or color). Only texts
Font size: small, normal, large or number
Add to label the colon at the end if not exist in label
Base64 icon for label
Optional value, that will be sent for button
Show SET button. The value in this case will be sent only when the button is pressed. You can define the text of the button. Default text is "Set" (Only for "input", "number" or "slider")
The value in this case will be sent only when the "Enter" button is pressed. It can be combined with showEnterButton
Number of decimal places to display for numeric values in text/html mode
Options for select in form ["value1", "value2", ...] or [{"value": "value", "label": "Value1"}, "value2", ...]. If not defiled, the common.states in the object must exist.
Name of the adapter. With special name _dataSources you can get all adapters with flag common.getHistory
Optional list of adapters as array of strings, that should be shown. If not defined, all adapters will be shown. Only active if adapter attribute is not defined.
If true. Additional option "deactivate" is shown
If true. Only enabled instances will be shown
Value will look like system.adapter.ADAPTER.0 and not ADAPTER.0
Value will look like 0 and not ADAPTER.0
Add to the options ALL option with value *
Filter for one of the possible types: 'channel', 'device', ... (is state by default)
Show only this root object and its children
Cannot be used together with types settings. Example: {type: ['channel', 'device']} - show only channels and devices
Cannot be used together with types settings. It is a function that will be called for every object and must return true or false. Example: obj.common.type === 'number'
Fill other config fields when an object ID is selected. Format: 'pathInObject=>attr,pathInObject=>attr(X)'. Example: 'common.name=>name,common.color=>color(X)'. Append '(X)' to overwrite non-empty fields.
Placeholder (for text control)
OAuth2 service identifier. Only known services are supported
State name where the token will be saved. Default is 'oauth2Tokens'. The path is relative to the adapter instance, like 'adapterName.X.oauth2Tokens'
Optional scopes divided by space, e.g. user-read-private user-read-email
Optional attribute name where the user's own OAuth Client ID will be stored. If set, an input field for Client ID is shown
Optional attribute name where the user's own OAuth Client Secret will be stored. If set, an input field for Client Secret is shown
Button label for refreshing the token
File extension pattern. Allowed '/.ext' to show all files from sub-folders too, '.ext' to show from root folder or 'folderName/*.ext' to show all files in sub-folder folderName. Default '/.'
Type of files
Object ID of type meta. You can use special placeholder '%INSTANCE%': like 'myAdapter.%INSTANCE%.files'
path, where the uploaded files will be stored. Like 'folderName'. If not defined, no upload field will be shown. To upload in the root, set this field to '/'
Show refresh button near the select
max file size (default 2MB)
show folder name even if all files in same folder
Allow deletion of files
Do not show 'none' option
Do not show size of files
Format passed to the date picker
Configure which views should be shown to the users
[
"hours",
"minutes",
"seconds"
]
Represent the available time steps for each view
{
"hours": 1,
"minutes": 5,
"seconds": 5
}
3 nested properties
Use fullDate or HH:mm:ss. Defaults to full date for backward compatibility reasons.
do not show loopback interface (127.0.0.1)
do not show internal interfaces (normally it is 127.0.0.1 too)
divider between latitude and longitude. Default "," (Used if longitudeName and latitudeName are not defined)
init field with current coordinates if empty
if defined, the longitude will be stored in this attribute, divider will be ignored
if defined, the latitude will be stored in this attribute, divider will be ignored
if defined, the checkbox with "Use system settings" will be shown and latitude, longitude will be read from system.config, a boolean will be saved to the given name
if false, the text will be not validated as JSON
if true, the JSON will be validated only if the value is not empty
if JSON5 format allowed
Do not allow to save the value if error in JSON or JSON5
Open the editor in read-only mode - editor can be opened but content cannot be modified
Default content for JSON Editor
if false, the text will be not validated as YAML
if true, the YAML will be validated only if the value is not empty
Do not allow to save the value if error in YAML
Open the editor in read-only mode - editor can be opened but content cannot be modified
Default content for YAML Editor
Do not save this attribute as used only for internal calculations
Only for panels that has icon attribute.
Filter states for panel or tabs. If true, only states of this adapter will be used. If string, it is a regex to filter states.
If add allowed even if filter is set
Depends on other attributes and will be re-calculated when other attributes changed
Do not show internal IP addresses
Items of the table
Control type
Specify a JSON schema
If translations will be provided via files, e.g. in admin/i18n/de/translations.json or provide the path to the i18n folder if it's custom or provide the translations inside this attribute as an object
Consists of objects representing e.g. a single tab