Customiser support finishes
Validate a support finish image attach
Dry-runs the attach: the slot must exist on this support finish, the upload must exist for this store and this API key, and its purpose must be the slot's. Nothing is written, the upload is not consumed, and no idempotency key is spent.
Overview
Requires customisers:write.
The staged bytes are deliberately not read, so this cannot tell you
whether the file is a usable image — that verdict only exists once the
attach reads the object, and reading it here would let a preflight mark
a good upload rejected. Treat a valid verdict as "the upload is
attachable", not "the file is sound".
Authorisation
Bearer token required. Include it in theAuthorization header.
Required scope: customisers:write
Path parameters
The customiser id.
Example: 1
The support finish id.
Example: 27
Which image to write: preview_image, example_image or texture_image.
Example: preview_image
Request body
Request body example
{
"upload_id": "upl_9f2c4b7ad13e6058ba41cd"
}curl https://web.signcustomiser.com/api/v3/customisers/1/support-finishes/27/images/preview_image/validate-update \
--request POST \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"upload_id": "upl_9f2c4b7ad13e6058ba41cd"
}'{
"data": {
"object": "support_finish_image_validation",
"operation": "update",
"customiser_id": 42,
"support_finish_id": 27,
"image_slot": "preview_image",
"valid": true
},
"links": {
"self": "https://web.signcustomiser.com/api/v3/customisers/42/support-finishes/27/images/preview_image/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/missing_api_key",
"title": "Missing API key",
"status": 401,
"code": "missing_api_key",
"detail": "Provide a store API key as a bearer token.",
"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.",
"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/upload_purpose_mismatch",
"title": "Upload purpose mismatch",
"status": 422,
"code": "upload_purpose_mismatch",
"detail": "This slot accepts uploads created with purpose option_image, and this upload was created with purpose font_ttf. Create a new upload with the slot's purpose.",
"errors": [
{
"pointer": "/upload_id",
"code": "upload_purpose_mismatch",
"detail": "The upload's purpose is font_ttf.",
"allowed_values": [
"option_image"
]
}
],
"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.",
"retry_after": 60,
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}