Skip to main content
A form is the object stored in a function’s form key. The same structure can be nested under another form’s form key. Omitted values use the defaults shown below.

Form structure and submission

Use JSON booleans and numbers (true, false, 10) rather than quoted values ("true", "10") in new setup. This keeps the configuration unambiguous.

Scan and relationship behavior

Feature support

featureSupport is an object. The client reads these top-level capability keys: For example:
hasLocation: true remains available for older configurations. When location is enabled, Dsync adds Location only when a location value is available on the device.

UI options

Use the ui object for bottom-sheet presentation:
For existing configurations without ui, the client also reads the legacy flat keys isSheetDismissable and disableSheetUploadButton. Prefer the nested ui object for new setup.

Form-level devices

The form can declare device profile IDs once for its device components. The client accepts a single string, a comma-separated string, or a JSON array under device, devices, or deviceIds.
A device component can override the form-level declaration with its own deviceIds or deviceOperations. If a form declares multiple device IDs, use deviceOperations to map operations to their device instead of relying on an implicit target.

Formulas

Each formula object uses formulaId as its name and formula as its expression:
Use a named formula from a component’s defaultValue with ${display_label}. See Write your first formula for expression syntax.

Keys intentionally excluded

childIdColumn and allowNFC are legacy values parsed into the local form model but are not used by the current function UI behavior. Do not add them to new function setup. Runtime values such as parent data, context, generated form IDs, and component state are also not setup keys.

Continue

Last modified on September 7, 2026