Skip to content

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
  • 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