Skip to main content

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