ecclink¶
Version: v1 Scope: per-tenant+store Owning service: ecclink-projector
An ecclink is a filtered projection of a link record that contains only the data relevant to ECC (Electronic Commerce Controller) image rendering. The ecclink-projector service subscribes to link.v2 and, for each link that belongs to the ecc system branch, writes a corresponding ecclink record. Consumers of ECC rendering — primarily ecc-image-render-service — subscribe to ecclink.v1 rather than link.v2 directly, which shields them from Studio-branch records and from the full structural complexity of the link DTO. The ecclink ID is the parent link's ID with an /ecc suffix appended, making the relationship explicit and lookups unambiguous.
ID pattern¶
t/{tenantid}/s/{storeid}/links/{linkid}/ecc
t/{tenantid}/s/{storeid}/links/{linkid}— the parent link this ecclink is projected from/ecc— suffix identifying this as the ECC projection of 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 ECC link |
multi_item |
Multi-item, single-ESL ECC link |
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 |
eccmodel_id |
string |
Short ECC model ID that determines the template layout |
item |
LinkedItem |
The single item linked to this ESL |
MultiItem message (multi-item, single ESL)¶
| Field | Type | Description |
|---|---|---|
esl |
Esl |
The linked ESL |
eccmodel_id |
string |
Short ECC model ID |
items |
repeated LinkedItem |
Items ordered by display position in the ECC model; omit trailing unlinked positions |
Aliases¶
by_item¶
Pattern: t/{tenantid}/s/{storeid}/items/{itemid}/links/{linkid}/ecc
Alias expressions:
- {.id/[..4]}/items/{.single.item.item_id}/links/{linkid}/ecc
- {.id/[..4]}/items/{.multi_item.items[].item_id}/links/{linkid}/ecc
by_storeesl¶
Pattern: t/{tenantid}/s/{storeid}/esls/{barcode}/link/ecc
Alias expressions:
- {.id/[..4]}/esls/{.single.esl.barcode}/link/ecc
- {.id/[..4]}/esls/{.multi_item.esl.barcode}/link/ecc
by_eccmodel¶
Pattern: t/{tenantid}/s/{storeid}/eccmodels/{eccmodelid}/links/{linkid}/ecc
Alias expressions:
- {.id/[..4]}/eccmodels/{.single.eccmodel_id}/links/{linkid}/ecc
- {.id/[..4]}/eccmodels/{.multi_item.eccmodel_id}/links/{linkid}/ecc
The by_eccmodel alias is unique to ecclink (not present on the parent link DTO) and is the primary lookup path used by ECC rendering services that need to find all links using a specific ECC model — for example, when a model is updated and all affected labels need to be re-rendered.
Consumed by¶
| Service | Why |
|---|---|
ecc-image-render-service |
Primary consumer; reads ecclink records to determine which ECC model to apply and which item data to render for each ESL |
ecclink-projector |
Writes ecclink records as projections of link.v2; owns the lifecycle of each ecclink record |
Related DTOs¶
- link — the parent link this record is projected from; the ecclink ID is always
{link.id}/ecc - studiolink — the Studio-branch equivalent projection; produced for link.v2 Studio records
- storeesl — the ESL referenced in the link; used to resolve rendering capabilities