Response format
type field; most have an id that is used as the key in interaction payloads.
Components
text
text
divider
divider
Renders a horizontal rule to visually separate sections of the canvas.No interaction.
string
required
Must be
"divider".input
input
Renders a single-line text input. Submitted value is posted as Interaction: submitting the input posts
{ [id]: <value> }.string
required
Must be
"input".string
required
Unique identifier. Used as the key in the interaction payload.
string
required
Placeholder text shown inside the input field.
string
Optional label rendered above the input field.
boolean
When
true, pressing Enter or the submit arrow submits the form immediately.{ "input-action-search": "<entered value>" }.textarea
textarea
Renders a multi-line text area. Follows the same interaction model as Interaction: submitting the textarea posts
input.string
required
Must be
"textarea".string
required
Unique identifier. Used as the key in the interaction payload.
string
required
Placeholder text shown inside the textarea.
string
Optional label rendered above the textarea.
boolean
When
true, pressing Enter or the submit arrow submits the form immediately.{ "create-item-description": "<entered value>" }.dropdown
dropdown
Renders a select dropdown populated with a list of options. When the admin picks an option, its Interaction: selecting an option posts
id is posted back.string
required
Must be
"dropdown".string
required
Unique identifier. Used as the key in the interaction payload.
string
required
Label displayed above the dropdown.
array
required
Array of option objects, each with:
id— value posted when this option is selected.text— label displayed in the dropdown.
{ "create-item-project": "proj_abc" }.link
link
list
list
Renders a labeled list of items. Each item is either a selectable Interaction: selecting the first option posts
"option" or a "link". When the admin selects an option item, the item’s id is posted under the list’s id.string
required
Must be
"list".string
required
Unique identifier for the list. Used as the key in the interaction payload.
string
required
Heading displayed above the list.
array
required
Array of item objects. Each item is one of:
{ "type": "option", "id": <value>, "text": <string> }— a selectable row. When clicked, posts{ [list.id]: <item.id> }. Theidcan be a nested object (for example{ "item_id": 42, "project_id": "p1" }), and the whole object is posted back.{ "type": "link", "href": <string>, "text": <string> }— a row that opens a URL. No interaction is posted.
{ "link-item-list": { "item_id": 42, "project_id": "p1" } }.Conditional visibility
Any component accepts an optionalcondition object. When present, Sleekplan shows the component only when the value of the field identified by condition.value matches the string in condition.key.
create-item-project field currently holds the value "proj_abc".
Inline errors
To display a section-level error, return the first element with anerror key instead of a type key.
