Products.
A product instance is a GTIN plus a serial; a product class is a GTIN. EPCIS 2.0 carries the first in the epcList and the second in the quantityList. The gateway validates the shape and normalizes the Digital Link before it hashes the event.
epcListquantityList
Instance and class, side by side.
"epcList": [
"https://id.gs1.org/01/09506000134352/21/A1-9" // the instance
],
"quantityList": [
{ "epcClass": "https://id.gs1.org/01/09506000134352/10/LOT-7",
"quantity": 240 } // the class, by lot
]
Illustrative: the same product at two grains in one event. Both shapes validate against the official schema; the Digital Link normalization feeds the CBV §8.9 hash, so two spellings of one identifier hash the same.
For the engineer choosing a grain.
Serialize where a later question will be about one unit; count where it will be about a lot. The standard carries both in one event, and the gateway validates either — so the grain decision is a data decision, not a schema fork you maintain forever.
Proof, not adjectives. The gateway's conformance tests pass against GS1's normative artifacts. See What for the dimension, and What ships today for the dated ledger.