Appearance
An alcoholic beverage product available at LCBO stores
graphql
type Product {
externalId: String!
sku: String!
name: String!
primaryCategory: String
producerName: String
origin: String
countryOfManufacture: String
regionName: String
priceInCents: Int!
shortDescription: String
thumbnailUrl: URL
upcNumber: String
alcoholPercent: Float
unitVolumeMl: Int
sellingPackage: String
bottlesPerPack: Int
bottlesPerCase: Int
isBuyable: Boolean
isSeasonal: Boolean
isVqa: Boolean
isKosher: Boolean
sellRankMonthly: Int
sellRankYearly: Int
viewRankYearly: Int
updatedAt: DateTime!
pricePerAlcoholMl: Float
inventories(
filters: InventoryFilterInput
pagination: PaginationInput
sortBy: InventorySortField
sortDirection: SortDirection
): InventoryConnection!
categories: [Category!]!
history(
filters: HistoryDateRangeInput!
pagination: PaginationInput
): ProductHistoryConnection!
}Fields
Product.externalId ● String! non-null scalar
LCBO internal reference ID (e.g., "123456")
Product.sku ● String! non-null scalar
Stock Keeping Unit - Main identifier for products (e.g., "12345")
Product.name ● String! non-null scalar
Official product name
Product.primaryCategory ● String scalar
Product.producerName ● String scalar
Product.origin ● String scalar
Product.countryOfManufacture ● String scalar
Product.regionName ● String scalar
Product.priceInCents ● Int! non-null scalar
Product.shortDescription ● String scalar
Product.thumbnailUrl ● URL scalar
Product.upcNumber ● String scalar
Product.alcoholPercent ● Float scalar
Product.unitVolumeMl ● Int scalar
Product.sellingPackage ● String scalar
Product.bottlesPerPack ● Int scalar
Product.bottlesPerCase ● Int scalar
Product.isBuyable ● Boolean scalar
Product.isSeasonal ● Boolean scalar
Product.isVqa ● Boolean scalar
Product.isKosher ● Boolean scalar
Product.sellRankMonthly ● Int scalar
Product.sellRankYearly ● Int scalar
Product.viewRankYearly ● Int scalar
Product.updatedAt ● DateTime! non-null scalar
Product.pricePerAlcoholMl ● Float scalar
Price per milliliter of pure alcohol in cents (computed field). Calculated as: priceInCents / (unitVolumeMl * alcoholPercent / 100) Lower values indicate better value for alcohol content. Null if alcoholPercent or unitVolumeMl is not available.
Product.inventories ● InventoryConnection! non-null object
Get inventories for this product with optional filtering, pagination, and sorting. Supports geospatial filtering, minimum quantity filtering, and sorting by quantity, distance, price, or updated_at.
Product.inventories.filters ● InventoryFilterInput input
Product.inventories.pagination ● PaginationInput input
Product.inventories.sortBy ● InventorySortField enum
Product.inventories.sortDirection ● SortDirection enum
Product.categories ● [Category!]! non-null object
Categories this product belongs to
Product.history ● ProductHistoryConnection! non-null object
Get historical snapshots for this product. Returns records ordered by timestamp descending (most recent first). Each record contains the product state at that time plus computed changes from the previous record.
Uses Relay-style pagination for proper complexity calculation. Cache is day-granular - queries with different timestamps on the same day share cache entries.
⚠️ EXPERIMENTAL: This API is subject to change. Schema and behavior may evolve.
Product.history.filters ● HistoryDateRangeInput! non-null input
Date range and optional operation type filter
Product.history.pagination ● PaginationInput input
Pagination controls (default: first 100 records)
Returned By
product query
Member Of
Inventory object ● ProductEdge object