Customiser sections
Update the jackets section
Partially update the jackets section with a JSON Merge Patch (RFC 7396): the request body is a JSON object that contains only the properties to change. Omitted properties are unchanged, null clears a property that can hold null, and an empty object {} is a valid no-op.
Overview
This section accepts title, description and hidden. Any other property is refused with a 422 problem with code unknown_field, and object, customiser_id and updated_at are refused as read-only. The first write creates the section. Requires the customisers:write scope.
title and description are customiser text in the authoring language. A write replaces an unpublished Languages draft of the same text, and the response then lists the replaced keys in meta.replaced_drafts.
hidden cannot be null.
On a sign type that does not offer jackets, the write is refused with a 422 problem with code option_family_not_supported and pointer "", as writes to the jackets themselves are, and nothing is stored. The read stays available.
A successful update immediately changes the storefront: the customiser's cached configuration is invalidated and translated language content is resynchronised. It never regenerates your Shopify products, product images, or product cache. Send an Idempotency-Key header (1-255 visible ASCII characters, e.g. a UUID) to make the write safe to retry: repeating the same key with the same body replays the original response (marked Idempotency-Replay: true) without executing again; the same key with a different body is a 409 problem with code idempotency_key_conflict. The header is optional here, as on the option families' update operations.
Validation failures are 422 problems: validation_failed lists every field error in errors[] with a JSON pointer. A 400 problem means the body is not valid JSON; a 422 problem with code invalid_document means the body is not a JSON object. 401/403/404/429 behave as on the read operation, with customisers:write as the required scope.
Authorisation
Bearer token required. Include it in the Authorization header.
Required scope: customisers:write
Path parameters
The customiser id, from the list customisers operation.
Example: 1
Request body
Request body example
{
"title": "Choose your jacket",
"description": "Pick one of our jackets.",
"hidden": false
}curl https://web.signcustomiser.com/api/v3/customisers/1/jackets-section \
--request PATCH \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"title": "Choose your jacket",
"description": "Pick one of our jackets.",
"hidden": false
}'{
"data": {
"object": "jacket_section",
"customiser_id": 42,
"title": "Choose your jacket",
"description": "Pick one of our jackets.",
"hidden": false,
"updated_at": "2026-05-04T09:12:31Z"
},
"links": {
"self": "https://web.signcustomiser.com/api/v3/customisers/42/jackets-section",
"documentation": "https://www.signcustomiser.com/help/api/"
},
"meta": {
"api_version": "v3",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
}{
"type": "https://www.signcustomiser.com/help/api/problems/malformed_json",
"title": "Malformed JSON",
"status": 400,
"code": "malformed_json",
"detail": "The request body is not valid JSON: Syntax error.",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/missing_api_key",
"title": "Missing API key",
"status": 401,
"code": "missing_api_key",
"detail": "Provide a store API key as a bearer token: Authorization: Bearer <api key>. Keys are created in the merchant admin under Integrate → API Tokens.",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/insufficient_scope",
"title": "Insufficient scope",
"status": 403,
"code": "insufficient_scope",
"detail": "This operation requires the customisers:write scope, but the API key grants the following scopes: customisers:read. Create a key that includes the required scope in the merchant admin under Integrate → API Tokens.",
"required_scopes": [
"customisers:write"
],
"granted_scopes": [
"customisers:read"
],
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/resource_not_found",
"title": "Resource not found",
"status": 404,
"code": "resource_not_found",
"detail": "The requested resource does not exist or does not belong to the authenticated store.",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/idempotency_key_conflict",
"title": "Idempotency key conflict",
"status": 409,
"code": "idempotency_key_conflict",
"detail": "This Idempotency-Key was already used for a different request body on this operation. An idempotency key identifies one exact request: retry the original body to replay its response, or send the new body with a fresh key.",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/option_family_not_supported",
"title": "Option family not supported",
"status": 422,
"code": "option_family_not_supported",
"detail": "Jackets are offered only on neon signs. This customiser cannot create, change or reorder jackets; you can still read and delete existing ones.",
"errors": [
{
"pointer": "",
"code": "option_family_not_supported",
"detail": "Jackets are offered only on neon signs. This customiser cannot create, change or reorder jackets; you can still read and delete existing ones."
}
],
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/validation_failed",
"title": "Validation failed",
"status": 422,
"code": "validation_failed",
"detail": "The request payload failed validation. Correct the fields listed in errors and retry.",
"errors": [
{
"pointer": "/title",
"code": "string",
"detail": "The title field must be a string."
}
],
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/unknown_field",
"title": "Unknown field",
"status": 422,
"code": "unknown_field",
"detail": "The request contains fields this operation does not define: /selection_type.",
"errors": [
{
"pointer": "/selection_type",
"code": "unknown_field",
"detail": "The field \"selection_type\" is not supported by this operation."
}
],
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/rate_limited",
"title": "Too many requests",
"status": 429,
"code": "rate_limited",
"detail": "You have exceeded the request limit for this API key. Wait 60 seconds, then retry.",
"retry_after": 60,
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}