Config flow
The install wizard: pages, input types, data versus options scope, and the options form.
configFlow in the manifest is the form a person completes when adding your integration. It uses
the same page / input model as smart-app preferences, restricted to the community input types.
"configFlow": {
"pages": [
{ "id": "connect", "title": "Connect", "inputs": [
{ "key": "host", "label": "Host or IP", "type": "string", "required": true, "scope": "data" },
{ "key": "token", "label": "API token", "type": "password", "required": true, "scope": "data" }
]},
{ "id": "tuning", "title": "Polling", "inputs": [
{ "key": "pollSeconds", "label": "Poll every (seconds)", "type": "number", "default": 30, "minValue": 5, "maxValue": 600, "scope": "options" },
{ "key": "units", "label": "Units", "type": "enum", "options": [{ "value": "c", "label": "°C" }, { "value": "f", "label": "°F" }], "scope": "options" }
]}
]
}Scope
scope | Stored in | Changing it |
|---|---|---|
data (default) | ctx.entry.data | not editable after install; the person deletes and re-adds the entry |
options | ctx.entry.options | editable later through the options form; triggers optionsUpdated (or a reload) |
Put identity in data (host, account, credentials) and tunables in options (intervals, units,
feature toggles).
Options form
By default the options form shows every options-scoped input. Provide optionsFlow for a
different layout or extra explanatory pages.
Secrets
Every config value is masked in the UI unless its key is listed in exposedConfigFields. List only
non-secrets (host, port). Values never leave the hub except in the encrypted backup.
Input types
The allowed type values are generated on the SDK API reference
(formInputTypes). Options and validation fields match the smart-app
input types where the type exists in both.