Optional fields are marked with a *
Text
The text field is an ordinary single-line text box:

{
"type": "text",
"key": String,
"caption": String,
"default": String, *
"required": Boolean *
}Text Area
The textarea field is an ordinary multi-line text box:

{
"type": "textarea",
"key": String,
"caption": String,
"default": String, *
"required": Boolean *
}Checkbox
The checkbox field is a simple boolean toggle switch:

{
"type": "checkbox",
"key": String,
"caption": String,
"default": Boolean, *
}Select
The select field type is a list of multiple choices where one option can be selected. (key = value shown in editor and value = property value received by the template).

{
"type": "select",
"key": String,
"caption": String,
"options": [
{ "key": String, "value": String }
],
"default": String, *
"required": Boolean *
}Content
The content field type is a file picker, where the user can either upload a new file or choose an existing file from the content library.
Default can only be used with predefined contents but path will be created if it does not exist. Note that either content or default is required.
All paths in options are relative to the template's contentBasePath.

{
"type": "content",
"key": String,
"caption": String,
"options": [
{
"path": "backgrounds"
},
{
"content": "logos/store.jpg"
}
],
"default": "logos/store.jpg", *
"defaultId": "xxxxxx", *
"required": Boolean *
}Section
Sections provide a way to visually group related fields into expandable/collapsable sections, sometimes refered to as an "accordion". Using sections can significantly improve the user experience when a template has a lot of fields.
Sections always start out collapsed; the user needs to click each section to expand it.
Nested sections are supported.

{
"type": "section",
"key": "options",
"caption": "More options",
"children": [
{
"type": "text",
"key": "option1",
"caption": "Option 1"
},
{
"type": "text",
"key": "option2",
"caption": "Option 2"
}
]
}