Flattened category hierarchy for this product — one entry per category in the
chain (the leaf category and every ancestor). Each entry is pipe-delimited:
categoryId|localizedName|parentId (the parentId segment is empty for a root
category). Because the leaf and all ancestors are present, the full breadcrumb
trail can be reconstructed from this field alone, with no extra category
request — see the useProductBreadcrumb composable in @avvyr/storefront-nuxt.
A variant parent: opens, never buys. The picker lists its children.
Optionallabels
labels?:string[]
Optionallistable
listable?:boolean
false on a variant parent whose children are the cards. Missing means listable.
OptionallistingGroupId
listingGroupId?:string
One card per listing group: the collapse key of listings.
OptionallistingHandle
listingHandle?:string
The product's canonical listing address. Equals handle for simple products; for a variant in
a parent-child family it is the parent's handle plus one segment per splitting axis
("st-hermine/svart"). Link cards here and 301 a product page whose handle differs.
OptionallistingName
listingName?:string
The card's name: the parent's name plus the split value ("St Hermine Svart").
listingPrice
listingPrice:number|null
Same basis and same null rule as sellingPrice.
OptionallistingPriceExVat
listingPriceExVat?:number
OptionallistingPriceIncVat
listingPriceIncVat?:number
name
name:string
OptionalpriceFrom
priceFrom?:number
Group price range (parent-child listings), incl. VAT and ex VAT.
OptionalpriceFromExVat
priceFromExVat?:number
OptionalpriceTo
priceTo?:number
OptionalpriceToExVat
priceToExVat?:number
productId
productId:string
OptionalrecommendedRetailPriceExVat
recommendedRetailPriceExVat?:number
OptionalrecommendedRetailPriceIncVat
recommendedRetailPriceIncVat?:number
OptionalreviewCount
reviewCount?:number
sellingPrice
sellingPrice:number|null
The market's own basis, inc or ex VAT per StorefrontMarket.pricesIncVat.
null means HIDDEN, not free: on a market with pricesRequireLogin an anonymous read carries
no prices at all (every other price field below is absent too). 0 still means "no price set".
See StorefrontMarket.pricesRequireLogin.
Sales-unit barcode (EAN). Searchable server-side; shown on PDP.