Customisers
update_customiser_option_section
destructive writeUpdate customiser option section
Change the heading, the text or a step-wide switch of one option family step in the customer customiser, one family at a time.
Overview
Applies a JSON merge patch to the section of one option family of one customiser: the step heading and text the customer customiser shows above that family options, and the step-wide switches some families carry (border_margin_cm on sizes, optional, optional_label and optional_default_none on backlights, hidden on jackets). Only the members present change, and a member the family section does not carry is refused. It requires the customisers:write scope, takes an optional idempotency_key for replay, and supports dry_run.
Permission
Requires thecustomisers:writepermission. A connection without it answersinsufficient_scopenaming the permission to approve.
Annotations
Prerequisites
- A customiser id from list_customisers.
- The section current values, from get_customiser_option_section, so the patch is built against what is there now.
- A merchant has connected this store and approved the customisers:write scope.
Side effects
- Changes the section of one option family of one customiser, creating the stored section on its first write.
- Writes title, description and optional_label as customiser text in the authoring language, replacing an unpublished Languages draft of the same text.
- Clears the customiser cached storefront configuration.
Arguments
The customiser id, from list_customisers.
Which option family section to patch. The values are the option_type values of the option tools for the twelve families that have a section.
One of: backboard, backlight, colour, font, icon, jacket, letter_type, material, mounting, mounting_colour, size, support_finish
The RFC 7396 merge patch to apply. Every family accepts title and description; sizes add border_margin_cm (or border_margin_in with authored_units, and unit_revision), backlights add optional, optional_label and optional_default_none, and jackets add hidden. A member set to null clears a nullable field. Read the section first with get_customiser_option_section.
An optional client-generated key unique to this logical write, such as a UUID. Repeating the call with the same key and the same arguments replays the original result; the route does not require one.
When true, the patch is checked against the family section and the customiser sign type is checked and nothing is written: the result is the same verdict the apply would have reached, and a problem the apply would have raised comes back as the same tool error. Defaults to false. A dry run claims no key.
Result
The patched section as it now stands, and the replaced Languages draft keys when the write replaced any. A dry run returns the update verdict instead and writes nothing.
The family whose section was patched.
One of: backboard, backlight, colour, font, icon, jacket, letter_type, material, mounting, mounting_colour, size, support_finish
The section document as it now stands, with the members get_customiser_option_section returns. Absent on a dry run.
Present and true only when dry_run was requested.
Present only on a dry run, and always true: a failing dry run returns a tool error instead.
Present only on a dry run: the update verdict.
True when this call replayed a previously recorded response for the same idempotency_key instead of applying the write again.
The translation keys of the unpublished Languages drafts that this write replaced in the authoring language. This member is present only when the write replaced a draft. Tell the merchant that the replaced draft is gone.
Error cases
border_margin_cm and border_margin_in disagree. Send one of them, or both with the exact projection.
The customiser was deleted after the recorded update. Issue a new key and re-check the resource before writing again.
The connection was approved without customisers:write.
The customiser sign type does not offer this family, so its section cannot be changed.
The store option-write budget is spent. Wait retry_after seconds.
No customiser with that id exists in this store.
The Store unit preferences changed after the unit_revision the patch sent. Read the Store again and re-send the patch.
The patch names a member this family section does not carry, or a read-only member such as customiser_id or updated_at. Remove the field named by pointer.
A patched value is the wrong type or out of range, such as a title over 255 characters or a null hidden. The pointer names it.
Rename the fonts step
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_customiser_option_section",
"arguments": {
"customiser_id": 42,
"option_type": "font",
"patch": {
"title": "Choose your font"
}
}
}
}{
"jsonrpc": "2.0",
"id": 1,
"result": {
"structuredContent": {
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t",
"store": {
"id": 12,
"name": "Demo Signs"
},
"customiser_id": 42,
"option_type": "font",
"section": {
"customiser_id": 42,
"title": "Choose your font",
"description": null,
"updated_at": "2026-11-14T09:12:31Z"
},
"idempotent_replay": false
}
}
}Check a backlights patch without writing it
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_customiser_option_section",
"arguments": {
"customiser_id": 42,
"option_type": "backlight",
"patch": {
"optional": true,
"optional_label": "No backlight"
},
"dry_run": true
}
}
}{
"jsonrpc": "2.0",
"id": 1,
"result": {
"structuredContent": {
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t",
"store": {
"id": 12,
"name": "Demo Signs"
},
"customiser_id": 42,
"option_type": "backlight",
"dry_run": true,
"valid": true,
"verdict": {
"operation": "update",
"customiser_id": 42
}
}
}
}A family the sign type does not offer (error)
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_customiser_option_section",
"arguments": {
"customiser_id": 42,
"option_type": "backlight",
"patch": {
"title": "Choose a backlight"
}
}
}
}{
"jsonrpc": "2.0",
"id": 1,
"result": {
"isError": true,
"structuredContent": {
"error": {
"code": "option_family_not_supported",
"title": "Option family not supported",
"detail": "Backlights are offered only on cut-out metal signs. This customiser cannot create, change or reorder backlights; you can still read and delete existing ones.",
"recovery": "The customiser sign type does not offer this option family, so it cannot be created, changed or reordered. Records left in it can still be read and deleted.",
"pointer": ""
}
}
}
}