Catalog Product — Detail (GraphQL)
GraphQL item query that returns a single catalog product by its IRI. Every nested block is a field-selectable Relay connection — sub-select exactly the fields you need with edges { node { … } }.
Operation
| Operation | Type |
|---|---|
adminCatalogProduct | Query (item) |
Overview
See the Products overview for how this menu works, product types, and the create/update flow.
Authentication
All admin endpoints require an admin Bearer token — see Authentication.
Arguments
| Argument | Type | Required | Description |
|---|---|---|---|
id | ID! | Yes | API Platform IRI of the product (e.g. "/api/admin/catalog/products/42") |
Response shape
- Top-level scalars (
sku,name,type,price,formattedPrice,quantity,inStock,status,weight,urlKey,meta*,created/updated, …) are always returned. Eloquent stringifies numeric/boolean scalars over GraphQL, sostatuscomes back as"1",inStockas"1", etc. — cast client-side. - Connections — every nested block is a connection you sub-select with
{ edges { node { … } } }:
| Connection | Node fields | Present for |
|---|---|---|
images | _id, type, path, url, position | all |
videos | _id, type, path, url, position | all |
categories | _id, name, slug | all |
inventories | _id, sourceId, sourceCode, qty | all |
customerGroupPrices | _id, customerGroupId, qty, valueType, value, uniqueId | all |
translations | _id, locale, name, description, shortDescription, urlKey, metaTitle, metaDescription, metaKeywords | all |
channels | _id, code, name | all (the product's assigned channels) |
attributeValues | _id, attributeId, code, adminName, type, isRequired, groupCode, value | all (the stored EAV values) |
superAttributes | _id, code, type, adminName, options { edges { node { _id adminName swatchValue sortOrder } } } | configurable |
variants | _id, sku, name, price, formattedPrice, quantity, inStock, attributeValues { edges { node { code adminName value } } } | configurable |
bundleOptions | _id, label, type, position, isRequired, products { edges { node { _id productId sku name qty isDefault sortOrder } } } | bundle |
linkedProducts | _id, associatedProductId, sku, name, qty, sortOrder | grouped |
downloadableLinks | _id, sortOrder, downloads, price, formattedPrice, type, file, fileUrl, sampleFile, sampleFileUrl, sampleType, translations { edges { node { _id locale title } } } | downloadable |
downloadableSamples | _id, sortOrder, type, file, fileUrl, translations { edges { node { _id locale title } } } | downloadable |
customizableOptions | _id, type, isRequired, sortOrder, maxCharacters, supportedFileExtensions, translations { edges { node { _id locale label } } }, prices { edges { node { _id label price sortOrder } } } | all |
relatedProducts / upSells / crossSells | _id, sku, type, name | all |
Type-specific connections (superAttributes/variants, bundleOptions, linkedProducts, downloadableLinks/downloadableSamples) return empty edges on non-matching types — switch on type to know which to read.
attributes and bookingProduct are REST-only
The full computed attributes block (the admin edit-screen field set, with empty family fields shown) and the bookingProduct block are returned only by the REST endpoint GET /api/admin/catalog/products/{id}. Over GraphQL, query the attributeValues connection for the product's stored attribute values (one node per set value; empty fields are not included), and read booking products via REST.
Notes
- Connections, not bare JSON (changed). Nested data is now field-selectable — query
images { edges { node { url } } }, not bareimages. This matches the storefront/Shopify shape; pick only the fields you need. idargument is the IRI. Construct it as"/api/admin/catalog/products/{_id}"from a listing's_id, or pass a listing edge'siddirectly.- REST is the flat counterpart.
GET /api/admin/catalog/products/{id}returns the same data with every nested block as a flat inline array/object (plus the fullattributesandbookingProductblocks). - Mutations don't return connections.
createAdminCatalogProduct/updateAdminCatalogProductreturn the product's scalars; re-queryadminCatalogProductfor the connections.

