Canvasdesign¶
Version: v1 Scope: per-tenant Owning service: studio-design-library
A Canvasdesign is a published, immutable design that targets a multi-panel Canvastype rather than a single ESL type. A canvas is a logical grouping of one or more ESL types arranged side-by-side (e.g. a shelf-edge strip built from three panels). The design spans the entire combined canvas pixel area and must match the width, height, and palette of the target canvas. In all other respects — LFS-backed storage, content-addressed filenames, palette reference — Canvasdesign parallels Design exactly. The main structural difference is that compatible_canvastype_ids replaces compatible_esltype_ids, and there is no rotation field because canvas orientation is fixed by the canvas type definition.
ID pattern¶
t/{tenantid}/canvasdesigns/{designid}
| Segment | Meaning |
|---|---|
t/{tenantid} |
Tenant scope |
canvasdesigns |
Fixed collection name, distinct from designs |
{designid} |
Opaque identifier assigned at publish time |
Schema¶
| Field | Type | Description |
|---|---|---|
id |
string | Full resource name following the ID pattern above |
display_name |
string | Human-readable name shown in the Studio UI |
compatible_canvastype_ids |
repeated string | Canvas type resource names (format: canvastypes/<canvastype-id>) this design is compatible with. Must be lexicographically ordered. |
width_pixels |
uint32 | Total rendered width of the canvas in pixels |
height_pixels |
uint32 | Total rendered height of the canvas in pixels |
color_space |
ColorSpace enum | Deprecated — use palette_id instead |
json_file_path |
string | LFS path to the Studio JSON source file. Format: designer/t/<tenant-id>/jsondesigns/<sha256>.json. Content-addressed; filename is the SHA-256 hex digest of the file content. The JSON must contain the SVG Base64 but should not contain the preview Base64. |
preview_file_path |
string | LFS path to the PNG thumbnail. Format: designer/t/<tenant-id>/designpreviews/<sha256>.png |
palette_id |
string | Palette resource name used during design, e.g. palettes/BWRY |
tags |
repeated string | Free-form tags for categorisation and filtering in the Studio library |
ColorSpace enum (deprecated)¶
| Value | Meaning |
|---|---|
COLOR_SPACE_UNSPECIFIED (0) |
Default / unset |
BW (1) |
Black & White |
BWY (2) |
Black, White, Yellow |
BWR (3) |
Black, White, Red |
BWRY (4) |
Black, White, Red, Yellow |
Use palette_id instead.
LFS paths¶
Both json_file_path and preview_file_path are content-addressed via SHA-256. The directory structure mirrors that of regular Design: designer/t/<tenant-id>/jsondesigns/ and designer/t/<tenant-id>/designpreviews/. Consumers that also handle Design records can reuse the same LFS fetching logic.
Consumed by¶
| Service | Why |
|---|---|
studio-renderer |
Fetches the JSON source to render the full-canvas composite image |
| Studio UI | Displays thumbnails and compatible canvas type information in the canvas design library |
Related DTOs¶
- design — single-ESL counterpart; same LFS layout, adds
rotation, usescompatible_esltype_ids - canvastype — defines the ESL type composition and pixel dimensions this design must match
- palette — defines the exact RGB colors referenced by
palette_id