Roastify Get Design Text
roastify_get_design_textList the editable text layers of a stored design — the fields you can change.
Returns each text layer's id, current text, chars (its length), font, align,
box geometry (fontSize, width, height), and z (paint-order index in the
top-level elements array) — but NOT the design's images, so it stays small
enough to reason over in a conversation. Each layer's current text is its own
label: infer its role (product name, tagline, story, recipe, tasting notes, …)
from the words it holds. The same name often appears in several layers and
inside longer blurbs; change every id that should carry it.
Also returns sheet (the overall design extent), panels (the box's panel
columns — front/back/left/right — recovered from the dieline, each with bounds;
empty for single-face products like Tubes, where placement uses sheet instead),
and a real face per layer/element (which panel its x-centre sits on, not the
constant "sheet"; when panels is empty, layers keep their native faceId such as
"wrap"). And elements — the NON-text elements (images, shapes, rules), each with
id, type, name, bounds, z, and its fill/stroke colours — so a roast scale can
be audited (a filled dot has a dark fill, an empty one none) and set with
roastify_move_elements. fonts lists the families loaded on the design plus any
family a layer already uses — pick from it when setting fontFamily via move_elements.
Read those before judging the design: a header with no text value beneath it is
NOT necessarily a defect — the value may be a graphic in elements (e.g. a
five-dot roast scale under a ROAST header), and it tells you where NOT to place
new text. Roastify's migrated format carries no visibility flag, so a layer that
exists may still not print — do not report a missing value as a production error.
Geometry: each layer's x/y is its top-left corner in design units (the sheet
origin is its top-left). width/height are MEASURED text bounds, not fixed
frames — text does not clip, it grows, so a revision that holds the line count
and longest-line length keeps the footprint. z is paint order (lower draws
first / behind); change it with roastify_move_elements {"id", "z": "front"|"back"|N}.
Two things to respect:
A stash label states INTENT, not content: a design labeled for one coffee may still hold a donor template's words. Trust these layers, not the label.
widthis the fixed wrap frame;heightis the grown extent and re-measures when you edit the text. Keep each replacement within roughly ±10% of the layer'schars; longer copy grows the box downward and can overrun its neighbour, which the merchant then fixes by hand.fontSize/widthgauge how tight a layer is; to change a label'sfontSize, wrap frame,align, orfontFamily, use roastify_move_elements.
Also returns description — the product's store-page prose (outside the design,
syncs to Shopify), versioned with the design. Refine it and write it back with
roastify_set_product_description.
Pair with roastify_update_design_text to save text changes.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| design_id | Yes | The id from roastify_list_designs. | |
| dpop_token | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||