Skip to content

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
  • design — single-ESL counterpart; same LFS layout, adds rotation, uses compatible_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