Product
Product entity representing items in the product catalog.
External entity from the product service that provides basic product identification and categorization. Used as a reference for product-specific attributes and relationships within the attribute system.
type Product implements IResource, IBaseProduct, IProduct {
id: Int!
productId: Int!
categoryId: Int!
attributes(
input: AttributeResultSearchInput
): AttributeResultResponse
classId: Int!
bundles(
taxZone: String = "NL"
): [Bundle!]
isBundleLeader: YesNo!
hasBundle: YesNo!
favoriteLists(
input: FavoriteListsSearchInput
): FavoriteListsResponse
inventory: ProductInventory!
mediaImages(
search: MediaImageProductSearchInput = { page: 1, offset: 12 }
): PaginatedMediaImageResponse @deprecated
mediaVideos(
search: MediaVideoProductSearchInput = { page: 1, offset: 12 }
): PaginatedMediaVideoResponse @deprecated
mediaDocuments(
search: MediaDocumentProductSearchInput = { page: 1, offset: 12 }
): PaginatedMediaDocumentResponse @deprecated
media: ProductMedia
orderlists(
input: OrderlistSearchInput
): OrderlistsResponse!
price(
input: PriceCalculateProductInput
): ProductPrice
priceData: Price
bulkPrices(
input: UserBulkPriceProductInput = { taxZone: "NL", contactId: 0, customerId: 0, companyId: 0 }
): [ProductPrice!]
language: String @deprecated
class: ProductClass! @deprecated
hidden: YesNo!
uuid: ID!
type: ProductClass!
sku: String!
priority: Int
categoryIds: [Int!]!
defaultLanguage: String! @deprecated
names(
language: String
): [LocalizedString!]!
descriptions(
language: String
): [LocalizedString!]!
shortDescriptions(
language: String
): [LocalizedString!]!
slugs(
language: String
): [LocalizedString!]!
shortNames(
language: String
): [LocalizedString!]!
metadataTitles(
language: String
): [LocalizedString!]!
metadataDescriptions(
language: String
): [LocalizedString!]!
metadataKeywords(
language: String
): [LocalizedString!]!
metadataCanonicalUrls(
language: String
): [LocalizedString!]!
sources: [Source!]!
createdAt: DateTime!
lastModifiedAt: DateTime!
shortName: String! @deprecated
keywords(
language: String
): [LocalizedString!]!
customKeywords(
language: String
): [LocalizedString!]!
packageDescriptions(
language: String
): [LocalizedString!]!
status: ProductStatus!
manufacturer: String!
supplier: String!
manufacturerCode: String!
eanCode: String!
supplierCode: String!
barCode: String
statusExtra: String
orderable: YesNo!
returnable: YesNo!
physical: YesNo!
package: String!
packageUnit: String!
packageUnitQuantity: String!
minimumQuantity: Float!
unit: Int!
purchaseUnit: Int!
purchaseMinimumQuantity: Int!
economicOrderQuantity: Int!
turnoverGroup: String
taxonomy: String
priceGroup: String
orderableFrom: DateTime
orderableTo: DateTime
releaseDate: DateTime
clusterId: Int
width: Float
height: Float
depth: Float
weight: Float
containerClass: ProductContainerClass!
offers: [ProductOffer!] @deprecated
category(
hidden: YesNo
): Category
categories(
input: ProductCategorySearchInput
): CategoryResponse!
categoryPath(
hidden: YesNo
): [Category!]!
crossUpsells(
input: CrossupsellSearchInput
): CrossupsellsResponse!
crossupsellsFrom(
input: CrossupsellSearchInput
): CrossupsellsResponse!
crossupsellsTo(
input: CrossupsellSearchInput
): CrossupsellsResponse!
cluster(
hidden: Boolean
): Cluster
categoryRelations: [BaseProductCategoryRelationship!]!
surcharges(
input: SurchargeSearchInput
): [Surcharge!]!
}
Fields
Product.id ● Int! non-null scalar
Legacy ID (same as entityId)
Product.productId ● Int! non-null scalar
Numeric product identifier retained for compatibility with legacy integrations.
Product.categoryId ● Int! non-null scalar
Default category ID for federation
Product.attributes ● AttributeResultResponse object
Lists attributes for this product based on the search input.
Product.attributes.input ● AttributeResultSearchInput input
Product.classId ● Int! non-null scalar
Class ID for federation compatibility (same as productId)
Product.bundles ● [Bundle!] list object
Bundles that contain this product.
List of all bundles where this product is included as an item, useful for cross-selling and bundle recommendations.
Product.bundles.taxZone ● String scalar
Tax zone for pricing calculations.
Geographic tax zone code used to calculate accurate bundle pricing including applicable taxes. Must be exactly 2 characters representing a country code. Defaults to 'NL' if not specified.
Product.isBundleLeader ● YesNo! non-null enum
Indicates whether this product serves as a leader item in any bundle.
Returns YesNo.Y if the product is designated as the leader item in at least one bundle, YesNo.N otherwise. Leader items typically drive bundle pricing and discount calculations.
Product.hasBundle ● YesNo! non-null enum
Indicates whether this product is included in any bundle.
Returns YesNo.Y if the product is part of at least one bundle (either as a leader or regular item), YesNo.N otherwise. Useful for showing bundle availability indicators on product pages.
Product.favoriteLists ● FavoriteListsResponse object
Collection of favorite lists that contain this product.
Returns paginated results of all favorite lists where this product has been added. Useful for understanding product popularity and usage patterns.
**Response Structure**:
- Paginated list of favorite lists containing this product
- Complete favorite list metadata
- Owner information (company, contact, or customer)
- Creation and modification timestamps
**Analytics Capabilities**:
- Product popularity tracking
- Usage pattern analysis
- Cross-list product relationships
- Owner preference insights
**Use Cases**:
- Product recommendation systems
- Popular item identification
- Cross-selling opportunities
- Inventory demand forecasting
Product.favoriteLists.input ● FavoriteListsSearchInput input
Product.inventory ● ProductInventory! non-null object
Product inventory information including stock levels and availability.
Returns comprehensive inventory data for the product including stock balances across all locations, availability status, and inventory movement history. Used for stock management and availability calculations.
Product.media ● ProductMedia object
Product media images
Product.orderlists ● OrderlistsResponse! non-null object
Order lists that include this product for bulk ordering operations. Returns a paginated collection of order lists where this product has been assigned. For POSITIVE order lists: Users/companies assigned to these lists can see and order this product. For NEGATIVE order lists: Users/companies assigned to these lists cannot see or order this product. Results can be filtered using the input parameter for more specific queries.
Product.orderlists.input ● OrderlistSearchInput input
Search and filtering criteria for order lists that include this product.
Filters the results to show only order lists where this specific product has been assigned. For POSITIVE order lists: Users assigned to these lists can see and order this product. For NEGATIVE order lists: Users assigned to these lists cannot see or order this product. All standard search criteria can be applied in addition to the product-specific filtering.
If not provided, returns all order lists that include this product with default pagination settings.
Validation: All provided search criteria must be valid according to their respective field requirements.
Product.price ● ProductPrice object
Product.price.input ● PriceCalculateProductInput input
Product.priceData ● Price object
Product.bulkPrices ● [ProductPrice!] list object
Product.bulkPrices.input ● UserBulkPriceProductInput input
Product.hidden ● YesNo! non-null enum
Hides the record from public catalog and search surfaces when set.
Product.uuid ● ID! non-null scalar
Globally unique identifier for the product or cluster.
Product.type ● ProductClass! non-null enum
Discriminator that distinguishes between a product and a cluster within the shared catalogue.
Product.sku ● String! non-null scalar
Stock keeping unit. Uniquely identifies a product within the catalogue.
Product.priority ● Int scalar
Relative ranking used when ordering records; higher values surface first.
Product.categoryIds ● [Int!]! non-null scalar
Identifiers of every category the product belongs to.
Product.names ● [LocalizedString!]! non-null object
Localized names shown to end users in catalog and search surfaces. The catalogue's default language must be present.
Product.names.language ● String scalar
Two-letter ISO 639-1 language code that filters the localized names.
Product.descriptions ● [LocalizedString!]! non-null object
Localized long-form descriptions shown on product detail surfaces.
Product.descriptions.language ● String scalar
Two-letter ISO 639-1 language code that filters the localized descriptions.
Product.shortDescriptions ● [LocalizedString!]! non-null object
Localized short descriptions surfaced in listings and tiles.
Product.shortDescriptions.language ● String scalar
Two-letter ISO 639-1 language code that filters the localized short descriptions.
Product.slugs ● [LocalizedString!]! non-null object
URL-friendly identifiers, one per language, used in human-readable links.
Product.slugs.language ● String scalar
Two-letter ISO 639-1 language code that filters the localized slugs.
Product.shortNames ● [LocalizedString!]! non-null object
Localized short labels shown when the full name is too long.
Product.shortNames.language ● String scalar
Two-letter ISO 639-1 language code that filters the localized short labels.
Product.metadataTitles ● [LocalizedString!]! non-null object
Localized titles surfaced in search engine result pages.
Product.metadataTitles.language ● String scalar
Two-letter ISO 639-1 language code that filters the localized metadata titles.
Product.metadataDescriptions ● [LocalizedString!]! non-null object
Localized descriptive snippets surfaced in search engine result pages.
Product.metadataDescriptions.language ● String scalar
Two-letter ISO 639-1 language code that filters the localized metadata descriptions.
Product.metadataKeywords ● [LocalizedString!]! non-null object
Localized keyword lists used by search engines, supplied as comma-separated values.
Product.metadataKeywords.language ● String scalar
Two-letter ISO 639-1 language code that filters the localized metadata keywords.
Product.metadataCanonicalUrls ● [LocalizedString!]! non-null object
Localized canonical URLs that search engines should treat as the authoritative location.
Product.metadataCanonicalUrls.language ● String scalar
Two-letter ISO 639-1 language code that filters the localized canonical URLs.
Product.sources ● [Source!]! non-null object
Pairs of external system names and the identifiers each system assigned to the record.
Product.createdAt ● DateTime! non-null scalar
Timestamp marking when the record was created, in UTC ISO 8601 format.
Product.lastModifiedAt ● DateTime! non-null scalar
Timestamp marking the last modification of the record, in UTC ISO 8601 format.
Product.keywords ● [LocalizedString!]! non-null object
Localized keywords used by search ranking. Supplied as comma-separated lists per language.
Product.keywords.language ● String scalar
Two-letter ISO 639-1 language code that filters the localized keywords.
Product.customKeywords ● [LocalizedString!]! non-null object
Localized custom keywords appended to the search index in addition to the standard keywords.
Product.customKeywords.language ● String scalar
Two-letter ISO 639-1 language code that filters the localized custom keywords.
Product.packageDescriptions ● [LocalizedString!]! non-null object
Localized descriptions of the product packaging.
Product.packageDescriptions.language ● String scalar
Two-letter ISO 639-1 language code that filters the localized packaging descriptions.
Product.status ● ProductStatus! non-null enum
Lifecycle status of the product within the catalogue.
Product.manufacturer ● String! non-null scalar
Name of the manufacturer that produced the product.
Product.supplier ● String! non-null scalar
Name of the supplier that delivers the product.
Product.manufacturerCode ● String! non-null scalar
Code assigned to the product by its manufacturer.
Product.eanCode ● String! non-null scalar
European Article Number barcode value.
Product.supplierCode ● String! non-null scalar
Code assigned to the product by its supplier.
Product.barCode ● String scalar
General-purpose barcode value for warehouse and point-of-sale scanning.
Product.statusExtra ● String scalar
Free-text status note that complements the structured status field.
Product.orderable ● YesNo! non-null enum
Indicates whether the product can currently be added to an order.
Product.returnable ● YesNo! non-null enum
Indicates whether the product can be returned by the customer after purchase.
Product.physical ● YesNo! non-null enum
Distinguishes physical goods from digital ones for shipping and tax handling.
Product.package ● String! non-null scalar
Type of packaging used to ship the product.
Product.packageUnit ● String! non-null scalar
Unit of measurement for the contents of a single package.
Product.packageUnitQuantity ● String! non-null scalar
Quantity of the package unit contained in a single package.
Product.minimumQuantity ● Float! non-null scalar
Smallest quantity a customer may add to a single order line.
Product.unit ● Int! non-null scalar
Unit of measurement used when ordering and pricing the product.
Product.purchaseUnit ● Int! non-null scalar
Unit used by buyers when placing purchase orders.
Product.purchaseMinimumQuantity ● Int! non-null scalar
Smallest quantity that can be placed on a purchase order.
Product.economicOrderQuantity ● Int! non-null scalar
Quantity that minimises ordering and holding costs for purchase orders.
Product.turnoverGroup ● String scalar
Classification used for turnover analysis and financial reporting.
Product.taxonomy ● String scalar
Taxonomy code used to slot the product into external classification systems.
Product.priceGroup ● String scalar
Group used to apply shared pricing rules and discounts to the product.
Product.orderableFrom ● DateTime scalar
Earliest moment from which the product may be ordered.
Product.orderableTo ● DateTime scalar
Latest moment until which the product may be ordered.
Product.releaseDate ● DateTime scalar
Date on which the product is released to the market.
Product.clusterId ● Int scalar
Identifier of the cluster the product is assigned to, if any.
Product.width ● Float scalar
Product width in cm
Product.height ● Float scalar
Product height in cm
Product.depth ● Float scalar
Product depth in cm
Product.weight ● Float scalar
Product weight in kg
Product.containerClass ● ProductContainerClass! non-null enum
Container class - whether product is in category or cluster
Product.category ● Category object
Default category assigned to the product.
Returns null when the product has no default category or the default category does not match the supplied visibility filter.
Product.category.hidden ● YesNo enum
Restricts the default category to one matching the supplied visibility flag.
Product.categories ● CategoryResponse! non-null object
Categories the product belongs to, with filtering, sorting and pagination support.
Product.categories.input ● ProductCategorySearchInput input
Filtering, sorting and pagination criteria for the product's categories.
Product.categoryPath ● [Category!]! non-null object
Ancestor chain of the product's default category, from the root down to the category itself.
Product.categoryPath.hidden ● YesNo enum
Restricts the ancestor chain to categories matching the supplied visibility flag.
Product.crossUpsells ● CrossupsellsResponse! non-null object
Cross- and up-sell relationships in which the product participates, in either direction.
Product.crossUpsells.input ● CrossupsellSearchInput input
Filtering and pagination criteria for the cross-upsell relationships.
Product.crossupsellsFrom ● CrossupsellsResponse! non-null object
Cross- and up-sell relationships originating from the product.
AUTH: Role=[product.OWNER,product.EDITOR,product.VIEWER] OR (('user is authenticated') AND ('userId if present in input matches JWT' AND 'companyId(s) if present in input matches JWT'))
Product.crossupsellsFrom.input ● CrossupsellSearchInput input
Filtering and pagination criteria for the cross-upsell relationships.
Product.crossupsellsTo ● CrossupsellsResponse! non-null object
Cross- and up-sell relationships targeting the product.
AUTH: Role=[product.OWNER,product.EDITOR,product.VIEWER] OR (('user is authenticated') AND ('userId if present in input matches JWT' AND 'companyId(s) if present in input matches JWT'))
Product.crossupsellsTo.input ● CrossupsellSearchInput input
Filtering and pagination criteria for the cross-upsell relationships.
Product.cluster ● Cluster object
Cluster the product is attached to, if any.
Product.cluster.hidden ● Boolean scalar
Restricts the cluster to one matching the supplied visibility flag.
Product.categoryRelations ● [BaseProductCategoryRelationship!]! non-null object
Relationships that link the product to its categories, including the default-category flag.
Product.surcharges ● [Surcharge!]! non-null object
Retrieve all surcharges associated with this product.
Returns a list of surcharges linked to the product with optional filtering capabilities. Used for determining additional fees applicable to the product during pricing calculations.
Possible errors:
- SURCHARGE_LIST_ERROR: Internal server error during surcharge retrieval
- SURCHARGE_NOT_FOUND_ERROR: Product has no associated surcharges
Product.surcharges.input ● SurchargeSearchInput input
Optional search criteria for filtering surcharges.
Allows filtering by type, tax codes, activation status, and other criteria. If not provided, returns all surcharges associated with the product.
Show deprecated
Interfaces
IResource interface
IBaseProduct interface
Base interface for all product types in the system.
Defines common properties shared across products and clusters. This interface provides a unified structure for product-related data while allowing for type-specific implementations.
IProduct interface
Returned By
clusterOptionProductCreate mutation ● clusterOptionProductUpdate mutation ● clusterProductCreate mutation ● clusterProductUpdate mutation ● product query ● productAssignToCluster mutation ● productCreate mutation ● productSetDefaultCategory mutation ● productUnassignFromCluster mutation ● productUpdate mutation
Member Of
BaseProductClusterRelationship object ● BundleItem object ● CartBaseItem object ● CartMainItem object ● Cluster object ● ClusterOption object ● Discount object ● OrderItem object ● ProductCategoryRelationship object ● ProductsRawResponse object ● SurchargeProduct object ● TenderMainItem object
Implemented By
BaseProduct union