Cluster
Cluster entity representing grouped products with shared characteristics.
External entity from the catalog service that provides cluster identification and categorization. Clusters group related products together based on shared attributes, features, or business logic. Used as a reference for cluster-specific attributes and group-level properties within the attribute system.
type Cluster implements IResource, IBaseProduct, ICluster {
id: Int!
clusterId: Int!
categoryId: Int!
attributes(
input: AttributeResultSearchInput
): AttributeResultResponse
favoriteLists(
input: FavoriteListsSearchInput
): FavoriteListsResponse
orderlists(
input: OrderlistSearchInput
): OrderlistsResponse!
language: String @deprecated
class: ProductClass! @deprecated
hidden: YesNo!
uuid: ID!
type: ProductClass!
sku: String! @deprecated
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!
code: String
category(
hidden: YesNo
): Category
categories(
input: ClusterCategorySearchInput
): CategoryResponse!
categoryPath(
hidden: YesNo
): [Category!]!
products(
input: ClusterProductSearchInput
): [Product!]!
defaultProduct(
hidden: Boolean
): Product
clusterConfig: ClusterConfig
config: ClusterConfig
drillDowns: [ClusterDrillDown!] @deprecated
options(
input: ClusterOptionSearchInput
): [ClusterOption!]!
crossupsellsFrom(
input: CrossupsellSearchInput
): CrossupsellsResponse!
crossupsellsTo(
input: CrossupsellSearchInput
): CrossupsellsResponse!
categoryRelations: [BaseProductCategoryRelationship!]!
}
Fields
Cluster.id ● Int! non-null scalar
Identifier of the cluster the product is assigned to, if any.
Cluster.clusterId ● Int! non-null scalar
Identifier of the cluster the product is assigned to, if any.
Cluster.categoryId ● Int! non-null scalar
Identifier of the category exposed as the default for federation purposes.
Cluster.attributes ● AttributeResultResponse object
Lists attributes for this cluster based on the search input.
Cluster.attributes.input ● AttributeResultSearchInput input
Cluster.favoriteLists ● FavoriteListsResponse object
Collection of favorite lists that contain this cluster.
Returns paginated results of all favorite lists where this cluster has been added. Useful for understanding cluster popularity and usage patterns.
**Response Structure**:
- Paginated list of favorite lists containing this cluster
- Complete favorite list metadata
- Owner information (company, contact, or customer)
- Creation and modification timestamps
**Analytics Capabilities**:
- Cluster popularity tracking
- Usage pattern analysis
- Cross-list cluster relationships
- Category preference insights
**Use Cases**:
- Category recommendation systems
- Popular cluster identification
- Bulk product management insights
- Inventory category demand analysis
Cluster.favoriteLists.input ● FavoriteListsSearchInput input
Cluster.orderlists ● OrderlistsResponse! non-null object
Order lists that include this product cluster.
Returns a paginated collection of order lists where this cluster has been assigned.
- POSITIVE order lists: Assigned users/companies can see and order all products in this cluster
- NEGATIVE order lists: Assigned users/companies cannot see or order any products in this cluster
Clusters enable efficient management of product access for groups of related products. Results can be filtered using the input parameter for more specific queries.
Cluster.orderlists.input ● OrderlistSearchInput input
Search and filtering criteria for order lists that include this product cluster.
Filters the results to show only order lists where this specific product cluster has been assigned.
- POSITIVE order lists: Assigned users/companies can see and order products from this cluster
- NEGATIVE order lists: Assigned users/companies cannot see or order products from this cluster
The cluster inclusion means ALL products within this cluster are affected by the order list rules. All standard search criteria can be applied in addition to the cluster-specific filtering.
If not provided, returns all order lists that include this cluster with default pagination settings.
Cluster.hidden ● YesNo! non-null enum
Hides the record from public catalog and search surfaces when set.
Cluster.uuid ● ID! non-null scalar
Globally unique identifier for the product or cluster.
Cluster.type ● ProductClass! non-null enum
Discriminator that distinguishes between a product and a cluster within the shared catalogue.
Cluster.priority ● Int scalar
Relative ranking used when ordering records; higher values surface first.
Cluster.categoryIds ● [Int!]! non-null scalar
Identifiers of every category the product belongs to.
Cluster.names ● [LocalizedString!]! non-null object
Localized names shown to end users in catalog and search surfaces. The catalogue's default language must be present.
Cluster.names.language ● String scalar
Cluster.descriptions ● [LocalizedString!]! non-null object
Localized long-form descriptions shown on product detail surfaces.
Cluster.descriptions.language ● String scalar
Cluster.shortDescriptions ● [LocalizedString!]! non-null object
Localized short descriptions surfaced in listings and tiles.
Cluster.shortDescriptions.language ● String scalar
Cluster.slugs ● [LocalizedString!]! non-null object
URL-friendly identifiers, one per language, used in human-readable links.
Cluster.slugs.language ● String scalar
Cluster.shortNames ● [LocalizedString!]! non-null object
Localized short labels shown when the full name is too long.
Cluster.shortNames.language ● String scalar
Cluster.metadataTitles ● [LocalizedString!]! non-null object
Localized titles surfaced in search engine result pages.
Cluster.metadataTitles.language ● String scalar
Cluster.metadataDescriptions ● [LocalizedString!]! non-null object
Localized descriptive snippets surfaced in search engine result pages.
Cluster.metadataDescriptions.language ● String scalar
Cluster.metadataKeywords ● [LocalizedString!]! non-null object
Localized keyword lists used by search engines, supplied as comma-separated values.
Cluster.metadataKeywords.language ● String scalar
Cluster.metadataCanonicalUrls ● [LocalizedString!]! non-null object
Localized canonical URLs that search engines should treat as the authoritative location.
Cluster.metadataCanonicalUrls.language ● String scalar
Cluster.sources ● [Source!]! non-null object
Pairs of external system names and the identifiers each system assigned to the record.
Cluster.createdAt ● DateTime! non-null scalar
Timestamp marking when the record was created, in UTC ISO 8601 format.
Cluster.lastModifiedAt ● DateTime! non-null scalar
Timestamp marking the last modification of the record, in UTC ISO 8601 format.
Cluster.code ● String scalar
Cluster code. Uniquely identifies a cluster within the catalogue and is only meaningful on cluster records.
Cluster.category ● Category object
Cluster.category.hidden ● YesNo enum
Cluster.categories ● CategoryResponse! non-null object
Cluster.categories.input ● ClusterCategorySearchInput input
Cluster.categoryPath ● [Category!]! non-null object
Cluster.categoryPath.hidden ● YesNo enum
Cluster.products ● [Product!]! non-null object
Cluster.products.input ● ClusterProductSearchInput input
Cluster.defaultProduct ● Product object
Cluster.defaultProduct.hidden ● Boolean scalar
Cluster.clusterConfig ● ClusterConfig object
Cluster.config ● ClusterConfig object
Cluster.options ● [ClusterOption!]! non-null object
Cluster.options.input ● ClusterOptionSearchInput input
Cluster.crossupsellsFrom ● CrossupsellsResponse! non-null object
Cross- and up-sell relationships originating from the cluster.
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'))
Cluster.crossupsellsFrom.input ● CrossupsellSearchInput input
Filtering and pagination criteria for the cross-upsell relationships.
Cluster.crossupsellsTo ● CrossupsellsResponse! non-null object
Cross- and up-sell relationships targeting the cluster.
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'))
Cluster.crossupsellsTo.input ● CrossupsellSearchInput input
Filtering and pagination criteria for the cross-upsell relationships.
Cluster.categoryRelations ● [BaseProductCategoryRelationship!]! non-null object
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.
ICluster interface
Returned By
cluster query ● clusterAssignProduct mutation ● clusterCreate mutation ● clusterSetDefaultCategory mutation ● clusterUnassignProduct mutation ● clusterUpdate mutation
Member Of
BaseProductClusterRelationship object ● ClusterAssignProductsResponse object ● ClustersResponse object ● ClusterUnassignProductsResponse object ● Product object
Implemented By
BaseProduct union