Skip to content

Update Component Preset

PATCH
/api/v1/workspaces/{workspace_id}/component_presets/{id}
curl --request PATCH \
--url https://example.com/%7B%7Bapp_url%7D/api/v1/workspaces/1/component_presets/1 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "name": "example", "email_design_system_id": 1, "default_locale": "example", "component_instance": { "id": "bd1c1b82-1a7b-4f0f-b079-30c1d4189bed", "name": "My Component", "component_name": "Headline", "conditional_id": 1, "inline_conditional": { "default_syntax": { "closing": "{% endif %}", "branch_values": { "gold_membership": "{% if membership == '\''gold'\'' %}", "silver_membership": "{% elsif membership == '\''silver'\'' %}" } }, "branches": [ { "key": "gold_membership", "label": "Gold Membership" } ], "dynamic_content_profile_syntaxes": { "additionalProperty": { "closing": "{% endif %}", "branch_values": { "gold_membership": "{% if membership == '\''gold'\'' %}", "silver_membership": "{% elsif membership == '\''silver'\'' %}" }, "uses_ui_picker": false, "ui_picker_state": { "include_else_branch": false, "branches": { "gold": { "joiner": "and", "conditions": [ { "field": "profile.tier", "type": "string", "operator": "equals", "value": "gold" } ] } } } } } }, "field_values": { "additionalProperty": { "additionalProperty": { "additionalProperty": { "value": "example", "link_tracking_parameters": { "additionalProperty": "example" } } } } }, "hidden_from_locales": { "additionalProperty": true }, "link_tracking_parameters": { "branch_content": { "additionalProperty": { "additionalProperty": { "additionalProperty": "example" } } } } } }'

Updates a component preset.

  • OAuth2
    component_presets:write
workspace_id
required
integer

Workspace ID

id
required
integer

Component Preset ID

Media typeapplication/json
object
name
string
email_design_system_id
integer
default_locale
string
component_instance
object
id
required
string format: uuid
Example
bd1c1b82-1a7b-4f0f-b079-30c1d4189bed
name
string
Example
My Component
component_name
required

The name of the component definition this instance is based on.

string
Example
Headline
conditional_id

The ID of a saved conditional applied to this component instance. When set, inline_conditional must not be set. The component renders a separate variant for each branch of the conditional.

integer | null
Example
1
inline_conditional
One of:

A conditional definition owned by a single component instance in an email.

object
default_syntax
required
object
closing
required

The closing syntax tag for the conditional block.

string
Example
{% endif %}
branch_values

Key-value pairs where the key is the branch key and the value is the opening syntax for that branch.

object
key
additional properties
string
Example
{
"gold_membership": "{% if membership == 'gold' %}",
"silver_membership": "{% elsif membership == 'silver' %}"
}
branches
required
Array<object>
object
key
required
string
Example
gold_membership
label
required
string
Example
Gold Membership
dynamic_content_profile_syntaxes
required
object
key
additional properties

A per-DynamicContentProfile syntax entry on a Conditional. Either a manually-authored {closing, branch_values} pair or a picker-authored {uses_ui_picker, ui_picker_state} pair — the two modes are mutually exclusive.

object
closing

Manual mode only. The closing syntax tag for the conditional block.

string
Example
{% endif %}
branch_values

Manual mode only. Key-value pairs where the key is the branch key and the value is the opening syntax for that branch.

object
key
additional properties
string
Example
{
"gold_membership": "{% if membership == 'gold' %}",
"silver_membership": "{% elsif membership == 'silver' %}"
}
uses_ui_picker

When true, the syntax for this dynamic content profile was authored via the UI picker for the profile’s template engine preset. When false or absent, it was defined manually.

boolean
Example
false
ui_picker_state
One of:

State authored via the conditional UI picker. Rendered on read (by the template engine preset) into a {closing, branch_values} syntax.

object
include_else_branch
required

When true, the final branch of the parent Conditional is rendered as an else branch and its key is omitted from branches below.

boolean
Example
false
branches
required

Picker state keyed by branch key. Includes one entry per non-else branch; when include_else_branch is true the final branch key is omitted.

object
key
additional properties

Picker-authored state for a single non-else branch of a conditional.

object
joiner
required

How multiple conditions combine (e.g. “and”, “or”). Always present for a stable shape; only semantically meaningful when conditions has more than one entry. Must be one of the joiners allowed by the preset — see template_engine_preset_schema.joiners.

string
Example
and
conditions
required

Conditions that must all (or any, depending on joiner) hold for this branch to match. At least one entry required.

Array<object>
>= 1 items

A single condition within a picker branch. Validated server-side against the profile’s template engine preset capabilities.

object
field
required

The reference the template engine reads when evaluating this condition (e.g. “profile.tier”).

string
Example
profile.tier
type
required

Declared value type. Drives the allowed operators and the shape of value.

string
Allowed values: string number boolean
Example
string
operator
required

One of the operators the preset allows for the declared type. See template_engine_preset_schema.operators_by_type[type] on the associated DynamicContentProfile.

string
Example
equals
value

The value being compared against. Always a string on the wire; the preset renderer decides how to format it based on type (quoted for “string”, raw for “number”/“boolean”). Required when the operator’s definition has requires_value=true; null (or absent) when requires_value=false.

string | null
Example
gold
Example
{
"gold": {
"joiner": "and",
"conditions": [
{
"field": "profile.tier",
"type": "string",
"operator": "equals",
"value": "gold"
}
]
}
}
field_values

Field values organized by branch key.

object
key
additional properties

Field values organized by locale code.

object
key
additional properties

Field values keyed by liquid variable name.

object
key
additional properties
object
value
required
One of:
string
link_tracking_parameters

Link tracking parameter values specific to this field.

object
key
additional properties
string
hidden_from_locales

A map of locale codes to boolean values indicating whether this component instance is hidden for that locale.

object
key
additional properties
boolean
Example
true
link_tracking_parameters
object
branch_content

Per-component-instance link tracking parameter values, organized by branch key, then by locale code.

object
key
additional properties
object
key
additional properties

A map of link tracking parameter names to their values for this component instance.

object
key
additional properties
string

Successful

Media typeapplication/json
object
id
required
integer
name
required
string
component_name
required

The name of the component definition this preset is based on.

string
component_instance
required
object
id
required
string format: uuid
name
string
component_name
required

The name of the component definition this instance is based on.

string
conditional_id

The ID of a saved conditional applied to this component instance. When set, inline_conditional must not be set. The component renders a separate variant for each branch of the conditional.

integer | null
inline_conditional
One of:

A conditional definition owned by a single component instance in an email.

object
default_syntax
required
object
closing
required

The closing syntax tag for the conditional block.

string
branch_values

Key-value pairs where the key is the branch key and the value is the opening syntax for that branch.

object
key
additional properties
string
branches
required
Array<object>
object
key
required
string
label
required
string
dynamic_content_profile_syntaxes
required
object
key
additional properties

A per-DynamicContentProfile syntax entry on a Conditional. Either a manually-authored {closing, branch_values} pair or a picker-authored {uses_ui_picker, ui_picker_state} pair — the two modes are mutually exclusive.

object
closing

Manual mode only. The closing syntax tag for the conditional block.

string
branch_values

Manual mode only. Key-value pairs where the key is the branch key and the value is the opening syntax for that branch.

object
key
additional properties
string
uses_ui_picker

When true, the syntax for this dynamic content profile was authored via the UI picker for the profile’s template engine preset. When false or absent, it was defined manually.

boolean
ui_picker_state
One of:

State authored via the conditional UI picker. Rendered on read (by the template engine preset) into a {closing, branch_values} syntax.

object
include_else_branch
required

When true, the final branch of the parent Conditional is rendered as an else branch and its key is omitted from branches below.

boolean
branches
required

Picker state keyed by branch key. Includes one entry per non-else branch; when include_else_branch is true the final branch key is omitted.

object
key
additional properties

Picker-authored state for a single non-else branch of a conditional.

object
joiner
required

How multiple conditions combine (e.g. “and”, “or”). Always present for a stable shape; only semantically meaningful when conditions has more than one entry. Must be one of the joiners allowed by the preset — see template_engine_preset_schema.joiners.

string
conditions
required

Conditions that must all (or any, depending on joiner) hold for this branch to match. At least one entry required.

Array<object>
>= 1 items

A single condition within a picker branch. Validated server-side against the profile’s template engine preset capabilities.

object
field
required

The reference the template engine reads when evaluating this condition (e.g. “profile.tier”).

string
type
required

Declared value type. Drives the allowed operators and the shape of value.

string
Allowed values: string number boolean
operator
required

One of the operators the preset allows for the declared type. See template_engine_preset_schema.operators_by_type[type] on the associated DynamicContentProfile.

string
value

The value being compared against. Always a string on the wire; the preset renderer decides how to format it based on type (quoted for “string”, raw for “number”/“boolean”). Required when the operator’s definition has requires_value=true; null (or absent) when requires_value=false.

string | null
field_values

Field values organized by branch key.

object
key
additional properties

Field values organized by locale code.

object
key
additional properties

Field values keyed by liquid variable name.

object
key
additional properties
object
value
required
One of:
string
link_tracking_parameters

Link tracking parameter values specific to this field.

object
key
additional properties
string
hidden_from_locales

A map of locale codes to boolean values indicating whether this component instance is hidden for that locale.

object
key
additional properties
boolean
link_tracking_parameters
object
branch_content

Per-component-instance link tracking parameter values, organized by branch key, then by locale code.

object
key
additional properties
object
key
additional properties

A map of link tracking parameter names to their values for this component instance.

object
key
additional properties
string
email_design_system_id
required
integer
default_locale
required

The locale used as the default when rendering or screenshotting this preset.

string
screenshot_url
required

URL of the rendered preset screenshot.

string | null
locales
required

Locales present in the preset content. Derived from the component instance on save; not user-settable.

Array<string>
branches
required

Branch keys present in the preset content. Derived from the component instance on save; not user-settable.

Array<string>
created_at
required
string format: date-time
updated_at
required
string format: date-time
Example
{
"id": 12345,
"name": "Black Friday hero",
"component_name": "Headline",
"component_instance": {
"id": "bd1c1b82-1a7b-4f0f-b079-30c1d4189bed",
"name": "My Component",
"component_name": "Headline",
"conditional_id": 1,
"inline_conditional": {
"default_syntax": {
"closing": "{% endif %}",
"branch_values": {
"gold_membership": "{% if membership == 'gold' %}",
"silver_membership": "{% elsif membership == 'silver' %}"
}
},
"branches": [
{
"key": "gold_membership",
"label": "Gold Membership"
}
],
"dynamic_content_profile_syntaxes": {
"additionalProperty": {
"closing": "{% endif %}",
"branch_values": {
"gold_membership": "{% if membership == 'gold' %}",
"silver_membership": "{% elsif membership == 'silver' %}"
},
"uses_ui_picker": false,
"ui_picker_state": {
"include_else_branch": false,
"branches": {
"gold": {
"joiner": "and",
"conditions": [
{
"field": "profile.tier",
"type": "string",
"operator": "equals",
"value": "gold"
}
]
}
}
}
}
}
},
"hidden_from_locales": {
"additionalProperty": true
}
},
"email_design_system_id": 12345,
"default_locale": "en-US",
"screenshot_url": "https://placehold.co/600x400?text=Preset",
"locales": [
"en-GB"
],
"branches": [
"default"
],
"created_at": "2023-08-23T10:30:00.000Z",
"updated_at": "2023-08-23T10:30:00.000Z"
}

Unauthorized

Media typeapplication/json
object
message
required
string
Example
{
"message": "Record not found"
}

Forbidden

Media typeapplication/json
object
message
required
string
Example
{
"message": "Record not found"
}

Not Found

Media typeapplication/json
object
message
required
string
Example
{
"message": "Record not found"
}

Unprocessable Entity

Media typeapplication/json
object
message
required
string
errors
required
object
key
additional properties
Array<string>
Example
{
"errors": {
"username": [
"Username is required.",
"Username must be unique."
],
"email": [
"Invalid email format."
]
}
}