Customiser settings
Validate customiser settings
Dry-run a settings merge patch without persisting anything.
Overview
The request
body is the same merge patch the update operation accepts, and the
response is exactly what that update would produce on the failing paths:
the identical 422 problem (validation_failed with pointers and
allowed_values, or unknown_field) — the same validation code path
runs, only persistence is skipped. On a patch that would apply, the
response is a 200 customiser_settings_validation confirmation. Nothing
is written, no caches are touched, no idempotency key is consumed, and no
activity is recorded, so the operation is always safe to repeat. The
verdict is advisory: nothing binds it to a later update, and the settings
can legitimately change between the two calls. Requires the
customisers:write scope (it is the write's dry-run twin).
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 theAuthorization header.
Required scope: customisers:write
Path parameters
The customiser id, from the list customisers operation.
Example: 1
Request body
Request body example
{
"custom_sizing": true
}curl https://web.signcustomiser.com/api/v3/customisers/1/settings/validate-update \
--request POST \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"custom_sizing": true
}'{
"data": {
"object": "customiser_settings_validation",
"operation": "update",
"customiser_id": 42,
"valid": true
},
"links": {
"self": "https://web.signcustomiser.com/api/v3/customisers/42/settings/validate-update",
"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/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": "/measurement_unit",
"code": "unsupported_value",
"detail": "The selected measurement unit is invalid.",
"allowed_values": [
"both",
"centimetres",
"inches"
]
}
],
"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"
}