Overview
Dynamic Forms use a tree structure composed of different node types. Each node has a type field that contains type-specific properties and a value field. The node type is identified by the name property.
This page documents all possible node types that can be returned by Dynamic Forms APIs (both Templates and Sheets).
Common Structure
All node types extend a base structure:
{
"name": "<type-name>",
"value": <type-specific-value>
}
Node Types
1. Text (inputText)
Description: A text input field with optional length constraints.
Value Type: String
Properties:
-
minLength(Long, optional): Minimum text length -
maxLength(Long, optional): Maximum text length -
minThresholdLength(Long, optional): Minimum text threshold length -
maxThresholdLength(Long, optional): Maximum text threshold length
Example JSON:
{
"name": "inputText",
"value": "Sample text",
"minLength": 5,
"maxLength": 100,
"minThresholdLength": 10,
"maxThresholdLength": 95,
}
2. Long (inputLong)
Description: A numeric input field for integer values.
Value Type: Long
Properties:
-
minValue(Long, optional): Minimum allowed value -
maxValue(Long, optional): Maximum allowed value -
minThresholdValue(Long, optional): Minimum allowed threshold value -
maxThresholdValue(Long, optional): Maximum allowed threshold value
Example JSON:
{
"name": "inputLong",
"value": 42,
"minValue": 0,
"maxValue": 1000
"minThresholdValue":5,
"maxThresholdValue":995
}
3. Double (inputDouble)
Description: A numeric input field for decimal values.
Value Type: Double
Properties:
-
minValue(Double, optional): Minimum allowed value -
maxValue(Double, optional): Maximum allowed value -
maxIntegerDigits(Long, optional): Maximum number of integer digits -
maxDecimalDigits(Long, optional): Maximum number of decimal digits -
minThresholdValue(Long, optional): Minimum allowed threshold value -
maxThresholdValue(Long, optional): Maximum allowed threshold value
Example JSON:
{
"name": "inputDouble",
"value": 123.45,
"minValue": 0.0,
"maxValue": 999.99,
"maxIntegerDigits": 3,
"maxDecimalDigits": 2,
"minThresholdValue":5,
"maxThresholdValue":995
}
4. Boolean (inputBoolean)
Description: A boolean input field (true/false).
Value Type: Boolean
Properties: None
Example JSON:
{
"name": "inputBoolean",
"value": true
}
5. Date (inputDate)
Description: A date input field.
Value Type: String (format: yyyy-MM-dd)
Properties:
-
minDate(String, optional): Minimum allowed date (format: yyyy-MM-dd) -
maxDate(String, optional): Maximum allowed date (format: yyyy-MM-dd) -
minDateOffset(Long, optional): Minimum days range allowed to the date value -
maxDateOffset(Long, optional): Maximum days range allowed to the date value
Example JSON:
{
"name": "inputDate",
"value": "2025-10-22",
"minDate": "2025-01-01",
"maxDate": "2025-12-31",
"minDateOffset": 1,
"maxDateOffset": 1
}
6. Time (inputTime)
Description: A time input field.
Value Type: String (format: HH:mm)
Properties: None
Example JSON:
{
"name": "inputTime",
"value": "14:30"
}
7. Datetime (inputDatetime)
Description: A datetime input field with timezone support.
Value Type: Date (ISO 8601 format)
Properties:
-
minDate(ZonedDateTime, optional): Minimum allowed datetime -
maxDate(ZonedDateTime, optional): Maximum allowed datetime -
minDateOffset(Long, optional): Minimum days range allowed to the date value -
maxDateOffset(Long, optional): Maximum days range allowed to the date value -
minHourOffset(Long, optional): Minimum hours range allowed to the date value -
maxHourOffset(Long, optional): Maximum hours range allowed to the date value
Example JSON:
{
"name": "inputDatetime",
"value": "2025-10-22T14:30:00Z",
"minDate": "2025-01-01T00:00:00Z",
"maxDate": "2025-12-31T23:59:59Z",
"minDateOffset": 1,
"maxDateOffset": 1,
"minHourOffset": 1,
"maxHourOffset": 1
}
8. Selection (inputSelection)
Description: A single-selection dropdown field.
Value Type: String (selected option code)
Properties:
-
options(Array): List of available options-
code(String): Option identifier -
description(LocalizedString): Option label in multiple languages -
expressions(expressions): Object-
{ String
visible, Stringreadonly, Stringmandatory, StringinitialValue, StringcomputedValue, LongevaluationOrder, StringshowOnSummary, StringnamingConvention}
-
-
Example JSON:
{
"name": "inputSelection",
"value": "option1",
"options": [
{
"code": "option1",
"description": {"en": "Option 1", "it": "Opzione 1"},
"expressions": {
"visible": "5==2"
}
},
{
"code": "option2",
"description": {"en": "Option 2", "it": "Opzione 2"},
"expressions": {
"visible": "5==2"
}
}
]
}
9. Multi Selection (inputMultiSelection)
Description: A multi-selection dropdown field.
Value Type: Array of Strings (selected option codes)
Properties:
-
options(Array): List of available options (same structure as Selection)
Example JSON:
{
"name": "inputMultiSelection",
"value": ["option1", "option3"],
"options": [
{
"code": "option1",
"description": {"en": "Option 1", "it": "Opzione 1"},
"expressions": {
"visible": "5==2"
}
},
{
"code": "option2",
"description": {"en": "Option 2", "it": "Opzione 2"},
"expressions": {
"visible": "5==2"
}
},
{
"code": "option3",
"description": {"en": "Option 3", "it": "Opzione 3"}
}
]
}
10. Radio (inputRadio)
Description: A radio button group for single selection.
Value Type: String (selected option code)
Properties:
-
options(Array): List of available options (same structure as Selection) -
showAsTable(Boolean, default: false): Display options in table format
Example JSON:
{
"name": "inputRadio",
"value": "yes",
"showAsTable": false,
"options": [
{
"code": "yes",
"description": {"en": "Yes", "it": "Sì"},
"expressions": {
"visible": "5==2"
}
},
{
"code": "no",
"description": {"en": "No", "it": "No"}
}
]
}
11. Checkbox (inputCheckbox)
Description: A checkbox group for multiple selections.
Value Type: Array of Strings (selected option codes)
Properties:
-
options(Array): List of available options (same structure as Selection) -
showAsTable(Boolean, default: false): Display options in table format
Example JSON:
{
"name": "inputCheckbox",
"value": ["feature1", "feature3"],
"showAsTable": false,
"options": [
{
"code": "feature1",
"description": {"en": "Feature 1", "it": "Funzionalità 1"},
"expressions": {
"visible": "5==2"
}
},
{
"code": "feature2",
"description": {"en": "Feature 2", "it": "Funzionalità 2"},
"expressions": {
"visible": "5==2"
}
},
{
"code": "feature3",
"description": {"en": "Feature 3", "it": "Funzionalità 3"}
}
]
}
12. Regular Expression (inputRegEx)
Description: A text input field with regex pattern validation.
Value Type: String
Properties:
-
pattern(String): Regular expression pattern for validation
Example JSON:
{
"name": "inputRegEx",
"value": "ABC123",
"pattern": "^[A-Z]{3}[0-9]{3}$"
}
13. Barcode (inputBarcode)
Description: A barcode scanner input field.
Value Type: String
Properties: None
Example JSON:
{
"name": "inputBarcode",
"value": "1234567890123"
}
14. Coordinates (inputCoordinates)
Description: A geographic coordinates input field.
Value Type: Object with latitude and longitude
Properties: None
Coordinates Object:
-
latitude(Double): Latitude value (-90 to 90) -
longitude(Double): Longitude value (-180 to 180)
Example JSON:
{
"name": "inputCoordinates",
"value": {
"latitude": 45.4642,
"longitude": 9.1900
}
}
15. Attachment (inputAttachment)
Description: A single file attachment field.
Value Type: String (attachment ID or reference)
Properties:
-
maxSizeKb(Long, optional): Maximum file size in kilobytes -
validExtensions(Array of Strings, optional): Allowed file extensions -
category(Category Object)-
code(String): Option identifier -
description(LocalizedString): Option label in multiple languages
-
Valid Extensions: jpg, jpeg, bmp, gif, png, mpg, mp2, mpeg, mpe, mpv, m2v, avi, mov, qt, flv, txt, doc, docx, pdf, rtf, xls, xlsx
Example JSON:
{
"name": "inputAttachment",
"value": "attachment-id-12345",
"maxSizeKb": 5120,
"validExtensions": ["pdf", "doc", "docx"],
"category": {
"code": "001",
"description": [
{
"lang": "de",
"value": "en:Silver"
},
{
"lang": "es",
"value": "en:Silver"
},
{
"lang": "en",
"value": "Silver"
},
{
"lang": "pt",
"value": "en:Silver"
},
{
"lang": "it",
"value": "en:Silver"
}
]
}
}
16. Multi Attachment (inputMultiAttachment)
Description: A multiple file attachment field.
Value Type: Array of Strings (attachment IDs or references)
Properties:
-
maxAttachmentsNumber(Long, optional): Maximum number of attachments allowed -
maxSizeKb(Long, optional): Maximum file size in kilobytes per attachment -
validExtensions(Array of Strings, optional): Allowed file extensions -
category(Category Object)-
code(String): Option identifier -
description(LocalizedString): Option label in multiple languages
-
Example JSON:
{
"name": "inputMultiAttachment",
"value": ["attachment-id-1", "attachment-id-2"],
"maxAttachmentsNumber": 5,
"maxSizeKb": 2048,
"validExtensions": ["jpg", "png", "pdf"],
"category": {
"code": "001",
"description": [
{
"lang": "de",
"value": "en:Silver"
},
{
"lang": "es",
"value": "en:Silver"
},
{
"lang": "en",
"value": "Silver"
},
{
"lang": "pt",
"value": "en:Silver"
},
{
"lang": "it",
"value": "en:Silver"
}
]
}
}
17. Picture (inputPicture)
Description: An image/picture upload field.
Value Type: String (picture ID or reference)
Properties:
-
maxSizeKb(Long, optional): Maximum file size in kilobytes -
validExtensions(Array of Strings, optional): Allowed file extensions
Valid Extensions: jpg, jpeg, bmp, gif, png
Example JSON:
{
"name": "inputPicture",
"value": "picture-id-67890",
"maxSizeKb": 3072,
"validExtensions": ["jpg", "jpeg", "png"]
}
18. Signature (inputSignature)
Description: A digital signature capture field.
Value Type: String (signature image ID or reference)
Properties:
-
maxSizeKb(Long, optional): Maximum file size in kilobytes -
validExtensions(Array of Strings, optional): Allowed file extensions
Valid Extensions: jpg, jpeg
Example JSON:
{
"name": "inputSignature",
"value": "signature-id-11111",
"maxSizeKb": 1024,
"validExtensions": ["jpg", "jpeg"]
}
19. Download Attachment (inputDownloadAttachment)
Description: A read-only attachment that can be downloaded.
Value Type: String (attachment ID or reference)
Properties:
-
fileName(String): Name of the file -
contentType(String): MIME type of the file -
showPreview(Boolean, default: false): Whether to show a preview
Example JSON:
{
"name": "inputDownloadAttachment",
"value": "download-attachment-id-22222",
"fileName": "manual.pdf",
"contentType": "application/pdf",
"showPreview": true
}
20. Matrix (inputMatrix)
Description: A matrix/table input field that allows users to create and manage tabular data with customizable columns and rows.
Value Type: Object (BODataCollectionNodeMatrix)
Properties:
-
numColumns(Long, optional, default: 4): Number of columns in the matrix -
columnHeaders(Array): List of column header definitions-
column(Long): Column identifier (0-based index) -
description(String): Column header label -
group(Boolean, default: false): Whether this column is a grouping column
-
-
rows(Array): List of matrix rows-
row(Long): Row identifier -
columns(Array): List of column values for this row-
column(Long): Column identifier (0-based index) -
description(String): Cell value
-
-
-
selectedRow(Long, optional): ID of the currently selected row
Example JSON:
{
"name": "inputMatrix",
"value": {
"numColumns": 3,
"columnHeaders": [
{
"column": 0,
"description": "Item",
"group": false
},
{
"column": 1,
"description": "Quantity",
"group": false
},
{
"column": 2,
"description": "Notes",
"group": false
}
],
"rows": [
{
"row": 1,
"columns": [
{
"column": 0,
"description": "Product A"
},
{
"column": 1,
"description": "10"
},
{
"column": 2,
"description": "In stock"
}
]
},
{
"row": 2,
"columns": [
{
"column": 0,
"description": "Product B"
},
{
"column": 1,
"description": "5"
},
{
"column": 2,
"description": "Low stock"
}
]
}
],
"selectedRow": 1
}
}
Notes:
-
The matrix supports dynamic row creation and deletion
-
Column headers can be configured to support grouping functionality
-
All cell values are stored as strings in the
descriptionfield -
The default number of columns is 4 if not specified
-
Row and column identifiers are Long values (typically 0-based for columns)
-
The
selectedRowproperty indicates which row is currently selected in the UI
21. Section (section)
Description: A container/section node for organizing other nodes.
Value Type: null (sections don't have values)
Properties: None
Example JSON:
{
"name": "section",
"value": null
}
Node Type Summary Table
|
Type Name |
Description |
Value Type |
Additional Properties |
|---|---|---|---|
|
inputText |
Text input |
String |
minLength, maxLength |
|
inputLong |
Integer number input |
Long |
minValue, maxValue |
|
inputDouble |
Decimal number input |
Double |
minValue, maxValue, maxIntegerDigits, maxDecimalDigits |
|
inputBoolean |
Boolean input |
Boolean |
- |
|
inputDate |
Date input |
String (yyyy-MM-dd) |
minDate, maxDate |
|
inputTime |
Time input |
String (HH:mm) |
- |
|
inputDatetime |
Datetime input |
Date (ISO 8601) |
minDate, maxDate |
|
inputSelection |
Single selection dropdown |
String |
options[] |
|
inputMultiSelection |
Multi selection dropdown |
Array<String> |
options[] |
|
inputRadio |
Radio button group |
String |
options[], showAsTable |
|
inputCheckbox |
Checkbox group |
Array<String> |
options[], showAsTable |
|
inputRegEx |
Text with regex validation |
String |
pattern |
|
inputBarcode |
Barcode scanner |
String |
- |
|
inputCoordinates |
Geographic coordinates |
Object {latitude, longitude} |
- |
|
inputAttachment |
Single file attachment |
String |
maxSizeKb, validExtensions[] |
|
inputMultiAttachment |
Multiple file attachments |
Array<String> |
maxAttachmentsNumber, maxSizeKb, validExtensions[] |
|
inputPicture |
Picture/image upload |
String |
maxSizeKb, validExtensions[] |
|
inputSignature |
Digital signature |
String |
maxSizeKb, validExtensions[] |
|
inputDownloadAttachment |
Downloadable attachment |
String |
fileName, contentType, showPreview |
|
section |
Container/section |
null |
- |
Related APIs
These node types are used in the following Dynamic Forms APIs:
Dynamic Forms Templates
-
GET /documents/dynamic-forms/r1/templates/{templateId}/releases/{releaseId}/models - Returns the tree model for a specific template release
-
GET /documents/dynamic-forms/r1/templates/{templateId}/releases/current/models - Returns the tree model for the current template release
-
GET documents/dynamic-forms/r1/templates/{templateId}/working-copies/models - Returns the tree model for the template working copy
-
PATCH /documents/dynamic-forms/r1/templates/{templateId}/working-copies/models - Updates the tree model for the template working copy
Dynamic Forms Sheets
-
GET /documents/dynamic-forms/r1/sheets/{sheetId}/models - Returns the tree model with all nodes and their types for a sheet
-
PATCH /documents/dynamic-forms/r1/sheets/{sheetId}/nodes - Updates node values (fill-in) for a sheet