Skip to content

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