studiolink¶
Version: v1 Scope: per-tenant+store Owning service: studio-link-evaluator
A studiolink is the output of the Studio rendering pipeline's evaluation step. The studio-link-evaluator service subscribes to link.v2 Studio-branch records, communication pack data, and store item values, then evaluates which design should actually be used for each link (applying business rules such as communication pack overrides and fallback logic). The result is written as a studiolink — a stable, evaluated record that tells studio-renderer exactly which design to render for which ESL and item combination, without the renderer needing to know anything about communication packs or design selection logic.
Unlike ecclink, which is a structural filter of the parent link, studiolink may differ from the parent link's forced_design_id because the evaluator may have resolved a communication pack to a different design than what was explicitly forced.
ID pattern¶
t/{tenantid}/s/{storeid}/links/{linkid}/studio
t/{tenantid}/s/{storeid}/links/{linkid}— the parent link this studiolink was evaluated from/studio— suffix identifying this as the Studio evaluation result for the link
Schema¶
Top-level fields¶
| Field | Type | Description |
|---|---|---|
id |
string |
Primary ID following the pattern above |
location |
string |
Physical shelf location annotation carried through from the parent link. Examples: "Aisle 5", "Shelf B12" |
oneof variant¶
| Variant | Description |
|---|---|
single |
Single-item, single-ESL Studio link |
floating_canvas |
Single item across multiple ESLs using a canvas design |
Esl message¶
| Field | Type | Description |
|---|---|---|
barcode |
string |
ESL barcode (hardware identifier) |
esltype_id |
string |
Short ESL type ID |
LinkedItem message¶
| Field | Type | Description |
|---|---|---|
item_id |
string |
Item whose data drives rendering |
linked_item_id |
string |
Identifier used during linking (usually same as item_id, or a SIC) |
facings |
string |
Number of facings; may appear on the label |
Single message (single item, single ESL)¶
| Field | Type | Description |
|---|---|---|
esl |
Esl |
The linked ESL |
design_id |
string |
Short design ID — the resolved design to render (after communication pack evaluation). Always set |
item |
LinkedItem |
The single item driving the render |
Note: unlike link.v2 Studio.Single where forced_design_id is optional (the design may come from a communication pack), design_id in studiolink is always set — it is the concrete, evaluated outcome.
FloatingCanvas message (single item, multiple ESLs)¶
| Field | Type | Description |
|---|---|---|
esls |
repeated Esl |
All ESLs on the canvas; first entry's barcode matches the link ID's barcode |
design_id |
string |
Short canvas design ID — the resolved canvas design to render |
item |
LinkedItem |
The item driving the canvas |
Aliases¶
by_item¶
Pattern: t/{tenantid}/s/{storeid}/items/{itemid}/links/{linkid}/studio
Alias expressions:
- {.id/[..4]}/items/{.single.item.item_id}/links/{linkid}/studio
- {.id/[..4]}/items/{.floating_canvas.item.item_id}/links/{linkid}/studio
by_storeesl¶
Pattern: t/{tenantid}/s/{storeid}/esls/{barcode}/link/studio
Alias expressions:
- {.id/[..4]}/esls/{.single.esl.barcode}/link/studio
- {.id/[..4]}/esls/{.floating_canvas.esls[].barcode}/link/studio
by_design¶
Pattern: t/{tenantid}/designs/{designid}/s/{storeid}/links/{linkid}/studio
Alias expression: t/{tenantid}/designs/{.single.design_id}/s/{storeid}/links/{linkid}/studio
Allows finding all studiolinks currently using a specific design — used when a design is updated and all rendering jobs for that design need to be re-triggered.
by_canvasdesign¶
Pattern: t/{tenantid}/canvasdesigns/{designid}/s/{storeid}/links/{linkid}/studio
Alias expression: t/{tenantid}/canvasdesigns/{.floating_canvas.design_id}/s/{storeid}/links/{linkid}/studio
Same purpose as by_design but for canvas designs used in floating canvas links.
Consumed by¶
| Service | Why |
|---|---|
studio-renderer |
Primary consumer; subscribes to studiolink.v1 and triggers image generation using the resolved design_id and item data |
studio-link-evaluator |
Owns and writes studiolink records; re-evaluates and overwrites whenever the parent link, communication pack, or item values change |
Related DTOs¶
- link — the parent link this record is evaluated from; the studiolink ID is always
{link.id}/studio - ecclink — the ECC-branch equivalent projection; produced for link.v2 ECC records
- designerlink — deprecated predecessor; studiolink replaced it when link.v2 was adopted
- storeesl — the ESL(s) referenced in the link