All Release Notes

Introduced Product Selection of type Individual Exclusion in Beta

17 March 2023
Composable Commerce
HTTP API
Enhancement
Product catalogProject configurationMessages/SubscriptionsGraphQL

We introduced the Individual Exclusion Product Selection type that lets you model the availability of your Products in different Stores by excluding individual Products explicitly. Before, we supported the Individual type only in which you include individual Products explicitly. We also added Messages triggered when Product Selections of that new type are created, deleted, or updated.

Changes:

  • [API] Added individualExclusion value to ProductSelectionTypeEnum.

  • [API] Added IndividualExclusionProductSelectionType.

  • [API] Added Exclude Product update action for Product Selections.

  • [API] Added Set Variant Exclusion update action for Product Selections.

  • [API] Added ProductSelectionProductExcluded and ProductSelectionVariantExclusionChanged Message.

  • [GraphQL API] Added the following types to the GraphQL schema: ExcludeProductSelectionProduct, IndividualExclusionProductSelectionCreatedPayload, ProductSelectionProductExcluded, ProductSelectionType, ProductSelectionVariantExclusionChanged, ProductVariantExclusion, ProductVariantExclusionDraft, SetProductSelectionVariantExclusion.

  • [GraphQL API] Added the type field to the ProductSelection type.

  • [GraphQL API] Added the type input field to the CreateProductSelectionDraft type.

  • [GraphQL API] Added the excludeProduct input field to ProductSelectionUpdateAction type.

  • [GraphQL API] Added the setVariantExclusion input field to ProductSelectionUpdateAction type.

  • [GraphQL API] Added the staged field to the ProductVariantDeleted type.

The following changes were introduced in terms of GraphQL SDL:

extend type ProductSelection {
type: ProductSelectionType!
}
extend input ProductSelectionUpdateAction {
excludeProduct: ExcludeProductSelectionProduct
setVariantExclusion: SetProductSelectionVariantExclusion
}
extend input CreateProductSelectionDraft {
type: String
}
input ExcludeProductSelectionProduct {
product: ResourceIdentifierInput!
variantExclusion: ProductVariantExclusionDraft
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
type IndividualExclusionProductSelectionCreatedPayload implements ProductSelectionCreatedPayload {
custom: CustomFieldsType
name(
"String is defined for different locales. This argument specifies the desired locale."
locale: Locale,
"List of languages the client is able to understand, and which locale variant is preferred."
acceptLanguage: [Locale!]): String
nameAllLocales: [LocalizedString!]!
type: String!
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
type ProductSelectionProductExcluded implements MessagePayload {
variantExclusion: ProductVariantExclusion
product: Product
productRef: Reference!
type: String!
}
enum ProductSelectionType {
"Type of Product Selection used to include a specific list of individual Products"
individual
"Type of Product Selection used to exclude a specific list of individual Products"
individualExclusion
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
type ProductSelectionVariantExclusionChanged implements MessagePayload {
oldVariantExclusion: ProductVariantExclusion
newVariantExclusion: ProductVariantExclusion
product: Product
productRef: Reference!
type: String!
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
type ProductVariantExclusion {
skus: [String!]!
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
input ProductVariantExclusionDraft {
skus: [String!]
}
input SetProductSelectionVariantExclusion {
product: ResourceIdentifierInput!
variantExclusion: ProductVariantExclusionDraft
}