Products
The current catalog, variant, option, price, image, category, collection, and inventory relationships.
A Product is the catalog record. It has title, description (document field), handle, subtitle, isGiftcard, discountable, status, externalId and metadata, plus computed thumbnail, dimensionsRange and defaultDimensions. It links to variants, options, images, categories, collections, tags, type, shipping profile, tax rates and discount conditions and rules.
status is one of draft, proposed, published or rejected. Callers without canManageProducts only see published products.
Variants and options
ProductVariant is the sellable unit. It has title, sku, barcode, ean, upc, inventoryQuantity, manageInventory, allowBackorder, customs fields (hsCode, originCountry, midCode, material), variantRank and metadata. It links to option values, prices, a location, stock movements, measurements and a primary image. ProductOption and ProductOptionValue describe choices such as size or color.
Prices
MoneyAmount connects a variant to an amount in a currency, optionally for a region, a price list or a price set, with minQuantity and maxQuantity. Amounts are integers in minor units. The computed calculatedPrice field applies an active, in-window price list, picks the lowest valid price in a price set, and then applies the set's PriceRule records (fixed or percentage, by priority). See Price lists.
When an order is created, OrderLineItem and OrderMoneyAmount store the accepted price, so later catalog changes do not rewrite the order.
Images and organization
ProductImagehas an S3-backedimage, animagePathfor external URLs,altTextandorder.ProductCategoryhastitle,handle,isInternal,isActiveand a parent/children hierarchy. Non-staff callers only see active categories.ProductCollectiongroups products for merchandising.ProductTagandProductTypeadd classification.
Inventory
Stock is the inventoryQuantity integer on each variant. When manageInventory is on and allowBackorder is off, checkout decrements stock only if enough is available, and writes a StockMovement. adjustInventory(variantId, delta, reason, note) changes stock for users with canManageProducts, refuses to go negative unless backorders are allowed, and records a RECEIVE or REMOVE movement.
/dashboard/platform/inventoryqueries aninventoryItemslist that is not in the schema, so it does not load. No platform screen callsadjustInventory. The product create page sets the startinginventoryQuantity, and the product page only displays it. Change stock throughadjustInventoryor the generic variant editor; the generic editor does not write a stock movement.importInventoryonly creates aBatchJobrecord. Nothing processes it.- Each variant has one stock count.
Locationexists as a model, but stock is not split across locations. - There is no CSV product import or export, forecasting, or low-stock alert in the source.
Operator path
Use /dashboard/platform/products, /products/create and /products/[id] for catalog work, and /product-categories and /product-collections for organization. See the GraphQL API page for a sample query.