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