Skip to content

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