Skip to content

Publish a template version

POST
/v1/templates
curl --request POST \
--url https://api.pixonaut.app/v1/templates \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "template": { "dpi": 300, "fit": "contain", "groups": [ { "id": "upload-motif", "label": "Upload a motif", "layerIds": [ "motif" ], "order": 0 }, { "id": "slogan-text", "label": "Text", "layerIds": [ "slogan" ], "order": 1 } ], "id": "tshirt-basic", "layers": [ { "anchor": "top-left", "hFrac": 0.5556, "id": "motif", "name": "Motif", "offsetFrac": { "x": 0.1429, "y": 0.1111 }, "props": { "fit": { "editable": false, "value": "contain" }, "src": { "constraints": { "allowUpload": true }, "description": "Upload a PNG or JPEG, at least 150 dpi at print size.", "editable": true, "label": "Motif", "value": null } }, "transform": { "rotate": { "editable": false }, "scale": { "editable": true, "max": 1.4, "min": 0.5 }, "translate": { "bounds": "safeArea", "editable": true }, "value": { "rotationDeg": 0, "scale": 1 } }, "type": "image", "wFrac": 0.7143, "z": 10 }, { "anchor": "top-left", "hFrac": 0.1389, "id": "slogan", "name": "Slogan", "offsetFrac": { "x": 0.0714, "y": 0.7361 }, "props": { "align": { "editable": false, "value": "center" }, "content": { "constraints": { "maxLength": 40, "maxLines": 2 }, "editable": true, "label": "Slogan", "value": "Your text here" }, "fill": { "editable": true, "label": "Colour", "value": { "cmyk": [ 0, 0, 0, 100 ] } }, "fontFamily": { "constraints": { "oneOf": [ "Anton", "Poppins" ] }, "editable": true, "label": "Font", "value": "Poppins" }, "fontSizeFrac": { "constraints": { "max": 0.0339, "min": 0.0127, "step": 0.0014 }, "editable": true, "label": "Size", "value": 0.0226 } }, "textBox": { "mode": "adapt", "shrinkTo": 0.0127, "then": "clamp" }, "transform": { "rotate": { "editable": true, "max": 10, "min": -10, "snapDeg": 5 }, "scale": { "editable": false }, "translate": { "bounds": "safeArea", "editable": true }, "value": { "rotationDeg": 0, "scale": 1 } }, "type": "text", "wFrac": 0.8571, "z": 20 } ], "name": "T-shirt print, front", "ratio": { "h": 360, "w": 280 }, "ratioTolerance": 0, "tenantId": "acme", "version": 2 } }'

Operation ID: templates.publish

Writes template as the published version id@version in one step, after the checks a studio publish runs: the author’s own defaults must satisfy the template’s constraints, and the publish-only rules must hold. A published version never changes, so a version that already exists is refused with version_exists. The version keeps the showcases of the latest version before it; one published while this one is judged holds showcases of its own, and this one is then refused with showcases_changed.

Media typeapplication/json

template is the document GET /v1/templates/{id} answers with; its tenantId is the caller’s, whatever is sent. id is its base id, [a-z0-9-]+, and version a positive integer. The document is refused as invalid_template, by its schema and then by the api’s renderer; inkVersions and shapeVersions are checked after it, and refused as invalid_publish.

object
inkVersions

Ink id to the updatedAt (epoch ms) of that ink as the author’s editor resolved the template against it. The publish refuses with ink_changed when one has moved since.

object
key
additional properties
integer
paletteVersions

Palette id to the updatedAt (epoch ms) the editor resolved it at; palette_changed when one has moved.

object
key
additional properties
integer
shapeVersions

Shape id to the updatedAt (epoch ms) the editor resolved it at; shape_changed when one has moved.

object
key
additional properties
integer
template
required
object
background
One of:
object
color
required

The background colour.

object
constraints
Any of:
object
anyColor
required

True lets a customer choose any colour, beside or instead of a palette.

boolean
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
palette
required

The palette a customer picks from: one of your palettes’ ids (pal_…) in a template you write; its name, with the palette under palettes, in a published template as served.

string
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
kind
required

Color paints the whole artwork, bleed included; image fills it with a picture.

string
Allowed values: color
coverAlign

Which of nine points, top-left to bottom-right, a cover crop keeps; read only when fit is cover. Absent is center.

string
Allowed values: top-left top-center top-right center-left center center-right bottom-left bottom-center bottom-right
customerLayers

The layers a customer may add of their own, per kind: how many, the preset each starts as, and where in the form they show. Added layers paint above the template’s layers.

object
image

Whether, and how, a customer may add image layers.

object
layer
required

The preset every added image layer starts as: a image layer without id, name, z, anchorTo, locked, print or deletable. What it offers is what a customer may change on the layers they add.

object
anchor
required

The point of the reference the layer is placed against, and the layer’s own matching point: top-left puts the layer’s top-left corner on the reference’s.

string
Allowed values: top-left top-center top-right center-left center center-right bottom-left bottom-center bottom-right
blend

How it mixes with the layers under it, per ink. Absent is normal.

string
Allowed values: multiply screen overlay darken lighten
hFrac
required

The layer’s height as a fraction of the reference’s height. Positive; uncapped, so above 1 hangs over the edge and is clipped.

number
> 0
mat
One of:
object
color
required
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
kind
required

Color is a plain backdrop; shape fills a silhouette.

string
Allowed values: color
offsetFrac
required

How far the layer sits from its anchor, as fractions of the reference, always toward the reference’s centre: { x: 0.05, y: 0.05 } nudges it 5 % in from any corner. Ignored on a centred axis.

object
x
required

Across, as a fraction of the reference’s width: 0.05 is 5 %. Toward the centre; negative pushes outward. Uncapped.

number
y
required

Down or up, as a fraction of the reference’s height: 0.05 is 5 %. Toward the centre; negative pushes outward. Uncapped.

number
opacity

The layer’s opacity, which a customer may be offered. Absent is full and not offered.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most opacity a customer may choose, 0.01 to 1.

number
>= 0.01 <= 1
min

The least opacity a customer may choose, 0.01 to 1.

number
>= 0.01 <= 1
step

The step between choosable opacities, e.g. 0.05.

number
> 0
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

How opaque the whole layer is: 1 is full, 0.01 the least.

number
>= 0.01 <= 1
props
required
object
brightness

How much lighter (up to 1) or darker (down to -1) the photo is drawn; absent or 0 is as uploaded.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
onDark

The value on a dark product colour, in place of value. A value the customer sets is used over both.

number
>= -1 <= 1
value
required

The attribute’s value, as the template stores it.

number
>= -1 <= 1
contrast

How far the photo’s tones are pushed apart (up to 1) or pulled toward middle grey (down to -1); absent or 0 is as uploaded.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
onDark

The value on a dark product colour, in place of value. A value the customer sets is used over both.

number
>= -1 <= 1
value
required

The attribute’s value, as the template stores it.

number
>= -1 <= 1
cornerRadiusShortSide

How round the picture’s corners are: their radius as a fraction of the shorter side of the layer’s box, 0 (square) to 0.5 (a square box becomes a circle). The outline and the shadow follow it.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
<= 0.5
crop

Where the picture sits in its frame, under cover. Absent is uncropped.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
maxZoom

The most zoom a customer may choose; absent is 3.

number
>= 1 <= 5
minZoom

The least zoom a customer may choose; absent is 1.

number
>= 1 <= 5
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

object
xFrac
required

How far the picture’s centre sits right of the frame’s centre, in frame widths: 0.1 is a tenth of the frame. Clamped so the picture always covers the frame, never refused.

number
yFrac
required

How far the picture’s centre sits below the frame’s centre, in frame heights: 0.1 is a tenth of the frame. Clamped so the picture always covers the frame, never refused.

number
zoom
required

The picture’s scale over what cover gives it: 1 is the picture just covering the frame, up to 5.

number
>= 1 <= 5
duotoneHighlight

The colour a duotone photo’s lightest tones become; absent is paper white. A process colour: a spot ink is refused.

object
constraints
Any of:
object
anyColor
required

True lets a customer choose any colour, beside or instead of a palette.

boolean
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
palette
required

The palette a customer picks from: one of your palettes’ ids (pal_…) in a template you write; its name, with the palette under palettes, in a published template as served.

string
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
onDark
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
value
required
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
duotoneShadow

The colour a duotone photo’s darkest tones become; absent is black. A process colour: a spot ink is refused.

object
constraints
Any of:
object
anyColor
required

True lets a customer choose any colour, beside or instead of a palette.

boolean
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
palette
required

The palette a customer picks from: one of your palettes’ ids (pal_…) in a template you write; its name, with the palette under palettes, in a published template as served.

string
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
onDark
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
value
required
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
effectsFollow

What the outline and the shadow are cast from: box (the layer’s box, rounded by its corners) or picture (the picture’s own visible pixels, so a cut-out casts its own shape). An image with a colour mat follows its box. Absent is box.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

string
Allowed values: box picture
fit
required

How the picture fills its box: cover crops, contain shows it whole, fill stretches, tile repeats it. Absent is cover.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

string
Allowed values: contain cover fill tile
outlineColor

The colour of the image’s outline, whichever width draws it: absent is black under outlineWidthShortSide, and white, a sticker’s edge, under outlineWidthShare.

object
constraints
Any of:
object
anyColor
required

True lets a customer choose any colour, beside or instead of a palette.

boolean
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
palette
required

The palette a customer picks from: one of your palettes’ ids (pal_…) in a template you write; its name, with the palette under palettes, in a published template as served.

string
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
outlineWidthShare

The width of an outline drawn round the picture’s own pixels, like a sticker’s edge, as a fraction of the picture box’s shorter side (0.02 is a fiftieth of it), 0 to 0.1; absent or 0 draws no outline. Not drawn on a tiled picture. An image sets this or outlineWidthShortSide, never both.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
<= 0.1
outlineWidthShortSide

The outline’s width as a fraction of the shorter side of the layer’s box (0.02 is a fiftieth of it), 0 to 0.1; absent or 0 draws no outline. On an image, traced round its box or its picture (effectsFollow); an image sets this or outlineWidthShare, never both.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
<= 0.1
recolourColor

The one colour or ink a recolour draws every visible pixel of the photo in, keeping its alpha; absent is paper white. It prints as that ink, a spot on its own plate (a spot’s edge is held solid at half coverage). The author’s: it is never offered to the customer.

object
constraints
Any of:
object
anyColor
required

True lets a customer choose any colour, beside or instead of a palette.

boolean
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
palette
required

The palette a customer picks from: one of your palettes’ ids (pal_…) in a template you write; its name, with the palette under palettes, in a published template as served.

string
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
onDark
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
value
required
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
saturation

How far the photo’s colours are strengthened (up to 1) or pulled toward grey (down to -1); absent or 0 is as uploaded. A blackAndWhite, sepia, duotone or recolour tone draws no colour of the photo’s own, so saturation then changes nothing; under none and invert it applies.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
onDark

The value on a dark product colour, in place of value. A value the customer sets is used over both.

number
>= -1 <= 1
value
required

The attribute’s value, as the template stores it.

number
>= -1 <= 1
shadowBlurShortSide

How soft the shadow is: its blur radius as a fraction of the shorter side of the layer’s box, 0 (sharp) to 0.25. A shadow with no offset and no blur draws nothing.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
<= 0.25
shadowColor

The colour of the shadow drawn under the layer; absent is black.

object
constraints
Any of:
object
anyColor
required

True lets a customer choose any colour, beside or instead of a palette.

boolean
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
palette
required

The palette a customer picks from: one of your palettes’ ids (pal_…) in a template you write; its name, with the palette under palettes, in a published template as served.

string
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
shadowOffsetXShortSide

How far right the shadow falls, as a fraction of the shorter side of the layer’s box, -0.25 to 0.25; negative is left.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
>= -0.25 <= 0.25
shadowOffsetYShortSide

How far down the shadow falls, as a fraction of the shorter side of the layer’s box, -0.25 to 0.25; negative is up.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
>= -0.25 <= 0.25
src
required

The picture’s asset id; null is none chosen yet.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
allowUpload

Whether a customer may upload a picture of their own.

boolean
cutOut

True cuts a customer’s upload out onto a transparent background, as a new upload in its place paid from the tenant’s credits; one that fails leaves their photo as it was. Absent, never.

boolean
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
requireChange

Whether a customer must change the template’s default (a placeholder name or photo) before a design is accepted. Only on an offered text’s content, image’s picture, or shape’s outline or fill.

boolean
required

Whether a customer must choose a picture.

boolean
upscale

Present, an upload below belowDpi at the customer’s chosen size is offered an upscale to toDpi before the proof, paid from the tenant’s credits. Absent, never.

object
belowDpi

The print resolution, in dots per inch, below which an upload is offered an upscale. Absent, the template’s minimum, else the tenant’s.

number
> 0 <= 1200
toDpi

The print resolution, in dots per inch, an upload is upscaled to, and priced by: under belowDpi, at it or past it. Absent, belowDpi.

number
> 0 <= 1200
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
onDark

The value on a dark product colour, in place of value. A value the customer sets is used over both.

string | null
value
required

The attribute’s value, as the template stores it.

string | null
tileScale

The tile’s size against the picture’s own, when the fit is tile.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The largest tile scale a customer may choose.

number
> 0 <= 100
min

The smallest tile scale a customer may choose.

number
> 0 <= 100
step

The step between the tile scales a customer may choose.

number
> 0
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
> 0 <= 100
tone

What the photo’s lightness is mapped onto, after brightness, contrast and saturation (a recolour draws one colour, so it ignores all three): none (its own colours), blackAndWhite, sepia, duotone (from duotoneShadow in its darkest tones to duotoneHighlight in its lightest), recolour (every visible pixel in recolourColor, its alpha kept, so a black cut-out can be made white), or invert (each channel turned over). Absent is none.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
onDark

The value on a dark product colour, in place of value. A value the customer sets is used over both.

string
Allowed values: none blackAndWhite sepia duotone recolour invert
value
required

The attribute’s value, as the template stores it.

string
Allowed values: none blackAndWhite sepia duotone recolour invert
transform
required

The layer’s rotation, scale and flip, and which of them, and its position, a customer may change.

object
flip

Whether a customer may flip the layer.

object
description

A hint shown to the customer under the control.

string
<= 200 characters
editable
required

Whether a customer may change it.

boolean
label

What a customer reads the control as.

string
resize

Whether, and within what, a customer may resize the layer.

object
description

A hint shown to the customer under the control.

string
<= 200 characters
editable

Whether a customer may change it.

boolean
label

What a customer reads the control as.

string
maxHMm

The most height, in millimetres.

number
maxWMm

The most width, in millimetres.

number
minHMm

The least height, in millimetres.

number
minWMm

The least width, in millimetres.

number
rotate
required

Whether, and how far, a customer may rotate the layer.

object
description

A hint shown to the customer under the control.

string
<= 200 characters
editable
required

Whether a customer may change it.

boolean
label

What a customer reads the control as.

string
max

The most rotation, in degrees.

number
min

The least rotation, in degrees.

number
snapDeg

The angle rotation snaps to, in degrees, e.g. 15.

number
scale
required

Whether, and how far, a customer may scale the layer.

object
description

A hint shown to the customer under the control.

string
<= 200 characters
editable
required

Whether a customer may change it.

boolean
label

What a customer reads the control as.

string
max

The most scale; 1 is as authored.

number
min

The least scale; 1 is as authored.

number
step

The step between the scales a customer may choose.

number
> 0
translate
required

Whether, and within what, a customer may move the layer.

object
bounds

Where a customer’s move must keep the layer: inside the safe area (the default), the print box, or anywhere.

string
Allowed values: safeArea printBox none
description

A hint shown to the customer under the control.

string
<= 200 characters
editable
required

Whether a customer may change it.

boolean
label

What a customer reads the control as.

string
snapTo

What a move snaps to: centre, thirds, safeEdges, layers.

Array<string>
Allowed values: centre thirds safeEdges layers
value
required

The layer’s rotation, scale and flip.

object
flipX

Whether the layer is mirrored left to right, about its centre and before its rotation.

boolean
flipY

Whether the layer is mirrored top to bottom, about its centre and before its rotation.

boolean
rotationDeg
required

Rotation about the layer’s anchor, in degrees, clockwise.

number
scale
required

Scale of the layer; 1 is as authored.

number
type
required
string
Allowed values: image
varnish

True lays spot varnish exactly where the layer is, on a machine that varnishes; it still prints in colour.

boolean
wFrac
required

The layer’s width as a fraction of the reference’s width. Positive; uncapped, so above 1 hangs over the edge and is clipped.

number
> 0
max
required

How many image layers a customer may add, 1 to 20.

integer
>= 1 <= 20
place

Where the added image layers show in the customer’s form: in a group, before or after one of its layers, or after its last. Absent, in a step of their own after the template’s.

object
after

The id of the group’s layer they come after.

string
>= 1 characters
before

The id of the group’s layer they come before.

string
>= 1 characters
group
required

The id of the group the added image layers show in.

string
>= 1 characters
shape

Whether, and how, a customer may add shape layers.

object
layer
required

The preset every added shape layer starts as: a shape layer without id, name, z, anchorTo, locked, print or deletable. What it offers is what a customer may change on the layers they add.

object
anchor
required

The point of the reference the layer is placed against, and the layer’s own matching point: top-left puts the layer’s top-left corner on the reference’s.

string
Allowed values: top-left top-center top-right center-left center center-right bottom-left bottom-center bottom-right
blend

How it mixes with the layers under it, per ink. Absent is normal.

string
Allowed values: multiply screen overlay darken lighten
hFrac
required

The layer’s height as a fraction of the reference’s height. Positive; uncapped, so above 1 hangs over the edge and is clipped.

number
> 0
offsetFrac
required

How far the layer sits from its anchor, as fractions of the reference, always toward the reference’s centre: { x: 0.05, y: 0.05 } nudges it 5 % in from any corner. Ignored on a centred axis.

object
x
required

Across, as a fraction of the reference’s width: 0.05 is 5 %. Toward the centre; negative pushes outward. Uncapped.

number
y
required

Down or up, as a fraction of the reference’s height: 0.05 is 5 %. Toward the centre; negative pushes outward. Uncapped.

number
opacity

The layer’s opacity, which a customer may be offered. Absent is full and not offered.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most opacity a customer may choose, 0.01 to 1.

number
>= 0.01 <= 1
min

The least opacity a customer may choose, 0.01 to 1.

number
>= 0.01 <= 1
step

The step between choosable opacities, e.g. 0.05.

number
> 0
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

How opaque the whole layer is: 1 is full, 0.01 the least.

number
>= 0.01 <= 1
props
required
object
crop

Where the picture sits in its frame, under cover. Absent is uncropped.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
maxZoom

The most zoom a customer may choose; absent is 3.

number
>= 1 <= 5
minZoom

The least zoom a customer may choose; absent is 1.

number
>= 1 <= 5
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

object
xFrac
required

How far the picture’s centre sits right of the frame’s centre, in frame widths: 0.1 is a tenth of the frame. Clamped so the picture always covers the frame, never refused.

number
yFrac
required

How far the picture’s centre sits below the frame’s centre, in frame heights: 0.1 is a tenth of the frame. Clamped so the picture always covers the frame, never refused.

number
zoom
required

The picture’s scale over what cover gives it: 1 is the picture just covering the frame, up to 5.

number
>= 1 <= 5
fill
required

What the silhouette is painted with: a colour, a gradient across its box, or a picture clipped to it.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
allowUpload

Whether a customer may upload a picture of their own.

boolean
anyColor

True lets a customer choose any colour, beside or instead of a palette.

boolean
cutOut

True cuts a customer’s upload out onto a transparent background, as a new upload in its place paid from the tenant’s credits; one that fails leaves their photo as it was. Absent, never.

boolean
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
palette

The palette a customer picks from: one of your palettes’ ids (pal_…) in a template you write; its name, with the palette under palettes, in a published template as served.

string
requireChange

Whether a customer must change the template’s default (a placeholder name or photo) before a design is accepted. Only on an offered text’s content, image’s picture, or shape’s outline or fill.

boolean
required

Whether a customer must choose a picture.

boolean
upscale

Present, an upload below belowDpi at the customer’s chosen size is offered an upscale to toDpi before the proof, paid from the tenant’s credits. Absent, never.

object
belowDpi

The print resolution, in dots per inch, below which an upload is offered an upscale. Absent, the template’s minimum, else the tenant’s.

number
> 0 <= 1200
toDpi

The print resolution, in dots per inch, an upload is upscaled to, and priced by: under belowDpi, at it or past it. Absent, belowDpi.

number
> 0 <= 1200
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
onDark
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
value
required
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
fit

How the picture fills its box: cover crops, contain shows it whole, fill stretches, tile repeats it. Absent is cover.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

string
Allowed values: contain cover fill tile
outlineColor

The colour of the line drawn around the layer’s edge, outside it; absent is black.

object
constraints
Any of:
object
anyColor
required

True lets a customer choose any colour, beside or instead of a palette.

boolean
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
palette
required

The palette a customer picks from: one of your palettes’ ids (pal_…) in a template you write; its name, with the palette under palettes, in a published template as served.

string
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
outlineWidthShortSide

The outline’s width as a fraction of the shorter side of the layer’s box (0.02 is a fiftieth of it), 0 to 0.1; absent or 0 draws no outline. On an image, traced round its box or its picture (effectsFollow); an image sets this or outlineWidthShare, never both.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
<= 0.1
shadowBlurShortSide

How soft the shadow is: its blur radius as a fraction of the shorter side of the layer’s box, 0 (sharp) to 0.25. A shadow with no offset and no blur draws nothing.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
<= 0.25
shadowColor

The colour of the shadow drawn under the layer; absent is black.

object
constraints
Any of:
object
anyColor
required

True lets a customer choose any colour, beside or instead of a palette.

boolean
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
palette
required

The palette a customer picks from: one of your palettes’ ids (pal_…) in a template you write; its name, with the palette under palettes, in a published template as served.

string
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
shadowOffsetXShortSide

How far right the shadow falls, as a fraction of the shorter side of the layer’s box, -0.25 to 0.25; negative is left.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
>= -0.25 <= 0.25
shadowOffsetYShortSide

How far down the shadow falls, as a fraction of the shorter side of the layer’s box, -0.25 to 0.25; negative is up.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
>= -0.25 <= 0.25
shape
required

The layer’s silhouette: inline geometry or one of the tenant’s shapes.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
allowEmpty

True lets a customer choose no shape at all.

boolean
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
requireChange

Whether a customer must change the template’s default (a placeholder name or photo) before a design is accepted. Only on an offered text’s content, image’s picture, or shape’s outline or fill.

boolean
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required
One of:
object
dFrac
required

SVG path data in fractions of its box, (0,0) its top-left and (1,1) its bottom-right: M 0 0 L 1 0 L 1 1 L 0 1 Z is the whole box. No arcs.

string
<= 65536 characters
type
required

Inline path geometry.

string
Allowed values: path
tileScale

The tile’s size against the picture’s own, when the fit is tile.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The largest tile scale a customer may choose.

number
> 0 <= 100
min

The smallest tile scale a customer may choose.

number
> 0 <= 100
step

The step between the tile scales a customer may choose.

number
> 0
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
> 0 <= 100
transform
required

The layer’s rotation, scale and flip, and which of them, and its position, a customer may change.

object
flip

Whether a customer may flip the layer.

object
description

A hint shown to the customer under the control.

string
<= 200 characters
editable
required

Whether a customer may change it.

boolean
label

What a customer reads the control as.

string
resize

Whether, and within what, a customer may resize the layer.

object
description

A hint shown to the customer under the control.

string
<= 200 characters
editable

Whether a customer may change it.

boolean
label

What a customer reads the control as.

string
maxHMm

The most height, in millimetres.

number
maxWMm

The most width, in millimetres.

number
minHMm

The least height, in millimetres.

number
minWMm

The least width, in millimetres.

number
rotate
required

Whether, and how far, a customer may rotate the layer.

object
description

A hint shown to the customer under the control.

string
<= 200 characters
editable
required

Whether a customer may change it.

boolean
label

What a customer reads the control as.

string
max

The most rotation, in degrees.

number
min

The least rotation, in degrees.

number
snapDeg

The angle rotation snaps to, in degrees, e.g. 15.

number
scale
required

Whether, and how far, a customer may scale the layer.

object
description

A hint shown to the customer under the control.

string
<= 200 characters
editable
required

Whether a customer may change it.

boolean
label

What a customer reads the control as.

string
max

The most scale; 1 is as authored.

number
min

The least scale; 1 is as authored.

number
step

The step between the scales a customer may choose.

number
> 0
translate
required

Whether, and within what, a customer may move the layer.

object
bounds

Where a customer’s move must keep the layer: inside the safe area (the default), the print box, or anywhere.

string
Allowed values: safeArea printBox none
description

A hint shown to the customer under the control.

string
<= 200 characters
editable
required

Whether a customer may change it.

boolean
label

What a customer reads the control as.

string
snapTo

What a move snaps to: centre, thirds, safeEdges, layers.

Array<string>
Allowed values: centre thirds safeEdges layers
value
required

The layer’s rotation, scale and flip.

object
flipX

Whether the layer is mirrored left to right, about its centre and before its rotation.

boolean
flipY

Whether the layer is mirrored top to bottom, about its centre and before its rotation.

boolean
rotationDeg
required

Rotation about the layer’s anchor, in degrees, clockwise.

number
scale
required

Scale of the layer; 1 is as authored.

number
type
required
string
Allowed values: shape
varnish

True lays spot varnish exactly where the layer is, on a machine that varnishes; it still prints in colour.

boolean
wFrac
required

The layer’s width as a fraction of the reference’s width. Positive; uncapped, so above 1 hangs over the edge and is clipped.

number
> 0
max
required

How many shape layers a customer may add, 1 to 20.

integer
>= 1 <= 20
place

Where the added shape layers show in the customer’s form: in a group, before or after one of its layers, or after its last. Absent, in a step of their own after the template’s.

object
after

The id of the group’s layer they come after.

string
>= 1 characters
before

The id of the group’s layer they come before.

string
>= 1 characters
group
required

The id of the group the added shape layers show in.

string
>= 1 characters
text

Whether, and how, a customer may add text layers.

object
layer
required

The preset every added text layer starts as: a text layer without id, name, z, anchorTo, locked, print or deletable. What it offers is what a customer may change on the layers they add.

object
anchor
required

The point of the reference the layer is placed against, and the layer’s own matching point: top-left puts the layer’s top-left corner on the reference’s.

string
Allowed values: top-left top-center top-right center-left center center-right bottom-left bottom-center bottom-right
blend

How it mixes with the layers under it, per ink. Absent is normal.

string
Allowed values: multiply screen overlay darken lighten
hFrac
required

The layer’s height as a fraction of the reference’s height. Positive; uncapped, so above 1 hangs over the edge and is clipped.

number
> 0
mat
One of:
object
color
required
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
kind
required

Color is a plain backdrop; shape fills a silhouette.

string
Allowed values: color
offsetFrac
required

How far the layer sits from its anchor, as fractions of the reference, always toward the reference’s centre: { x: 0.05, y: 0.05 } nudges it 5 % in from any corner. Ignored on a centred axis.

object
x
required

Across, as a fraction of the reference’s width: 0.05 is 5 %. Toward the centre; negative pushes outward. Uncapped.

number
y
required

Down or up, as a fraction of the reference’s height: 0.05 is 5 %. Toward the centre; negative pushes outward. Uncapped.

number
opacity

The layer’s opacity, which a customer may be offered. Absent is full and not offered.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most opacity a customer may choose, 0.01 to 1.

number
>= 0.01 <= 1
min

The least opacity a customer may choose, 0.01 to 1.

number
>= 0.01 <= 1
step

The step between choosable opacities, e.g. 0.05.

number
> 0
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

How opaque the whole layer is: 1 is full, 0.01 the least.

number
>= 0.01 <= 1
props
required
object
align
required

Horizontal alignment in the text box.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
maxLength

The most characters a customer may type.

number
maxLines

The most lines a customer’s text may take.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
requireChange

Whether a customer must change the template’s default (a placeholder name or photo) before a design is accepted. Only on an offered text’s content, image’s picture, or shape’s outline or fill.

boolean
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

string
Allowed values: left center right
content
required

The text.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
maxLength

The most characters a customer may type.

number
maxLines

The most lines a customer’s text may take.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
requireChange

Whether a customer must change the template’s default (a placeholder name or photo) before a design is accepted. Only on an offered text’s content, image’s picture, or shape’s outline or fill.

boolean
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

string
fill
required

The colour of the text, or a gradient across it.

object
constraints
Any of:
object
anyColor
required

True lets a customer choose any colour, beside or instead of a palette.

boolean
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
palette
required

The palette a customer picks from: one of your palettes’ ids (pal_…) in a template you write; its name, with the palette under palettes, in a published template as served.

string
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
onDark
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
value
required
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
fontFamily
required

The font family, one of those the tenant offers.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
maxLength

The most characters a customer may type.

number
maxLines

The most lines a customer’s text may take.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
requireChange

Whether a customer must change the template’s default (a placeholder name or photo) before a design is accepted. Only on an offered text’s content, image’s picture, or shape’s outline or fill.

boolean
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

string
fontSizeFrac
required

The font size as a fraction of the plate’s HEIGHT, as is its offered range: 0.05 is 5 % of the height. Positive.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
> 0
fontStyle

Upright (normal) or italic; absent is normal. An italic text draws its font’s italic faces, or its upright ones when the font has none. Set by the author: a customer is not offered it.

object
editable
required

Always false: the author sets it, a customer may not.

boolean
value
required

The attribute’s value, as the template stores it.

string
Allowed values: normal italic
fontWeight

The font weight, 1 to 1000; 400 is regular, 700 bold.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
letterSpacingEm

The space added after each letter, as a fraction of the drawn text size (0.1 is a tenth of it), -0.1 to 1; absent or 0 is the font’s own spacing.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
>= -0.1 <= 1
lineHeight

The line spacing as a multiple of the font’s own, 0.5 to 3; absent or 1 is the font’s own.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
>= 0.5 <= 3
outlineColor

The colour of the line drawn around every letter, outside its fill; absent is black.

object
constraints
Any of:
object
anyColor
required

True lets a customer choose any colour, beside or instead of a palette.

boolean
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
palette
required

The palette a customer picks from: one of your palettes’ ids (pal_…) in a template you write; its name, with the palette under palettes, in a published template as served.

string
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
outlineWidthEm

The outline’s width as a fraction of the drawn text size (0.05 is a twentieth of it), 0 to 0.25; absent or 0 draws no outline.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
<= 0.25
shadowBlurEm

How soft the shadow is: its blur radius as a fraction of the drawn text size, 0 (sharp) to 1. A shadow with no offset and no blur draws nothing.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
<= 1
shadowColor

The colour of the shadow drawn under the text; absent is black.

object
constraints
Any of:
object
anyColor
required

True lets a customer choose any colour, beside or instead of a palette.

boolean
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
palette
required

The palette a customer picks from: one of your palettes’ ids (pal_…) in a template you write; its name, with the palette under palettes, in a published template as served.

string
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
shadowOffsetXEm

How far right the shadow falls, as a fraction of the drawn text size, -1 to 1; negative is left.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
>= -1 <= 1
shadowOffsetYEm

How far down the shadow falls, as a fraction of the drawn text size, -1 to 1; negative is up.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
>= -1 <= 1
textCase

How the letters are cased when drawn: asTyped, upper, lower or title (each word’s first letter a capital). The text itself is kept as typed. Absent is asTyped.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
maxLength

The most characters a customer may type.

number
maxLines

The most lines a customer’s text may take.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
requireChange

Whether a customer must change the template’s default (a placeholder name or photo) before a design is accepted. Only on an offered text’s content, image’s picture, or shape’s outline or fill.

boolean
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

string
Allowed values: asTyped upper lower title
valign

Vertical alignment in the text box; absent is middle.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
maxLength

The most characters a customer may type.

number
maxLines

The most lines a customer’s text may take.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
requireChange

Whether a customer must change the template’s default (a placeholder name or photo) before a design is accepted. Only on an offered text’s content, image’s picture, or shape’s outline or fill.

boolean
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

string
Allowed values: top middle bottom
textBox
required
One of:
object
breakWords

True breaks a word wider than the box across lines rather than refusing it.

boolean
mode
required

Adapt keeps the font size and grows the box, then shrinks the text, as far as the limits below allow.

string
Allowed values: adapt
order

Which way the box grows first. Absent is widerFirst.

string
Allowed values: widerFirst tallerFirst
shrinkTo

The smallest font size the text may shrink to, as a fraction of the plate’s height. Absent, it does not shrink.

number
> 0
tallerTo

How tall the box may grow, as a fraction of the plate’s height, at most 1. Absent, it does not grow taller.

number
> 0 <= 1
then
required

What happens to text that still does not fit: clamp cuts it at the box, reject refuses the text.

string
Allowed values: clamp reject
widenTo

How wide the box may grow, as a fraction of the plate’s width, at most 1. Absent, it does not widen.

number
> 0 <= 1
textPath
One of:
object
centerDeg
required

Where the text’s run is centred, in degrees clockwise from 12 o’clock: 0 is the top, 90 the right, 180 the bottom.

number
side
required

Which side of the curve the letters stand on: outside reads clockwise round it (the top of a badge); inside hangs inside it and runs the other way, so text at the bottom reads left to right.

string
Allowed values: outside inside
sweepDeg
required

How much of the oval the arc covers, in degrees, above 0 and at most 360: 360 is a whole circle.

number
> 0 <= 360
type
required

Along the oval inside the layer’s box, a circle when the box is square: the box is the radius.

string
Allowed values: arc
transform
required

The layer’s rotation, scale and flip, and which of them, and its position, a customer may change.

object
flip

Whether a customer may flip the layer.

object
description

A hint shown to the customer under the control.

string
<= 200 characters
editable
required

Whether a customer may change it.

boolean
label

What a customer reads the control as.

string
resize

Whether, and within what, a customer may resize the layer.

object
description

A hint shown to the customer under the control.

string
<= 200 characters
editable

Whether a customer may change it.

boolean
label

What a customer reads the control as.

string
maxHMm

The most height, in millimetres.

number
maxWMm

The most width, in millimetres.

number
minHMm

The least height, in millimetres.

number
minWMm

The least width, in millimetres.

number
rotate
required

Whether, and how far, a customer may rotate the layer.

object
description

A hint shown to the customer under the control.

string
<= 200 characters
editable
required

Whether a customer may change it.

boolean
label

What a customer reads the control as.

string
max

The most rotation, in degrees.

number
min

The least rotation, in degrees.

number
snapDeg

The angle rotation snaps to, in degrees, e.g. 15.

number
scale
required

Whether, and how far, a customer may scale the layer.

object
description

A hint shown to the customer under the control.

string
<= 200 characters
editable
required

Whether a customer may change it.

boolean
label

What a customer reads the control as.

string
max

The most scale; 1 is as authored.

number
min

The least scale; 1 is as authored.

number
step

The step between the scales a customer may choose.

number
> 0
translate
required

Whether, and within what, a customer may move the layer.

object
bounds

Where a customer’s move must keep the layer: inside the safe area (the default), the print box, or anywhere.

string
Allowed values: safeArea printBox none
description

A hint shown to the customer under the control.

string
<= 200 characters
editable
required

Whether a customer may change it.

boolean
label

What a customer reads the control as.

string
snapTo

What a move snaps to: centre, thirds, safeEdges, layers.

Array<string>
Allowed values: centre thirds safeEdges layers
value
required

The layer’s rotation, scale and flip.

object
flipX

Whether the layer is mirrored left to right, about its centre and before its rotation.

boolean
flipY

Whether the layer is mirrored top to bottom, about its centre and before its rotation.

boolean
rotationDeg
required

Rotation about the layer’s anchor, in degrees, clockwise.

number
scale
required

Scale of the layer; 1 is as authored.

number
type
required
string
Allowed values: text
varnish

True lays spot varnish exactly where the layer is, on a machine that varnishes; it still prints in colour.

boolean
wFrac
required

The layer’s width as a fraction of the reference’s width. Positive; uncapped, so above 1 hangs over the edge and is clipped.

number
> 0
max
required

How many text layers a customer may add, 1 to 20.

integer
>= 1 <= 20
place

Where the added text layers show in the customer’s form: in a group, before or after one of its layers, or after its last. Absent, in a step of their own after the template’s.

object
after

The id of the group’s layer they come after.

string
>= 1 characters
before

The id of the group’s layer they come before.

string
>= 1 characters
group
required

The id of the group the added text layers show in.

string
>= 1 characters
dpi
required

The resolution the artwork is drawn at, in dots per inch; 300 is usual for print.

number
drawAtTemplateRatio

True: the customer’s canvas keeps the ratio at every print size, and the print is cropped or banded by fit. Absent is false.

boolean
fit
required

How the artwork sits in a print box of another shape: contain, cover or fill.

string
Allowed values: contain cover fill
form
object
layout
string
Allowed values: page steps
groups
Array<object>
object
id
required
string
label
required
string
layerIds
required
Array<string>
order
required
number
id
required
string
layers
required
Array
One of:
object
anchor
required

The point of the reference the layer is placed against, and the layer’s own matching point: top-left puts the layer’s top-left corner on the reference’s.

string
Allowed values: top-left top-center top-right center-left center center-right bottom-left bottom-center bottom-right
anchorTo

Another layer’s id, to place and size this one against that layer’s box instead of the plate. A missing layer falls back to the plate.

string
blend

How it mixes with the layers under it, per ink. Absent is normal.

string
Allowed values: multiply screen overlay darken lighten
deletable

True lets a customer delete the layer from their design.

boolean
hFrac
required

The layer’s height as a fraction of the reference’s height. Positive; uncapped, so above 1 hangs over the edge and is clipped.

number
> 0
id
required

The layer’s id: what anchorTo, groups and a customer’s values name it by. Never changes.

string
locked

True locks the layer on the author’s canvas: clicks pass through and it cannot be deleted. Absent is unlocked.

boolean
mat
One of:
object
color
required
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
kind
required

Color is a plain backdrop; shape fills a silhouette.

string
Allowed values: color
name

What the author reads the layer as. Not unique; absent, the layer reads as its id.

string
>= 1 characters <= 80 characters
offsetFrac
required

How far the layer sits from its anchor, as fractions of the reference, always toward the reference’s centre: { x: 0.05, y: 0.05 } nudges it 5 % in from any corner. Ignored on a centred axis.

object
x
required

Across, as a fraction of the reference’s width: 0.05 is 5 %. Toward the centre; negative pushes outward. Uncapped.

number
y
required

Down or up, as a fraction of the reference’s height: 0.05 is 5 %. Toward the centre; negative pushes outward. Uncapped.

number
opacity

The layer’s opacity, which a customer may be offered. Absent is full and not offered.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most opacity a customer may choose, 0.01 to 1.

number
>= 0.01 <= 1
min

The least opacity a customer may choose, 0.01 to 1.

number
>= 0.01 <= 1
step

The step between choosable opacities, e.g. 0.05.

number
> 0
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

How opaque the whole layer is: 1 is full, 0.01 the least.

number
>= 0.01 <= 1
print

False makes it a guide layer: laid out and drawn on the author’s canvas, never printed or shown to a customer. Absent prints.

boolean
props
required
object
align
required

Horizontal alignment in the text box.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
maxLength

The most characters a customer may type.

number
maxLines

The most lines a customer’s text may take.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
requireChange

Whether a customer must change the template’s default (a placeholder name or photo) before a design is accepted. Only on an offered text’s content, image’s picture, or shape’s outline or fill.

boolean
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

string
Allowed values: left center right
content
required

The text.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
maxLength

The most characters a customer may type.

number
maxLines

The most lines a customer’s text may take.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
requireChange

Whether a customer must change the template’s default (a placeholder name or photo) before a design is accepted. Only on an offered text’s content, image’s picture, or shape’s outline or fill.

boolean
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

string
fill
required

The colour of the text, or a gradient across it.

object
constraints
Any of:
object
anyColor
required

True lets a customer choose any colour, beside or instead of a palette.

boolean
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
palette
required

The palette a customer picks from: one of your palettes’ ids (pal_…) in a template you write; its name, with the palette under palettes, in a published template as served.

string
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
onDark
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
value
required
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
fontFamily
required

The font family, one of those the tenant offers.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
maxLength

The most characters a customer may type.

number
maxLines

The most lines a customer’s text may take.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
requireChange

Whether a customer must change the template’s default (a placeholder name or photo) before a design is accepted. Only on an offered text’s content, image’s picture, or shape’s outline or fill.

boolean
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

string
fontSizeFrac
required

The font size as a fraction of the plate’s HEIGHT, as is its offered range: 0.05 is 5 % of the height. Positive.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
> 0
fontStyle

Upright (normal) or italic; absent is normal. An italic text draws its font’s italic faces, or its upright ones when the font has none. Set by the author: a customer is not offered it.

object
editable
required

Always false: the author sets it, a customer may not.

boolean
value
required

The attribute’s value, as the template stores it.

string
Allowed values: normal italic
fontWeight

The font weight, 1 to 1000; 400 is regular, 700 bold.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
letterSpacingEm

The space added after each letter, as a fraction of the drawn text size (0.1 is a tenth of it), -0.1 to 1; absent or 0 is the font’s own spacing.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
>= -0.1 <= 1
lineHeight

The line spacing as a multiple of the font’s own, 0.5 to 3; absent or 1 is the font’s own.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
>= 0.5 <= 3
outlineColor

The colour of the line drawn around every letter, outside its fill; absent is black.

object
constraints
Any of:
object
anyColor
required

True lets a customer choose any colour, beside or instead of a palette.

boolean
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
palette
required

The palette a customer picks from: one of your palettes’ ids (pal_…) in a template you write; its name, with the palette under palettes, in a published template as served.

string
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
outlineWidthEm

The outline’s width as a fraction of the drawn text size (0.05 is a twentieth of it), 0 to 0.25; absent or 0 draws no outline.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
<= 0.25
shadowBlurEm

How soft the shadow is: its blur radius as a fraction of the drawn text size, 0 (sharp) to 1. A shadow with no offset and no blur draws nothing.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
<= 1
shadowColor

The colour of the shadow drawn under the text; absent is black.

object
constraints
Any of:
object
anyColor
required

True lets a customer choose any colour, beside or instead of a palette.

boolean
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
palette
required

The palette a customer picks from: one of your palettes’ ids (pal_…) in a template you write; its name, with the palette under palettes, in a published template as served.

string
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
shadowOffsetXEm

How far right the shadow falls, as a fraction of the drawn text size, -1 to 1; negative is left.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
>= -1 <= 1
shadowOffsetYEm

How far down the shadow falls, as a fraction of the drawn text size, -1 to 1; negative is up.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
max

The most value a customer may choose.

number
min

The least value a customer may choose.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
step

The step between the values a customer may choose.

number
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

number
>= -1 <= 1
textCase

How the letters are cased when drawn: asTyped, upper, lower or title (each word’s first letter a capital). The text itself is kept as typed. Absent is asTyped.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
maxLength

The most characters a customer may type.

number
maxLines

The most lines a customer’s text may take.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
requireChange

Whether a customer must change the template’s default (a placeholder name or photo) before a design is accepted. Only on an offered text’s content, image’s picture, or shape’s outline or fill.

boolean
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

string
Allowed values: asTyped upper lower title
valign

Vertical alignment in the text box; absent is middle.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
maxLength

The most characters a customer may type.

number
maxLines

The most lines a customer’s text may take.

number
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
requireChange

Whether a customer must change the template’s default (a placeholder name or photo) before a design is accepted. Only on an offered text’s content, image’s picture, or shape’s outline or fill.

boolean
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required

The attribute’s value, as the template stores it.

string
Allowed values: top middle bottom
textBox
required
One of:
object
breakWords

True breaks a word wider than the box across lines rather than refusing it.

boolean
mode
required

Adapt keeps the font size and grows the box, then shrinks the text, as far as the limits below allow.

string
Allowed values: adapt
order

Which way the box grows first. Absent is widerFirst.

string
Allowed values: widerFirst tallerFirst
shrinkTo

The smallest font size the text may shrink to, as a fraction of the plate’s height. Absent, it does not shrink.

number
> 0
tallerTo

How tall the box may grow, as a fraction of the plate’s height, at most 1. Absent, it does not grow taller.

number
> 0 <= 1
then
required

What happens to text that still does not fit: clamp cuts it at the box, reject refuses the text.

string
Allowed values: clamp reject
widenTo

How wide the box may grow, as a fraction of the plate’s width, at most 1. Absent, it does not widen.

number
> 0 <= 1
textPath
One of:
object
centerDeg
required

Where the text’s run is centred, in degrees clockwise from 12 o’clock: 0 is the top, 90 the right, 180 the bottom.

number
side
required

Which side of the curve the letters stand on: outside reads clockwise round it (the top of a badge); inside hangs inside it and runs the other way, so text at the bottom reads left to right.

string
Allowed values: outside inside
sweepDeg
required

How much of the oval the arc covers, in degrees, above 0 and at most 360: 360 is a whole circle.

number
> 0 <= 360
type
required

Along the oval inside the layer’s box, a circle when the box is square: the box is the radius.

string
Allowed values: arc
transform
required

The layer’s rotation, scale and flip, and which of them, and its position, a customer may change.

object
flip

Whether a customer may flip the layer.

object
description

A hint shown to the customer under the control.

string
<= 200 characters
editable
required

Whether a customer may change it.

boolean
label

What a customer reads the control as.

string
resize

Whether, and within what, a customer may resize the layer.

object
description

A hint shown to the customer under the control.

string
<= 200 characters
editable

Whether a customer may change it.

boolean
label

What a customer reads the control as.

string
maxHMm

The most height, in millimetres.

number
maxWMm

The most width, in millimetres.

number
minHMm

The least height, in millimetres.

number
minWMm

The least width, in millimetres.

number
rotate
required

Whether, and how far, a customer may rotate the layer.

object
description

A hint shown to the customer under the control.

string
<= 200 characters
editable
required

Whether a customer may change it.

boolean
label

What a customer reads the control as.

string
max

The most rotation, in degrees.

number
min

The least rotation, in degrees.

number
snapDeg

The angle rotation snaps to, in degrees, e.g. 15.

number
scale
required

Whether, and how far, a customer may scale the layer.

object
description

A hint shown to the customer under the control.

string
<= 200 characters
editable
required

Whether a customer may change it.

boolean
label

What a customer reads the control as.

string
max

The most scale; 1 is as authored.

number
min

The least scale; 1 is as authored.

number
step

The step between the scales a customer may choose.

number
> 0
translate
required

Whether, and within what, a customer may move the layer.

object
bounds

Where a customer’s move must keep the layer: inside the safe area (the default), the print box, or anywhere.

string
Allowed values: safeArea printBox none
description

A hint shown to the customer under the control.

string
<= 200 characters
editable
required

Whether a customer may change it.

boolean
label

What a customer reads the control as.

string
snapTo

What a move snaps to: centre, thirds, safeEdges, layers.

Array<string>
Allowed values: centre thirds safeEdges layers
value
required

The layer’s rotation, scale and flip.

object
flipX

Whether the layer is mirrored left to right, about its centre and before its rotation.

boolean
flipY

Whether the layer is mirrored top to bottom, about its centre and before its rotation.

boolean
rotationDeg
required

Rotation about the layer’s anchor, in degrees, clockwise.

number
scale
required

Scale of the layer; 1 is as authored.

number
type
required
string
Allowed values: text
varnish

True lays spot varnish exactly where the layer is, on a machine that varnishes; it still prints in colour.

boolean
wFrac
required

The layer’s width as a fraction of the reference’s width. Positive; uncapped, so above 1 hangs over the edge and is clipped.

number
> 0
z
required

Paint depth, lowest painted first. A multiple of 10 follows the layer’s place in the list; any other value pins it.

integer
>= -2147483648 <= 2147483647
localized

The template as it reads in other languages: for each customer-facing language, what differs from the original, by layer and group id. A reader naming a language gets the original with that language’s overrides merged in; what a language does not override reads as the original. A language cannot add or remove layers, and a customer’s own values are never overridden.

object
key
additional properties
object
groups

Its groups’ labels in this language, by group id.

object
key
additional properties
object
label
required
string
layers

Its layers as they read in this language, by layer id.

object
key
additional properties

A layer as it reads in this language. print: false hides it in this language, as a guide layer: laid out, never printed or offered.

object
anchor

The point of the reference the layer is placed against, and the layer’s own matching point: top-left puts the layer’s top-left corner on the reference’s.

string
Allowed values: top-left top-center top-right center-left center center-right bottom-left bottom-center bottom-right
anchorTo

Another layer’s id, to place and size this one against that layer’s box instead of the plate. A missing layer falls back to the plate.

string
hFrac

The layer’s height as a fraction of the reference’s height. Positive; uncapped, so above 1 hangs over the edge and is clipped.

number
> 0
mat

The layer’s mat in this language.

name

What the author reads the layer as. Not unique; absent, the layer reads as its id.

string
>= 1 characters <= 80 characters
offsetFrac

How far the layer sits from its anchor, as fractions of the reference, always toward the reference’s centre: { x: 0.05, y: 0.05 } nudges it 5 % in from any corner. Ignored on a centred axis.

object
x
required

Across, as a fraction of the reference’s width: 0.05 is 5 %. Toward the centre; negative pushes outward. Uncapped.

number
y
required

Down or up, as a fraction of the reference’s height: 0.05 is 5 %. Toward the centre; negative pushes outward. Uncapped.

number
opacity

A prop as it reads in this language: any of its value, label, description and constraints. Whether a customer may change it, and its field key, stay the original’s.

object
constraints
description
label
string
value
print

False makes it a guide layer: laid out and drawn on the author’s canvas, never printed or shown to a customer. Absent prints.

boolean
props

Its props as they read in this language, by name.

object
key
additional properties

A prop as it reads in this language: any of its value, label, description and constraints. Whether a customer may change it, and its field key, stay the original’s.

object
constraints
description
label
string
value
textBox

The text layer’s text box in this language.

transform

The layer’s transform in this language: its rotation, scale and flip, and for each axis its bounds, limits and words. Whether a customer may change an axis stays the original’s.

object
flip

The words of the layer’s flip control, in this language.

object
description

A hint shown to the customer under the control.

string
<= 200 characters
label

What a customer reads the control as.

string
resize

Within what a customer may resize the layer, in this language.

object
description

A hint shown to the customer under the control.

string
<= 200 characters
label

What a customer reads the control as.

string
maxHMm

The most height, in millimetres.

number
maxWMm

The most width, in millimetres.

number
minHMm

The least height, in millimetres.

number
minWMm

The least width, in millimetres.

number
rotate

How far a customer may rotate the layer, in this language.

object
description

A hint shown to the customer under the control.

string
<= 200 characters
label

What a customer reads the control as.

string
max

The most rotation, in degrees.

number
min

The least rotation, in degrees.

number
snapDeg

The angle rotation snaps to, in degrees, e.g. 15.

number
scale

How far a customer may scale the layer, in this language.

object
description

A hint shown to the customer under the control.

string
<= 200 characters
label

What a customer reads the control as.

string
max

The most scale; 1 is as authored.

number
min

The least scale; 1 is as authored.

number
step

The step between the scales a customer may choose.

number
> 0
translate

Within what a customer may move the layer, in this language.

object
bounds

Where a customer’s move must keep the layer: inside the safe area (the default), the print box, or anywhere.

string
Allowed values: safeArea printBox none
description

A hint shown to the customer under the control.

string
<= 200 characters
label

What a customer reads the control as.

string
snapTo

What a move snaps to: centre, thirds, safeEdges, layers.

Array<string>
Allowed values: centre thirds safeEdges layers
value

The layer’s rotation, scale and flip.

object
flipX

Whether the layer is mirrored left to right, about its centre and before its rotation.

boolean
flipY

Whether the layer is mirrored top to bottom, about its centre and before its rotation.

boolean
rotationDeg
required

Rotation about the layer’s anchor, in degrees, clockwise.

number
scale
required

Scale of the layer; 1 is as authored.

number
varnish

True lays spot varnish exactly where the layer is, on a machine that varnishes; it still prints in colour.

boolean
wFrac

The layer’s width as a fraction of the reference’s width. Positive; uncapped, so above 1 hangs over the edge and is clipped.

number
> 0
z

Paint depth, lowest painted first. A multiple of 10 follows the layer’s place in the list; any other value pins it.

integer
>= -2147483648 <= 2147483647
name
required
string
palettes

Colours the template offers as its own, by name: a palette offer names one by that name. A stored template holds one only where a library palette it offered was deleted; a published template as served holds every palette it offers.

object
key
additional properties
Array<object>
<= 100 items
object
color
required
Any of:
object
cmyk
required

A CMYK colour: cyan, magenta, yellow and black in that order, each a percentage of ink from 0 to 100, e.g. [0, 100, 100, 0] for a red.

array
>= 4 items <= 4 items
name
required

The name a customer picks the colour by.

string
printFileForm

Flat: one drawing, every glyph a shape; layered: each layer separate, text as shapes; layered_live_text: each layer separate, plain text live. Absent follows the store, then the workspace.

string
Allowed values: flat layered layered_live_text
printFileTextTolerance
One of:
object
unit
required

Device pixels.

string
Allowed values: px
value
required

How many.

number
>= 1 <= 100
ratio
required

The artwork’s aspect ratio as two positive numbers ({ w: 3, h: 2 } is landscape): the shape of the plate every fraction is of.

object
h
required

The ratio’s height part. Positive.

number
> 0
w
required

The ratio’s width part. Positive.

number
> 0
ratioTolerance
required

How far, as a fraction of the ratio, a print size may differ from it: 0.02 is 2 %. 0 or more.

number
shape

The die-cut outline the print is cut to, which a customer may be offered. Absent is a square-cornered rectangle.

object
constraints

What a customer may choose, when editable. Absent, the attribute’s own range.

object
allowEmpty

True lets a customer choose no shape at all.

boolean
oneOf

The values a customer may choose from, when the attribute is editable: font families, picture asset ids, shape ids (shp_…) or fits. Absent, any value the attribute takes.

Array<string>
requireChange

Whether a customer must change the template’s default (a placeholder name or photo) before a design is accepted. Only on an offered text’s content, image’s picture, or shape’s outline or fill.

boolean
description

A hint shown to the customer under the attribute’s field.

string
<= 200 characters
editable
required

Whether a customer may change it. A layer is customer-editable when any of its attributes is.

boolean
fieldKey

The author’s word for the field (name, photo), unique within the template. A customer’s value for a keyed field follows them to any template with a field of the same key.

string
label

What a customer reads the attribute as, when editable.

string
value
required
One of:
object
dFrac
required

SVG path data in fractions of its box, (0,0) its top-left and (1,1) its bottom-right: M 0 0 L 1 0 L 1 1 L 0 1 Z is the whole box. No arcs.

string
<= 65536 characters
type
required

Inline path geometry.

string
Allowed values: path
snap

What a customer’s moves snap to, and the author’s grid.

object
grid

The author’s grid, which the author’s drags snap to. A customer never sees it.

object
stepFrac
required

The grid’s step as a fraction of the plate, 0.01 to 0.5: 0.05 is a line every 5 %.

number
>= 0.01 <= 0.5
targets

What a move snaps to: centre, thirds, safeEdges, layers.

Array<string>
Allowed values: centre thirds safeEdges layers
tenantId
string
uploads
object
formats

The file formats a customer may upload, each once: png, jpeg, webp, heic. Absent, all of them.

Array<string>
>= 1 items
Allowed values: png jpeg webp heic
maxBytes

The largest upload, in bytes, at most 83886080. Absent, that.

integer
> 0 <= 83886080
minDpi

The minimum print resolution a design’s pictures are judged against where they print, in dots per inch, at most 1200. Absent, the tenant’s.

number
> 0 <= 1200
version
required
number
key
additional properties

Examples

Exampleexample

Example

{
"template": {
"dpi": 300,
"fit": "contain",
"groups": [
{
"id": "upload-motif",
"label": "Upload a motif",
"layerIds": [
"motif"
],
"order": 0
},
{
"id": "slogan-text",
"label": "Text",
"layerIds": [
"slogan"
],
"order": 1
}
],
"id": "tshirt-basic",
"layers": [
{
"anchor": "top-left",
"hFrac": 0.5556,
"id": "motif",
"name": "Motif",
"offsetFrac": {
"x": 0.1429,
"y": 0.1111
},
"props": {
"fit": {
"editable": false,
"value": "contain"
},
"src": {
"constraints": {
"allowUpload": true
},
"description": "Upload a PNG or JPEG, at least 150 dpi at print size.",
"editable": true,
"label": "Motif",
"value": null
}
},
"transform": {
"rotate": {
"editable": false
},
"scale": {
"editable": true,
"max": 1.4,
"min": 0.5
},
"translate": {
"bounds": "safeArea",
"editable": true
},
"value": {
"rotationDeg": 0,
"scale": 1
}
},
"type": "image",
"wFrac": 0.7143,
"z": 10
},
{
"anchor": "top-left",
"hFrac": 0.1389,
"id": "slogan",
"name": "Slogan",
"offsetFrac": {
"x": 0.0714,
"y": 0.7361
},
"props": {
"align": {
"editable": false,
"value": "center"
},
"content": {
"constraints": {
"maxLength": 40,
"maxLines": 2
},
"editable": true,
"label": "Slogan",
"value": "Your text here"
},
"fill": {
"editable": true,
"label": "Colour",
"value": {
"cmyk": [
0,
0,
0,
100
]
}
},
"fontFamily": {
"constraints": {
"oneOf": [
"Anton",
"Poppins"
]
},
"editable": true,
"label": "Font",
"value": "Poppins"
},
"fontSizeFrac": {
"constraints": {
"max": 0.0339,
"min": 0.0127,
"step": 0.0014
},
"editable": true,
"label": "Size",
"value": 0.0226
}
},
"textBox": {
"mode": "adapt",
"shrinkTo": 0.0127,
"then": "clamp"
},
"transform": {
"rotate": {
"editable": true,
"max": 10,
"min": -10,
"snapDeg": 5
},
"scale": {
"editable": false
},
"translate": {
"bounds": "safeArea",
"editable": true
},
"value": {
"rotationDeg": 0,
"scale": 1
}
},
"type": "text",
"wFrac": 0.8571,
"z": 20
}
],
"name": "T-shirt print, front",
"ratio": {
"h": 360,
"w": 280
},
"ratioTolerance": 0,
"tenantId": "acme",
"version": 2
}
}

The version was published

Media typeapplication/json
object
templateId
required
string

Examples

Exampleexample

Example

{
"templateId": "tshirt-basic@2"
}
X-Request-Id
required
string

Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.

Refused: template_required

Media typeapplication/json
object
error
required
string

Examples

Exampletemplate_required

template_required

{
"error": "template_required"
}
X-Request-Id
required
string

Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.

Refused: unauthorized

Media typeapplication/json
object
error
required
string

Examples

Exampleunauthorized

unauthorized

{
"error": "unauthorized"
}
X-Request-Id
required
string

Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.

Refused: plan_limit_reached, origin_forbidden, secret_key_required, feature_disabled, forbidden, workspace_suspended

Media typeapplication/json
object
error
required
string
feature

The feature the tenant does not have. Always sent with feature_disabled.

string
limit

The limit the tenant is at: templates, connectedStores, apiKeys, shareLinks, customDomains, printsMadePerMonth (prints made without an order this month), members, orders (this month’s orders, which getting a print’s files without an order counts as), or a sandbox’s own caps: sandboxPrintsPerDay, sandboxPrintsPerMonth, sandboxOrdersPerMonth. A sandbox shares every other limit with its live workspace. Always sent with plan_limit_reached.

string
max

How many the plan allows. Always sent with plan_limit_reached.

number
plan

The plan whose limit it is. Always sent with plan_limit_reached.

string

Examples

feature_disabled

{
"error": "feature_disabled",
"feature": "api"
}
X-Request-Id
required
string

Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.

Refused: ink_changed, shape_changed, palette_changed, font_changed, version_exists, base_id_deleted, showcases_changed

Media typeapplication/json
object
error
required
string

Examples

base_id_deleted

{
"error": "base_id_deleted"
}
X-Request-Id
required
string

Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.

Refused: invalid_template, invalid_publish, payload_too_large

Media typeapplication/json
object
bytes

Sent with payload_too_large.

number
error
required
string
maxBytes

Always sent with payload_too_large.

number
reason

Always sent with invalid_template, invalid_publish.

string
violations

Sent with invalid_template.

Array<object>
object
characters

On a text_draws_fallback_glyphs or text_draws_missing_glyphs warning: the characters the text’s font cannot draw, each once, in the order the text first holds them. Absent on every other violation.

Array<string>
given
required
language

The language whose overrides break the rule, when only the template as it reads in that language does. Absent, the original.

string
layerId
required
string
prop
required
string
rule
required
string
severity
required

error refuses a publish; warning is worth the author’s attention and never does.

string

Examples

invalid_publish

{
"error": "invalid_publish",
"reason": "string"
}
X-Request-Id
required
string

Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.

Refused: template_renderer_failed, publish_gate_failed, db_error. A request that failed unexpectedly answers as text instead.

object
error
required
string

Examples

db_error

{
"error": "db_error"
}
X-Request-Id
required
string

Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.

Refused: print_box_unavailable, publish_references_unavailable, lock_timeout

Media typeapplication/json
object
error
required
string

Examples

lock_timeout

{
"error": "lock_timeout"
}
X-Request-Id
required
string

Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.

Questions? Write to [email protected].

Status · Terms of service · Privacy policy · Subprocessors