API Releases
Discover our combined Release Notes page and stay updated with the latest features and improvements! Get comprehensive details on all updates, quickly find specific updates and enhancements with our new search and filter options, and easily browse through different versions and sections.
TypeScript SDK v2 client is now deprecated
As announced previously, the v2 client of the TypeScript SDK is deprecated effective today.
The v2 client will not receive any future updates to fix bugs or security vulnerabilities. If you are currently using the v2 client, you should migrate to the v3 client.
Approval Rules can now be extended with Custom Fields
You can now extend the ApprovalRule resource with Custom Fields. This enhancement allows you to store custom data within your Approval Rule to better meet specific business requirements.
Changes:
- [API] Added optional
custom
field to the ApprovalRule type. - [API] Added Set Custom Type and Set CustomField update actions to Approval Rules.
- [API] Added
approval-rule
to CustomFieldReferenceValue enum. - [API] Added
approval-rule
to ResourceTypeId enum. - [GraphQL API] Added the following types to the GraphQL schema:
SetApprovalRuleCustomField
,SetApprovalRuleCustomType
. - [GraphQL API] Changed the
ApprovalRuleUpdateAction
type:- Input field
setCustomField
was added toApprovalRuleUpdateAction
type - Input field
setCustomType
was added toApprovalRuleUpdateAction
type
- Input field
- [GraphQL API] Changed the
ApprovalRule
type:- Added the
custom
field to theApprovalRule
type.
- Added the
Added the NewMasterVariantAdditionNotAllowed error code
A new error code, NewMasterVariantAdditionNotAllowed, is returned when an import operation fails because a newly imported Product Variant is set as the Master Variant (isMasterVariant=true
).
Only an existing Product Variant can be set as the Master Variant. To resolve the error, you can either update the existing Master Variant or create a new Product Variant and then set it as the Master Variant.
Changes:
- [API] Added the NewMasterVariantAdditionNotAllowed error code.
Added endpoint for checking if ProductTailoring exists
You can now check whether a ProductTailoring exists that matches a given Query Predicate. This new endpoint provides an efficient way to check if a Product Tailoring with specific conditions exists without retrieving the full data.
Changes:
- [API] Added Check if ProductTailoring exists by query predicate endpoint.
Added sort capability for categoryOrderHints to Product Search
The Product Search API now indexes the categoryOrderHints
specified on Products.
In combination with a filter on a category, you can now tell the API to sort the Product Search result by category order hint.
This lets you present the products on a category page in the desired order.
Changes:
- [API] Added
categoryOrderHints.{categoryID}
to the searchable Product fields.
Customer Search achieved general availability status
After collecting feedback during the beta phase, we have moved the Customer Search API out of beta into general availability.
The Customer Search API offers improved performance and enhanced query capabilities, supporting Projects with a large number of Customers. In addition to the Merchant Center, the feature is also intended to support other back-office applications you use. It is not intended for searching through customers in a storefront.
Changes:
- [API] Added
customers
field to SearchIndexingConfiguration on Projects. - [API] Added the SearchNotReady error code.
- [GraphQL API] Added the following types to the GraphQL schema:
ChangeProjectSettingsCustomerSearchStatus
,CustomerSearchConfiguration
,CustomerSearchStatus
. - [GraphQL API] Added the
changeCustomerSearchStatus
input field to theProjectSettingsUpdateAction
type. - [GraphQL API] Added the
customers
field to theSearchIndexingConfiguration
type.
API Extensions now support Customer Groups
You can now extend the Customer Group API with custom business logic using API Extensions. This feature allows you to trigger Extensions on create and update requests to Customer Groups. By using API Extensions, you can integrate with other services and implement custom use cases, modifying the default behavior of the APIs to suit your business needs.
Changes:
- [API] Added
customer-group
to ExtensionResourceTypeId.
Introduced Product Tailoring of Attributes for Product Variants in public beta
We introduced Product Tailoring of Attributes in public beta. You can now customize product attributes for specific brands or countries, modeled with Stores, to enhance your product offering in different markets.
Changes:
- [API] Added ProductTailoringAttribute to the Product Tailoring API.
- [API] Added optional
attributes
field to ProductVariantTailoring and ProductVariantTailoringDraft. - [API] Added ProductTailoringSetAttributeAction and ProductTailoringSetAttributeInAllVariantsAction update actions to the Product Tailoring API.
- [API] Added optional
attributes
field to ProductTailoringAddVariantAction. - [GraphQL API] Added the
attributesRaw
field to theProductVariantTailoring
type. - [GraphQL API] Added the
attributes
field to theProductVariantTailoringInput
type. - [GraphQL API] Added the
SetProductTailoringAttribute
andSetProductTailoringAttributeInAllVariants
types to the GraphQL schema. - [GraphQL API] Added the
setAttributeInAllVariants
andsetAttribute
fields to theProductTailoringUpdateAction
type. - [GraphQL API] Added the
attributes
field to theAddProductVariantTailoring
type.
Enhanced behavior of the image upload endpoint for Products and Product Tailoring
As an evolution of a previous release, we enhanced the behavior of the image upload endpoints for the Product and Product Tailoring APIs to meet performance needs and improve the user experience.
When uploading Product or Product Tailoring images, the API now returns different status codes that indicate the status of the image upload at the time the API responds:
- A
200 OK
response is returned when all sizes of the image have been successfully uploaded to the CDN. - A
202 Accepted
response is returned when thesmall
size of the image has been successfully uploaded to the CDN, but the upload of the other sizes is still ongoing. These other sizes will be available soon thereafter.
The response status code depends on the size of the original image.
If the image is small, the API responds with 200 OK
, and if the image is larger, it responds with 202 Accepted
.
To ensure optimal performance, this change will not be applied to all Projects at once, but will be rolled out gradually over the next few weeks.
Therefore, some Projects may still respond with a 200 OK
status code after only the small
image size has been successfully created.
If you wish to learn more about this change, contact your Customer Success Manager.
Product Tailoring of images and assets achieved general availability status
After collecting feedback during the beta phase, we have moved Product Tailoring of images and assets out of beta and into general availability.
Visit the API reference to learn more about how to customize the images and assets of products for specific brands or regions.
Announcing deprecation of ImpEx
After moving its functionality to the Merchant Center, we are deprecating ImpEx on 31 December 2024. By including this functionality within the Merchant Center, you can manage all aspects of your Composable Commerce Projects with a single interface and take advantage of single sign-on.
Replacement functionality, including CSV import/export, the API Explorer, and the GraphQL IDE, will become available in the Merchant Center between now and the deprecation date.
To be informed when replacement functionality becomes available, subscribe to the Merchant Center Release Notes RSS feed.
Added discount distribution modes for absolute Cart Discounts
You can now choose how absolute discounts are applied to (Custom) Line Items in a Cart. Discounts can be distributed evenly or applied individually to each (Custom) Line Item, giving you more flexibility when creating promotions. Previously, discounts were only distributed proportionately to (Custom) Line Items.
Changes:
- [API] Added DiscountApplicationMode to the Cart Discounts API.
- [API] Added
applicationMode
field to CartDiscountValueAbsoluteDraft and CartDiscountValueAbsolute. - [GraphQL API] Added the following types to the GraphQL schema:
AbsoluteCartDiscountValue
,AbsoluteCartDiscountValueInput
, andDiscountApplicationMode
. - [GraphQL API] Added
absoluteCart
input field to theCartDiscountValueInput
type.
Added support for Custom Fields on Customers to Customer Search
You can now search across all Customers using their Custom Fields, making it easier to find stored information.
Added Messages for changes on Custom Fields and Types on Order Deliveries
You can now subscribe to Messages for changes to Custom Fields and Types on Order Deliveries.
Changes:
- [API] Added the following Messages: DeliveryCustomFieldAdded, DeliveryCustomFieldChanged, DeliveryCustomFieldRemoved, DeliveryCustomTypeSet, and DeliveryCustomTypeRemoved.
- [GraphQL API] Added the following types to the GraphQL schema:
DeliveryCustomFieldAdded
,DeliveryCustomFieldChanged
,DeliveryCustomFieldRemoved
,DeliveryCustomTypeSet
, andDeliveryCustomTypeRemoved
.
The following changes were introduced in terms of GraphQL SDL:
Removed 'publish' field on EmbeddedPriceImport and ProductVariantImport
As previously announced, we have now removed the publish
field on EmbeddedPriceImport and ProductVariantImport.
Use the staged
field to control whether the imported data should be applied to the current and/or staged representation of the Product.
Import API is now available on AWS in North America and Europe
The Import API is now available on AWS in North America and Europe, in addition to the existing Region available on Google Cloud Platform (GCP). For more information about hosts, see Hosts and Authorization.
API Extensions now support Shopping Lists
You can now extend the Shopping Lists API with custom business logic using API Extensions. This feature allows you to trigger Extensions on create and update requests to Shopping Lists. By using API Extensions, you can integrate with other services and implement custom use cases, modifying the default behavior of the APIs to suit your business needs.
Changes:
- [API] Added
shopping-list
to ExtensionResourceTypeId.
Deprecation of the TypeScript SDK v2 client
To make the TypeScript SDK consistent with other Composable Commerce SDKs, we are replacing the v2 client with the v3 client.
The v3 client is Promise-based and enhances overall performance and reliability. This includes adding support for advanced features such as the concurrent modification middleware.
We will deprecate the v2 client on 30 October 2024. For more information on the differences between the v2 and v3 clients, see Migrate to the v3 client.
Added capability to query Shopping Lists by TextLineItem key
You can now filter Shopping Lists by TextLineItem key
in queries.
Changes:
- [API] Added
textLineItems(key)
to Query Predicates on Shopping Lists for the Query ShoppingLists endpoint.
Added support for changing Line Items' order on Carts
You can now change the order of Line Items in a Cart. This enhancement helps Customers identify which Line Items belong together. Previously, the order of Line Items in a Cart was based on the sequence in which the Line Items were added to the Cart.
Changes:
Added Cart Predicate field identifier 'store.key'
With the addition of the store.key
field identifier to Cart Predicates, merchants can now create certain Store-specific Shipping Methods with predicates. This enhancement is valuable in cases where several Stores ship to the same country and use different shipping rates per Store.
Changes:
- [API] Added
store.key
predicate field identifier to Cart Predicates.
Added 'active' field to Shipping Methods
We've added the active
field to ShippingMethod. With this addition, you can now activate or deactivate individual Shipping Methods, as needed. This change helps you to manage Shipping Methods more efficiently by allowing you to temporarily deactivate them when not in use. Previously, you had to remove the Shipping Methods and create them again.
For all existing Shipping Methods, the active
field has been set to true
. Now, when you create or update a Cart or Order, you can only use an active Shipping Method.
Changes:
- [API] Added the Change Active update action to Shipping Methods.
- [API] Added
active
field to ShippingMethod and ShippingMethodDraft types. - [GraphQL API] Added
ChangeShippingMethodActive
type to the GraphQL schema. - [GraphQL API] Added
changeActive
input field to theShippingMethodUpdateAction
type. - [GraphQL API] Added
active
field to theShippingMethod
type. - [GraphQL API] Added
active
input field to theShippingMethodDraft
type.
Added 'addressId' field to Messages related to changes on Custom Fields of Addresses
You can now identify the address that was updated in Messages about changes to Custom Fields on Addresses. Previously, the Message did not identify which address was updated.
Changes:
- [API] Added an optional field,
addressId
, to the following Messages:- for Customers: CustomerAddressCustomTypeSet, CustomerAddressCustomTypeRemoved, CustomerAddressCustomFieldAdded, CustomerAddressCustomFieldChanged, CustomerAddressCustomFieldRemoved, BusinessUnitAddressCustomTypeSet
- for Business Units: BusinessUnitAddressCustomTypeRemoved, BusinessUnitAddressCustomFieldAdded, BusinessUnitAddressCustomFieldChanged, BusinessUnitAddressCustomFieldRemoved
- [GraphQL API] Added the
addressId
field to the following types:CustomerAddressCustomTypeSet
,CustomerAddressCustomTypeRemoved
,CustomerAddressCustomFieldAdded
,CustomerAddressCustomFieldChanged
,CustomerAddressCustomFieldRemoved
,BusinessUnitAddressCustomTypeSet
,BusinessUnitAddressCustomTypeRemoved
,BusinessUnitAddressCustomFieldAdded
,BusinessUnitAddressCustomFieldChanged
,BusinessUnitAddressCustomFieldRemoved
.
Added Cart Predicate field identifier 'origin'
With the addition of the origin
field identifier to Cart Predicates, you can now target the value of the CartOrigin field. This enhancement lets you match against Carts originating from Customers, Merchants, or Quotes. For example, you can use this predicate to create Shipping Methods that are only available for Carts with a specific origin, such as those created by a Merchant.
Changes:
- [API] Added
origin
predicate field identifier to Cart Predicates.
Added Messages for changes on Custom Fields and Types on Embedded Prices
You can now subscribe to Messages for changes to Custom Fields and Types on Embedded Prices.
Changes:
- [API] Added the following Messages: ProductPriceCustomFieldAdded, ProductPriceCustomFieldChanged, ProductPriceCustomFieldRemoved, ProductPriceCustomFieldsSet, and ProductPriceCustomFieldsRemoved.
- [GraphQL API] Added the following types to the GraphQL schema:
ProductPriceCustomFieldAdded
,ProductPriceCustomFieldChanged
,ProductPriceCustomFieldRemoved
,ProductPriceCustomFieldsSet
, andProductPriceCustomFieldsRemoved
.
Business Units now support Approval Rules inheritance
Business Units can now inherit Approval Rules from parent units higher up in the hierarchy. With Approval Rules inheritance, Business Units of type Division automatically inherit the rules of parent units. This can be helpful in situations where a Company has defined a set of Approval Rules that should also be applied to all associated Divisions. For each Division, you can choose the inheritance behavior and explicitly define which rules should apply. To modify the inheritance behavior, use the Change Approval Rule Mode update action.
Changes:
- [API] Added
approvalRuleMode
field to BusinessUnit, BusinessUnitDraft, Company, Division, and DivisionDraft. - [API] Added BusinessUnitApprovalRuleMode type to Business Units.
- [API] Added Change Approval Rule Mode update action to Business Units.
- [API] Added
BusinessUnitApprovalRuleModeChangedMessage
Message. - [GraphQL API] Added the following types to the GraphQL schema:
BusinessUnitApprovalRuleMode
,BusinessUnitApprovalRuleModeChanged
,ChangeBusinessUnitApprovalRuleMode
. - [GraphQL API] Changed the
BusinessUnitDraft
type:- Input field
approvalRuleMode
was added toBusinessUnitDraft
type
- Input field
- [GraphQL API] Changed the
BusinessUnit
type:- Added the
approvalRuleMode
field to theBusinessUnit
type.
- Added the
- [GraphQL API] Changed the
BusinessUnitUpdateAction
type:- Input field
changeApprovalRuleMode
was added toBusinessUnitUpdateAction
type
- Input field
Introduced Product Tailoring of images and assets in beta
We introduced Product Tailoring of images and assets in public beta. You can now customize product images and assets for specific brands or countries, modeled with Stores, to enhance your product offering in different markets.
Changes:
-
[API] Added ProductVariantTailoring and ProductVariantTailoringDraft to the Product Tailoring API.
-
[API] Added
variants
field to ProductTailoringData, ProductTailoringDraft, and ProductTailoringInStoreDraft. -
[API] Added Upload Product Tailoring Image endpoint to the Product Tailoring API.
-
[API] Added Add Variant, Remove Variant, Add External Image, Move Image To Position, Remove Image, Set Images, Set Image Label, Add Asset, Remove Asset, Set Asset Key, Change Asset Order, Change Asset Name, Set Asset Description, Set Asset Tags, Set Asset Sources, Set Asset Custom Type, and Set Asset CustomField update actions to the Product Tailoring API.
-
[API] Added ProductVariantTailoringAdded, ProductVariantTailoringRemoved, ProductTailoringImageAdded, and ProductTailoringImagesSet Messages.
-
[GraphQL API] Added the
variants
field to theProductTailoringCreated
, theHasProductTailoringData
, and theProductTailoringData
type. -
[GraphQL API] Added input field
variants
toProductTailoringDraft
type.
Introduced Customer Search in beta
The new Customer Search API allows merchants to search across a large number of Customers within a Project with improved performance and enhanced query capabilities. The API is intended for back-office use cases, not for searching customer data in a storefront application. The API must be activated for the Project before it can be used.
Changes:
- [API] Introduced Customer Search API in public beta.
- [API] Added Change Customer Search Status update action on Projects.
Product Search achieved general availability status
After collecting feedback during the beta phase, we have moved the Product Search API out of beta into general availability.
With the Product Search API, you can create performant storefront search experiences for your products across Stores and Product Selections to enhance product discoverability. Standalone Prices are taken into account for sorting, filtering, and faceting.
The API's search query language supports compound expressions like AND, OR, NOT, and filter. This allows you, for instance, to filter out specific products from search results or display products based on color criteria, including those with or without a color attribute.
Find a comparison between the Product Search API and the Product Projection Search API on the Storefront search overview page.
Following features of the API remain in public beta:
Introduced support for Private Service Connect
Merchants on Google Cloud Platform can now configure secure, private connections to commercetools HTTP API endpoints, ensuring they can access Composable Commerce services privately, inside their own VPC networks. Private Service Connect traffic is routed between VPC backends without intermediate hops. This ensures that traffic between commercetools and merchants' services remains private. It also has the added benefit of reduced latency and increased bandwidth.
Visit the documentation to learn more about how to configure Private Service Connect for your Project.
Introduced Store-based data fencing for Quotes
We have introduced in-store
endpoints for Quotes, Quote Requests, and Staged Quotes. These endpoints give access only to Quotes associated with specific Stores. In addition, we've added the Create Order in Store from Quote endpoint to the Orders API.
Changes:
- [API] Added
in-store
endpoints for Quotes, Quote Requests, and Staged Quotes. - [API] Added Create Order in Store from Quote endpoint.
- [API] Added optional field
store
to StagedQuote. - [GraphQL API] Changed the
InStore
type:- Added the
stagedQuote
,stagedQuotes
,quoteRequest
,quoteRequests
,quote
, andquotes
fields to theInStore
type.
- Added the
- [GraphQL API] Changed the
StagedQuote
type:- Added the
storeRef
andstore
fields to theStagedQuote
type.
- Added the
- [GraphQL API] Changed the
Mutation
type:- Argument
storeKey
was added toMutation.createQuote
,Mutation.createQuoteRequest
,Mutation.createStagedQuote
,Mutation.createOrderFromQuote
,Mutation.deleteQuote
,Mutation.deleteQuoteRequest
,Mutation.deleteStagedQuote
,Mutation.updateQuote
,Mutation.updateQuoteRequest
, andMutation.updateStagedQuote
fields.
- Argument
Added support for Custom Fields on PaymentInfo to Order Search
We have added fields related to PaymentInfo and ReturnInfo on Orders to the Order Search index. You can now perform search requests with these additional Searchable Order fields on all Orders created after 1 June 2024.
Changes:
- [API] Added
paymentInfo.payments.custom
andpaymentInfo.payments.transactions.custom
fields to Searchable Order fields. - [API] Added
returnInfo.items.shipmentState
,returnInfo.items.paymentState
,returnInfo.items.createdAt
, andreturnInfo.items.lastModifiedAt
fields to Searchable Order fields.
Product Tailoring achieved general availability status
After collecting feedback during the beta phase, we have moved Product Tailoring out of beta and into general availability.
Visit the API reference to learn more about how to customize product details for specific brands or regions.
Improved logic of the success response for the upload of Product images
When uploading Product images, the 200 OK
response is now returned only after all image sizes have been successfully uploaded to the Content Delivery Network (CDN).
Previously, the response was returned after the successful upload of the small
size only. This meant errors were not returned if there were issues uploading the other image sizes.
The new logic enhances the quality of the response because it ensures that all image sizes have been uploaded successfully and will be available on the CDN.
To deliver optimal performance, the change will be released gradually over the next two weeks. Therefore, for some projects, the response will still be returned following the previous logic for a while.
If you wish to learn more about this change, contact your Customer Success Manager.
Increased the limit of Customer Groups in a Project to 10,000
The limit of Customer Groups you can have in a Project has been increased from 1,000 to 10,000.
This limit can be increased per Project after we review the performance impact. You can find more information in the documentation.
Added 'staged' field and deprecated 'publish' field on EmbeddedPriceImport and ProductVariantImport
To simplify the process of importing Embedded Prices and Product Variants, we have added the staged
field to EmbeddedPriceImport and ProductVariantImport. With this new staged
field you can control whether the imported data should be applied to the current and/or staged representation of the Product to update.
The staged
field replaces the publish
field, which is now deprecated and will be removed on 1 August 2024.
This change brings the Import API in line with the HTTP API by using the same fields for the same purpose. If you are using the publish
field to import Embedded Prices and Product Variants, you should use staged
instead and adjust the value based on your use case.
Changes:
- [API] Added
staged
to EmbeddedPriceImport. - [API] Added
staged
to ProductVariantImport. - [API] Deprecated
publish
field on EmbeddedPriceImport. - [API] Deprecated
publish
field on ProductVariantImport.
Postponed changes to publishing Products using the Import API
As previously announced, we will change the behavior of the publish
field when importing Product data. This change helps you to prevent accidental publishing of Products, which can negatively impact customer satisfaction and brand reputation due to poor/incomplete product information, or can lead to the premature exposure of products to customers.
As this may break existing implementations, we have postponed the implementation to 1 August 2024. This gives you additional time to prepare for this change.
Please reach out to your contact at commercetools if you have any questions.
Announcing changes to how the Import API publishes Products
On 1 August 2024*, we will change the behavior of the publish
field when importing Product data. The following changes will reduce the complexity of importing Product data, and will prevent unintended publishing:
- You can only use the
publish
field to publish or unpublish Products when importing Products or Product drafts. - When importing Embedded Prices, Product Variants, or [Product Variant Patches]/../api/import-export/product-variant-patch):
- If a Product is currently unpublished, then it will not be published even if
publish
istrue
. - The Product's
current
projection will not be replaced by thestaged
projection.
- If a Product is currently unpublished, then it will not be published even if
*The original date of this change was 22 April 2024. We have extended the date to give users additional time to adapt to this change.
Added attribution in Client Logging
You can now view the client and source that created or updated resources indirectly. This new feature will help improve the auditability of changes that were made to resources through methods such as importing and exporting.
Changes:
- [API] Added the
attributedTo
property to Client Logging. This field is only present on resources created or modified after 1 April 2024. - [GraphQL API] Added the following types to the GraphQL schema:
Attribution
,AttributionSource
. - [GraphQL API] Added field
attributedTo
to theInitiator
type.
Added Import Discount Codes endpoint in beta
We have added the Import Discount Codes endpoint to the Import API. This new feature allows you to bulk import Discount Codes to your Composable Commerce Project.
You can now send us the whole Discount Code snapshot and we will create/update resources in your Project by calculating the delta.
Changes:
- [API] Added Import Discount Codes endpoint.
Introduced 'ManuallySuspended' health status for Subscriptions
A new ManuallySuspended
health status has been introduced for Subscriptions.
This status solves an issue where, after fixing a problem that caused the health status to keep switching between Healthy
to ConfigurationErrorDeliveryStopped
, you needed to delete and recreate a Subscription. Now when the issue is resolved, the Composable Commerce support team can manually change the status to Healthy
again, so you no longer need to delete and recreate the Subscription.
A Subscription is changed to the ManuallySuspended
status when there is an issue with the Destination queue. The Subscription does not automatically return to a Healthy
status. You must contact the Composable Commerce support team to manually change the status to Healthy
again.
Changes:
- [API] Added
ManuallySuspended
health status.
Introduced Product Search in beta
With the new Product Search API, you can create performant storefront search experiences for your products across Stores, Product Selections, and Standalone Prices to enhance product discoverability.
The API includes enhanced query capabilities, including compound expressions, such as AND, OR, NOT, and filter. This functionality enables you to, for instance, filter out specific products from search results or display products based on color criteria, including those with or without a color attribute.
For different types of attributes, prefix search is provided to support partial matches on Products with similar Product keys, for instance.
You can now perform full-text searches on a specific field only, instead of searching through all indexed product data. You didn't have this option before with the Product Projection Search API.
Changes:
- [API] Introduced Product Search API in public beta.
- [API] Added ProductSearchIndexingMode to Project.
- [API] Added
productsSearch
field to SearchIndexingConfiguration. - [API] Added
mode
field to Change Product Search Indexing Enabled update action on Project.
Order Edits achieved general availability status
After collecting feedback during the beta phase, we have moved Order Edits out of beta and into general availability.
Order Edits differ from direct updates to Orders. You can use Order Edits to make financial changes to the purchase agreement after Order placement. For example, if you need to modify the quantity of a Line Item, thereby affecting the Order total.
Fixed tax subrate calculation for Line Items and Custom Line Items
We fixed the calculation and rounding of tax subrates on (Custom) Line Items to provide a more consistent experience.
Previously, individual (Custom) Line Item taxes were calculated once based on the sum of the combined subrates. If the calculation of a subrate resulted in a fractional tax amount, it could cause discrepancies between the total price of the (Custom) Line Item(s) and the total price of the Cart.
Now, each tax subrate is calculated and rounded separately. This change ensures that the sum of the tax portions is identical to the (Custom) Line Item's total tax amount. As a result, the total price of all (Custom) Line Items will now match the total price of the Cart.
Added 'taxPortions' field to TaxedItemPrice
We've added the taxPortions
field to TaxedItemPrice to be consistent and align with the tax information available on TaxedPrice. Now, you can use the taxPortions
field to view the individual tax subrate amounts for (Custom) Line Items and shipping-related information on a Cart.
Changes:
- [API] Added
taxPortions
to TaxedItemPrice. - [GraphQL API] Changed the
TaxedItemPrice
type:- Added the
taxPortions
field to theTaxedItemPrice
type.
- Added the
Introduced Product Tailoring in beta
We introduced Product Tailoring in public beta, a new feature designed to enhance your product offerings across different markets. With Product Tailoring, you can customize product details like names, descriptions, slugs, and meta fields for specific brands or countries, using Stores to model these market segments.
By defining tailored product data, you can adapt product information to appeal to different markets and, in turn, increase visibility, customer loyalty, and order volumes.
Changes:
- [API] Added Product Tailoring API.
- [API] Added Product Tailoring Messages.
- [GraphQL API] Added following types to the GraphQL schema:
ProductTailoringDraft
,ProductTailoring
,ProductTailoringCreated
,ProductTailoringData
,ProductTailoringDeleted
,ProductTailoringDescriptionSet
,ProductTailoringNameSet
,ProductTailoringPublished
,ProductTailoringQueryResult
,ProductTailoringSlugSet
,ProductTailoringUnpublished
,ProductTailoringUpdateAction
,PublishTailoring
,SetProductTailoringDescription
,SetProductTailoringMetaAttributes
,SetProductTailoringMetaDescription
,SetProductTailoringMetaKeywords
,SetProductTailoringMetaTitle
,SetProductTailoringName
,SetProductTailoringSlug
,UnpublishTailoring
. - [GraphQL API] Added fields
productTailoring
andproductTailoringList
to theInStore
type. - [GraphQL API] Added fields
productTailoring
andproductTailoringList
to theQuery
type. - [GraphQL API] Added fields
createProductTailoring
,updateProductTailoring
, anddeleteProductTailoring
to theMutation
type.
Added support for key and Messages for Discount Codes
You can now use user-defined key values to identify Discount Codes. Previously, you could identify them only by their auto-generated IDs. The enhancement also includes a new update action to set the key
value, allowing you to update Discount Code keys efficiently without the need to bulk import Discount Codes with the updated keys.
Additionally, this enhancement also adds support for Messages for Discount Codes. You can subscribe to these Messages for changes when creating, deleting, or setting a key value for a Discount Code.
Changes:
- [API]
- Added
key
to DiscountCode and DiscountCodeDraft. - Added the Set Key update action to Discount Codes.
- Added
DiscountCodeCreated
,DiscountCodeDeleted
,DiscountCodeKeySet
Messages.
- Added
- [GraphQL API]
- Input field
key
was added toDiscountCode
andDiscountCodeDraft
type. - Input field
setKey
was added toDiscountCodeUpdateAction
type. - Argument
key
was added toQuery.discountCode
field and changedQuery.discountCode(id)
from required to optional. - Argument
key
was added toMutation.updateDiscountCode
field and changedMutation.updateDiscountCode(id)
from required to optional. - Argument
key
was added toMutation.deleteDiscountCode
field that changedMutation.deleteDiscountCode(id)
from required to optional. - Added the following types to the GraphQL schema:
SetDiscountCodeKey
,DiscountCodeCreated
,DiscountCodeDeleted
,DiscountCodeKeySet
.
- Input field
Introducing commercetools Foundry
commercetools Foundry is now available for companies looking to accelerate their time to value with composable commerce. This is a pre-composed solution that comes with a complete set of tailored resources, best practices, expert services, and AI-powered tools designed to simplify and accelerate your adoption of commercetools.
What's included:
- Tailored resources for B2C commerce: a set of resources specifically designed for B2C retail, offering best practice guides for various use cases, along with a Blueprint for B2C Retail, a step-by-step plan that explains how to set up your commerce with commercetools and covers topics from solution architecture overview and project planning to discovery, demo flow, and more.
- AI-powered developer assistant: helping engineering teams with an AI-powered documentation assistant and code generator.
- Store Launchpad for B2C Retail: a quick start for commercetools Projects, ensuring a faster and more efficient go-live.
- Expert services: access to specialized knowledge to accelerate your time to value. Contact your Customer Success Manager to learn more.
AuthenticationMode on Customer achieved general availability status
After collecting feedback during the beta phase, we have moved AuthenticationMode out of beta. The status of the following features has been changed to general availability:
authenticationMode
property on Customer.- Set AuthenticationMode update action.
Added Messages for changes on Cart Discounts
You can now subscribe to Messages that will be triggered when creating and deleting a Cart Discount, and when using the Add Store, Remove Store, and Set Stores actions on Cart Discounts.
Changes:
- [API] Added
CartDiscountCreated
,CartDiscountDeleted
,CartDiscountStoreAdded
,CartDiscountStoreRemoved
,CartDiscountStoresSet
Messages. - [GraphQL API] Added the following types to the GraphQL schema:
CartDiscountCreated
,CartDiscountDeleted
,CartDiscountStoreAdded
,CartDiscountStoreRemoved
,CartDiscountStoresSet
.
Approval Flows can now be extended with Custom Fields
You can now extend the ApprovalFlow resource with Custom Fields. With this, you can add meta-information to your Approval Flow in case it is required for your business logic.
Changes:
- [API] Added optional
custom
field to the ApprovalFlow type. - [API] Added Set Custom Type and Set CustomField update actions to Approval Flows.
- [API] Added
approval-flow
to CustomFieldReferenceValue enum. - [API] Added
approval-flow
to ResourceTypeId enum. - [GraphQL API] Added the following types to the GraphQL schema:
SetApprovalFlowCustomField
,SetApprovalFlowCustomType
. - [GraphQL API] Changed the
ApprovalFlowUpdateAction
type:- Input field
setCustomField
was added toApprovalFlowUpdateAction
type - Input field
setCustomType
was added toApprovalFlowUpdateAction
type
- Input field
- [GraphQL API] Changed the
ApprovalFlow
type:- Added the
custom
field to theApprovalFlow
type.
- Added the
Buyer Approval Flows achieved general availability status
After collecting feedback during the beta phase, we have moved Buyer Approval Flows out of beta. The status of the following features has been changed to general availability:
- Approval Rules, which define the conditions under which an Order must go through an approval process.
- Approval Flows, which manage the overall state of the approval process.
These features are only available as part of Composable Commerce for B2B and will be subject to additional terms and pricing. To get access to Composable Commerce for B2B, contact the Composable Commerce support team.
Deprecation of Java v1 SDK
As announced previously in our long-term support plan for Composable Commerce SDKs, Version 1 (v1) of our Java SDK is now deprecated effective 1 January 2024.
The Java v1 SDK will not receive any future updates to fix bugs or security vulnerabilities. If you are currently using the Java v1 SDK, you should migrate to the Java v2 SDK.
VPC Service Controls for Google Cloud Pub/Sub and Google Cloud Functions
You can now enable VPC Service Controls to further enhance security when commercetools Projects access your Google Cloud Pub/Sub and Google Cloud Functions infrastructure.
Enabling VPC Service Controls offers an additional layer of security for Google Cloud services. This layer is independent of Identity and Access Management (IAM) and provides a broader, context-based security perimeter, ensuring that resources are accessible exclusively within the Google Cloud Platform (GCP) infrastructure of commercetools.
We recommend enabling VPC Service Controls for:
- Google Cloud Pub/Sub Subscription Destinations: ensuring that only commercetools Subscription Messages can reach your Pub/Sub resources.
- Google Cloud Functions API Extension Destinations: ensuring that only API Extension requests from commercetools can access your Cloud Function resources.
Store-specific Cart Discounts achieved general availability status
After collecting feedback during the beta phase, we have moved Store-specific Cart Discounts out of beta. The status of the following features has been changed to general availability:
manage_cart_discounts:{projectKey}:{storeKey}
andview_cart_discounts:{projectKey}:{storeKey}
scopesstores
field on CartDiscount and CartDiscountDraft- Get, Query, Check, Create, Update, and Delete CartDiscount in Store endpoints
- Add Store, Remove Store, and Set Stores update actions on the Cart Discounts API
- StoreCartDiscountsLimitReached and MaxStoreReferencesReached errors
This feature lets you build Cart Discounts specific to a Store to model, for example, customer-specific or brand-specific cart discounts. To know more about Cart Discounts, see the Cart Discounts API.
Cart total discount achieved general availability status
After collecting feedback during the beta phase, we have moved Cart total price discount target out of beta. The status of the following features has been changed to general availability:
- CartDiscountTotalPriceTarget type on the Cart Discounts API
- DiscountOnTotalPrice and DiscountedTotalPricePortion types on the Carts API
discountOnTotalPrice
field on Cart and Order
This feature lets you build cart discounts targeting the total price of a cart, for example, get 5$ off your cart total. To know more about cart discounts, see Cart Discounts API.
API Extensions achieved general availability status
After collecting feedback during the beta phase, we have moved API Extensions to general availability.
Visit the API reference to learn more about how to extend the behavior of an API with your business logic.
Updated structure for HTTP API documentation
We've reorganized our HTTP API documentation to better accommodate our growing number of APIs. The new structure is tailored to make navigation more intuitive, improving productivity and facilitating a more effective integration and use of our APIs.
A key highlight is the increased visibility of our performance tips. These tips are now readily accessible in the API reference, providing you with valuable insights for optimizing your use of our APIs.
Added new endpoints for checking if a resource exists
We have added new endpoints across all resources to enable a more efficient way to determine if a particular resource, identified by a key
, ID
, or Query Parameter, exists. These endpoints are available for all resources, allowing for a consistent and efficient method to verify whether a particular resource is present without retrieving the full data.
Updated the implementation of SetNameChange in Audit Log
As previously announced on 18 July 2023, we changed the type of the previousValue
and nextValue
fields on the Audit Log Change Type SetNameChange
from LocalizedString
to String
.
In addition, the following update actions now trigger SetLocalizedNameChange
instead of SetNameChange
:
- Set Name on Discount Codes.
- Set State Name on States.
- Set Name on Stores.
We've also added support for the Set Name update action on Associate Roles, which triggers SetNameChange
.
Changes:
- [API] Changed type of
previousValue
andnextValue
fields onSetNameChange
fromLocalizedString
toString
. - [API] Changed the following update actions to trigger
SetLocalizedNameChange
instead ofSetNameChange
:- Set Name on Discount Codes.
- Set State Name on States.
- Set Name on Stores.
- [API] Added support for the Set Name update action on Associate Roles to the Change History API.
Added CustomerEmailTokenCreated and CustomerPasswordTokenCreated Messages
You can now subscribe to Messages for email verification and password reset tokens of Customers.
Changes:
- [API] Added CustomerEmailTokenCreated Message.
- [API] Added CustomerPasswordTokenCreated Message.
- [GraphQL API] Added the following types to the GraphQL schema:
CustomerEmailTokenCreated
,CustomerPasswordTokenCreated
.
Fixed field types on OrderFromCartDraft, OrderFromQuoteDraft, and PaymentDraft
We changed the type of the state
field on OrderFromCartDraft and OrderFromQuoteDraft, as well as the customer
field on PaymentDraft, from Reference to ResourceIdentifier. The HTTP API now behaves as documented, and we also aligned the GraphQL API with this behavior.
Changes:
- [API] Changed type of
state
field on OrderFromCartDraft and OrderFromQuoteDraft from Reference to ResourceIdentifier. - [API] Changed type of
customer
field on PaymentDraft from Reference to ResourceIdentifier. - [GraphQL API] Changed the
OrderCartCommand
type:OrderCartCommand.state
input field type changed fromReferenceInput
toResourceIdentifierInput
.
- [GraphQL API] Changed the
OrderQuoteCommand
type:OrderQuoteCommand.state
input field type changed fromReferenceInput
toResourceIdentifierInput
.
- [GraphQL API] Changed the
SetPaymentCustomer
type:SetPaymentCustomer.customer
input field type changed fromReferenceInput
toResourceIdentifierInput
Product Selections of mode Exclusion achieved general availability status
After collecting feedback during the beta phase, we have moved the Product Selections mode IndividualExclusion out of beta.
The status of the following features has been changed to general availability:
variantExclusion
field on ProductSelectionAssignment, on AssignedProductSelection, and on AssignedProductReference for Product Selections withIndividualExclusion
ProductSelectionMode.- ProductVariantExclusion type.
- Exclude Product and Set Variant Exclusion update actions.
- Product Selection Product Excluded and Product Selection Variant Exclusion Changed Messages.
To learn more about managing assortments with Product Selections, see Product Selections API.
Added 'product' field to ProductVariantPatch
We introduced the product
field on ProductVariantPatch. This field allows you to reference the Product which contains the Product Variant, and batches import operations to help prevent concurrency errors.
Changes:
- [Import API] Added the
product
field to ProductVariantPatch.
Added support for discounting the Cart total
You can now create Cart Discounts that target the total price of a Cart. With this enhancement, you can configure promotions such as spend 200€ and get 5€ off the cart total. Previously, this discount configuration was not supported.
Changes:
- [API] Added
discountOnTotalPrice
field to Cart and Order. - [API] Added DiscountOnTotalPrice and DiscountedTotalPricePortion to the Carts API.
- [API] Added CartDiscountTotalPriceTarget type to the Cart Discounts API.
- [GraphQL API] Added the following types to the GraphQL schema:
DiscountOnTotalPrice
,DiscountedTotalPricePortion
,CartDiscountTotalPriceTarget
. - [GraphQL API] Changed the
CartDiscountTargetInput
type:- Input field
totalPrice
was added toCartDiscountTargetInput
type
- Input field
- [GraphQL API] Changed the
Cart
andOrder
type:- Added the
discountOnTotalPrice
field to theCart
andOrder
type.
- Added the
Introduced Buyer Approval Flows in beta
We have released Buyer Approval Flows in public beta. This new feature provides a flexible Order approval process for Business Units. Orders can now be matched to Approval Rules, which determine whether an Order must go through an approval process, and if so, which Associate Roles are needed to approve it. During the approval process, an Approval Flow manages the overall approval state.
With the help of Buyer Approval Flows, you can control each step of the Order approval process, based on the requirements of your organization.
This feature is only available as part of Composable Commerce for B2B and will be subject to additional terms and pricing. To get access to Composable Commerce for B2B, contact the Composable Commerce support team.
Changes:
- [API] Added Approval Rules and Approval Flows APIs.
- [API] Added
ApprovalFlowApprovedMessage
,ApprovalFlowCompletedMessage
,ApprovalFlowCreatedMessage
,ApprovalFlowRejectedMessage
Messages. - [API] Added
ApprovalRuleApproversSetMessage
,ApprovalRuleCreatedMessage
,ApprovalRuleDescriptionSetMessage
,ApprovalRuleKeySetMessage
,ApprovalRuleNameSetMessage
,ApprovalRulePredicateSetMessage
,ApprovalRuleRequestersSetMessage
,ApprovalRuleStatusSetMessage
Messages. - [API] Added
CreateApprovalRules
,UpdateApprovalRules
, andUpdateApprovalFlows
Permissions. - [GraphQL API] Changed the
Permission
type:- Enum values
CreateApprovalRules
,UpdateApprovalRules
andUpdateApprovalFlows
were added to enumPermission
.
- Enum values
Added Messages for changes on Custom Fields and Types on Customer Groups
You can now subscribe to Messages for changes to Custom Fields and Types on Customer Groups.
Changes:
- [API] Added CustomerGroupCustomFieldAdded Message.
- [API] Added CustomerGroupCustomFieldChanged Message.
- [API] Added CustomerGroupCustomFieldRemoved Message.
- [API] Added CustomerGroupCustomTypeSet Message.
- [API] Added CustomerGroupCustomTypeRemoved Message.
- [GraphQL API] Added the following types to the GraphQL schema:
CustomerGroupCustomFieldAdded
,CustomerGroupCustomFieldChanged
,CustomerGroupCustomFieldRemoved
,CustomerGroupCustomTypeRemoved
,CustomerGroupCustomTypeSet
.
Get ProductProjection in Store endpoints achieved general availability status
After collecting feedback during the beta phase, we have moved the Get ProductProjection in Store endpoints out of beta. The status of the following features has been changed to general availability:
To learn how Stores can enable filtering of data in Product Projections, see Stores API.
Added Cart Predicate functions 'shippingInfoExists' and 'forAllShippingInfos'
With the addition of shippingInfoExists
and forAllShippingInfos
functions to Cart Predicates you can now construct predicates that match against ShippingInfo
on Carts with multiple Shipping Methods.
Changes:
- [API] Added functions
shippingInfoExists
andforAllShippingInfos
to Cart Predicates.
Audit Log now identifies changes linked to a specific Business Unit for Orders, Quote Requests, and Quotes.
We have extended the capabilities of Audit Log to help you identify changes made to individual Business Units.
To help you filter Records, we've added the businessUnit
query parameter to the Query Records endpoint. This allows you to filter Records by key for three specific resource types: orders
, quote-requests
, and quotes
.
Changes:
- [API] Added query parameter
businessUnit
to the Query Records endpoint. - [API] Added
businessUnit
field to Record. - [GraphQL API] Added
KeyReference
type. - [GraphQL API] Changed the
ChangeHistory
type:- Added
businessUnit
field toChangeHistory
.
- Added
- [GraphQL API] Added
businessUnit
query parameter fororders
,order
,quotes
,quote
,quoteRequests
,quoteRequest
queries.
Added Messages for changes on Custom Fields and Types on Business Units
You can now subscribe to Messages for Set CustomField, Set Custom Type, Set Address CustomField, and Set Custom Type in Address update actions on Business Units.
Changes:
- [API] Added BusinessUnitCustomFieldAdded Message.
- [API] Added BusinessUnitCustomFieldChanged Message.
- [API] Added BusinessUnitCustomFieldRemoved Message.
- [API] Added BusinessUnitCustomTypeSet Message.
- [API] Added BusinessUnitCustomTypeRemoved Message.
- [API] Added BusinessUnitAddressCustomFieldAdded Message.
- [API] Added BusinessUnitAddressCustomFieldChanged Message.
- [API] Added BusinessUnitAddressCustomFieldRemoved Message.
- [API] Added BusinessUnitAddressCustomTypeSet Message.
- [API] Added BusinessUnitAddressCustomTypeRemoved Message.
- [GraphQL API] Added the following types to the GraphQL schema:
BusinessUnitAddressCustomFieldAdded
,BusinessUnitAddressCustomFieldChanged
,BusinessUnitAddressCustomFieldRemoved
,BusinessUnitAddressCustomTypeRemoved
,BusinessUnitAddressCustomTypeSet
,BusinessUnitCustomFieldAdded
,BusinessUnitCustomFieldChanged
,BusinessUnitCustomFieldRemoved
,BusinessUnitCustomTypeRemoved
,BusinessUnitCustomTypeSet
.
Added Messages for changes on Custom Fields and Types on Customers and Customer Addresses
You can now subscribe to Messages that will be triggered when using Set CustomField, Set Custom Type, Set CustomField in Address, and Set Custom Type in Address actions on Customers.
Changes:
- [API] Added Customer Custom Field Added Message.
- [API] Added Customer Custom Field Changed Message.
- [API] Added Customer Custom Field Removed Message.
- [API] Added Customer Custom Type Set Message.
- [API] Added Customer Custom Type Removed Message.
- [API] Added Customer Address Custom Field Added Message.
- [API] Added Customer Address Custom Field Changed Message.
- [API] Added Customer Address Custom Field Removed Message.
- [API] Added Customer Address Custom Type Set Message.
- [API] Added Customer Address Custom Type Removed Message.
- [GraphQL API] Added the following types to the GraphQL schema:
CustomerCustomFieldAdded
,CustomerCustomFieldChanged
,CustomerCustomFieldRemoved
,CustomerCustomTypeSet
,CustomerCustomTypeRemoved
,CustomerAddressCustomFieldAdded
,CustomerAddressCustomFieldChanged
,CustomerAddressCustomFieldRemoved
,CustomerAddressCustomTypeSet
,CustomerAddressCustomTypeRemoved
.
Added support for creating and deleting staged values in Standalone Prices
You can now create staged values while creating Standalone Prices. Previously, you could only set staged values on existing Standalone Prices after they have been created. Additionally, you can now delete staged values in Standalone Prices. Previously, you could only delete staged values by applying the staged changes to the Standalone Price, or by deleting the respective Standalone Price.
Changes:
- [API] Added
staged
field to StandalonePriceDraft. - [API] Added StagedPriceDraft type to the Standalone Prices API.
- [API] Added Remove Staged Values update action to the Standalone Prices API.
- [API] Added
StandalonePriceStagedChangesRemoved
Message. - [GraphQL API] Added the following types to the GraphQL schema:
StagedPriceDraft
,RemoveStagedChanges
,StandalonePriceStagedChangesRemoved
. - [GraphQL API] Changed the
CreateStandalonePrice
type:- Added the
staged
field to theStandalonePriceUpdateAction
type.
- Added the
- [GraphQL API] Changed the
StandalonePriceUpdateAction
type:- Input field
removeStagedChanges
was added toStandalonePriceUpdateAction
type.
- Input field
Quotes achieved general availability status
After collecting feedback during the beta phase, we have moved Quotes out of beta. The status of the following features has been changed to general availability:
- Creating Quote Requests.
- Creating Staged Quotes with the ability to modify discounts, product quantity, expiration date, and add a note to the Buyer.
- Creating a Quote from a Staged Quote as the offer the Seller makes to the Buyer.
- Creating an Order from a Quote.
- Renegotiation of a Quote between the Buyer and Seller.
In addition, we've also removed the Failed
value from the QuoteState and MyQuoteState enums, as it is an unused value that the API does not return.
Changes:
- [API] Removed
Failed
value from QuoteState enum. - [API] Removed
Failed
value from MyQuoteState enum. - [GraphQL API] Changed the
QuoteState
type:- Enum value
Failed
was removed from enumQuoteState
- Enum value
- [GraphQL API] Changed the
MyQuoteState
type:- Enum value
Failed
was removed from enumMyQuoteState
- Enum value
Added 'perMethodExternalTaxRate' field to LineItemDraft
With the addition of perMethodExternalTaxRate
on LineItemDraft, you can now set individual external Tax Rates for multiple Shipping Methods within a Line Item. Previously, you had to issue the Set LineItem Tax Rate
update action for each Shipping Method.
Changes:
- [API] Added the
perMethodExternalTaxRate
field to LineItemDraft. - [API] Added the
MethodExternalTaxRateDraft
type to the Carts API. - [GraphQL API] Added the following types to the GraphQL schema:
MethodExternalTaxRateDraft
,MethodExternalTaxRateDraftOutput
. - [GraphQL API] Changed the
LineItemDraftOutput
type:- Added the
perMethodExternalTaxRate
field to theLineItemDraftOutput
type.
- Added the
- [GraphQL API] Changed the
AddStagedOrderLineItem
type:- Input field
perMethodExternalTaxRate
was added toAddStagedOrderLineItem
type.
- Input field
- [GraphQL API] Changed the
AddCartLineItem
type:- Input field
perMethodExternalTaxRate
was added toAddCartLineItem
type.
- Input field
Added GraphQL support for Messages on QuoteRequests, StagedQuotes, and Quotes
You can now query QuoteRequest, StagedQuote, and Quote Messages via GraphQL.
In addition, you can now subscribe to Messages about Quote renegotiation requests.
Changes:
- [API] added QuoteRenegotiationRequested Message.
- [GraphQL API] Added the following types to the GraphQL schema:
QuoteCreated
,QuoteCustomerChanged
,QuoteDeleted
,QuoteRenegotiationRequested
,QuoteRequestCreated
,QuoteRequestCustomerChanged
,QuoteRequestDeleted
,QuoteRequestStateChanged
,QuoteRequestStateTransition
,QuoteStateChanged
,QuoteStateTransition
,StagedQuoteCreated
,StagedQuoteDeleted
,StagedQuoteSellerCommentSet
,StagedQuoteStateChanged
,StagedQuoteStateTransition
,StagedQuoteValidToSet
. - [GraphQL API] Changed the
Quote
type:- Added the
customerGroup
field to theQuote
type. - Added the
customerGroupRef
field to theQuote
type.
- Added the
- [GraphQL API] Changed the
QuoteRequest
type:- Added the
customerGroup
field to theQuoteRequest
type. - Added the
customerGroupRef
field to theQuoteRequest
type.
- Added the
Added GraphQL support for querying Quotes and Quote Requests as an Associate
We've introduced GraphQL support for querying Quotes and Quote Requests as an Associate.
Changes:
- [GraphQL API] Added the following types to the GraphQL schema:
QuoteQueryInterface
,QuoteRequestQueryInterface
. - [GraphQL API] Changed the
AsAssociate
type:AsAssociate
object type now implementsQuoteRequestQueryInterface
interfaceAsAssociate
object type now implementsQuoteQueryInterface
interface
Introduced 'cart' field on QuoteRequest
With the introduction of the cart
field on QuoteRequest, you can now know the Cart from which a Quote was requested.
Changes:
- [API] Added the
cart
field to QuoteRequest. - [GraphQL API] Changed the
QuoteRequest
type:- Added the
cartRef
field to theQuoteRequest
type.
- Added the
Audit Log now identifies changes made by Associates on Business Units, Orders, Quote Requests, and Quotes.
We have extended the capabilities of Audit Log to identify changes made by Associates in the context of a Business Unit.
To help you filter Records, we've added the associateId
query parameter to the Query Records endpoint. This allows you to filter Records by key for the following resource types: business-units
, orders
, quote-requests
, and quotes
.
Changes:
- [API] Added query parameter
associateId
to the Query Records endpoint. - [API] Added
associate
field to themodifiedBy
property of Record. - [API] Updated enum
type
field ofmodifiedBy
property of Record to includeassociate
option. - [GraphQL API] Changed the Query type:
- Added the
associateId
property to the following fields:businessUnits
,businessUnit
,orders
,order
,quotes
,quote
,quoteRequests
,quoteRequest
.
- Added the
- [GraphQL API] Changed the
ChangeHistory
type:- Added
associate
field tomodifiedBy
property ofChangeHistory
.
- Added
- [GraphQL API] Changed the
ModifiedByType
enum:- Added
associate
option.
- Added
Business Units achieved general availability status
After collecting feedback during the beta phase, we have moved Business Units and Associate Roles out of beta. The status of the following features has been changed to general availability:
- Creating, managing, and querying Business Units.
- Linking Carts, Orders, Quote Requests, Staged Quotes, and Quotes to Business Units.
- Creating Associate Roles with granular permissions.
- Assigning Associate Roles to Associates in Business Units.
- Validating that an Associate has sufficient Permissions on a given resource with associate endpoints.
These features are only available as part of Composable Commerce for B2B and will be subject to additional terms and pricing. To get access to Composable Commerce for B2B, contact the Composable Commerce support team.
Introduced 'key' field on ShoppingListLineItem and TextLineItem
We introduced the key
field on ShoppingListLineItem, ShoppingListLineItemDraft, TextLineItem, and TextLineItemDraft. We also added lineItemKey
and textLineItemKey
on update actions referencing Shopping List Line Items and Text Line Items. This ensures a consistent experience when working with external identifiers across different entity types in Composable Commerce.
Changes:
- [API] Added
key
to the following Shopping List types: - [API] Added the optional
key
field on the following update actions on Shopping Lists and My Shopping Lists: - [API] Added
lineItemKey
and madelineItemId
optional on the following update actions on ShoppingLists and My Shopping Lists:- Change ShoppingListLineItem Quantity, Remove ShoppingListLineItem, Set ShoppingListLineItem Custom Type, Set ShoppingListLineItem CustomField, Set TextLineItem Description, Set TextLineItem Custom Type, Set TextLineItem Custom Field, Change TextLineItem Name, Change TextLineItem Quantity, and Remove TextLine Item.
- [GraphQL API] Changed the
SetShoppingListTextLineItemDescription
type:SetShoppingListTextLineItemDescription.textLineItemId
input field type changed fromString!
toString
- Input field
textLineItemKey
was added toSetShoppingListTextLineItemDescription
type
Added 'taxedPricePortions' field to CustomLineItem
We introduced the taxedPricePortions
field on CustomLineItem to add additional support for Carts containing multiple Shipping Methods.
Changes:
- [API] Added the
taxedPricePortions
field to CustomLineItem. - [API] Added the
shippingKey
field to Set CustomLineItem TaxAmount and Set CustomLineItem TaxRate update actions on Carts. - [API] Added the
shippingKey
field to Set CustomLineItem TaxAmount and Set CustomLineItem TaxRate update actions on Order Edits. - [GraphQL API] Changed the
CustomLineItem
type:- Added the
taxedPricePortions
field to theCustomLineItem
type.
- Added the
- [GraphQL API] Changed the
SetCartCustomLineItemTaxAmount
type:- Added the
shippingKey
field to theSetCartCustomLineItemTaxAmount
type.
- Added the
- [GraphQL API] Changed the
SetCartCustomLineItemTaxRate
type:- Added the
shippingKey
field to theSetCartCustomLineItemTaxRate
type.
- Added the
- [GraphQL API] Changed the
SetStagedOrderCustomLineItemTaxAmount
type:- Added the
shippingKey
field to theSetStagedOrderCustomLineItemTaxAmount
type.
- Added the
- [GraphQL API] Changed the
SetStagedOrderCustomLineItemTaxRate
type:- Added the
shippingKey
field to theSetStagedOrderCustomLineItemTaxRate
type.
- Added the
Removed deprecated ProductSelectionType
As announced before we have now removed the deprecated type
field from ProductSelection and its draft, alongside the deprecated ProductSelectionType. The feature has been replaced by ProductSelectionMode kept in the mode
field of the ProductSelection.
Changes:
- [API] Removed the
type
field from Product Selection and ProductSelectionDraft. - [API] Removed
ProductSelectionTypeEnum
,IndividualProductSelectionType
, andIndividualExclusionProductSelectionType
from the Product Selections API. - [GraphQL API] Removed the
type
field from theProductSelection
type. - [GraphQL API] Removed the input field
type
from theCreateProductSelectionDraft
type.
Removed deprecated roles on Associates in Business Units
Following the deprecation announcement on 2 May 2023, we have now fully removed the deprecated AssociateRole enum with Buyer
and Admin
values as well as the roles
field on Associate and AssociateDraft.
The deprecated functionality has been replaced by the Associate Roles API. Use the associateRoleAssignments
property to assign Associate Roles to Associates.
Changes:
- [API] Removed
roles
from Associate and AssociateDraft. - [API] Removed AssociateRole enum with
Buyer
andAdmin
values.
Added Messages for changes on Custom Fields and Types on Orders
You can now subscribe to Messages that will be triggered when using Set CustomField and Set Custom Type actions on Orders.
Changes:
- [API] Added OrderCustomFieldAdded Message.
- [API] Added OrderCustomFieldChanged Message.
- [API] Added OrderCustomFieldRemoved Message.
- [API] Added OrderCustomTypeSet Message.
- [API] Added OrderCustomTypeRemoved Message.
- [GraphQL API] Added the following types to the GraphQL schema:
OrderCustomFieldAdded
,OrderCustomFieldChanged
,OrderCustomFieldRemoved
,OrderCustomTypeRemoved
,OrderCustomTypeSet
.
Changed EmbeddedPriceDraftImport key field to be required
As announced before, we have now changed the key
field on EmbeddedPriceDraftImport to be required.
You must now include a value for key
in EmbeddedPriceDraftImport when importing Embedded Prices using the Import Product drafts endpoint.
Changes:
- [API] Changed
key
of EmbeddedPriceDraftImport to be required on the Import Product drafts endpoint.
Introduced 'key' field on Return Items
We introduced the key
field on LineItemReturnItem, CustomLineItemReturnItem, and ReturnItemDraft. We also introduced returnItemKey
on update actions referencing Return Items for Orders and Order Edits. This ensures a consistent experience when working with external identifiers across different entity types in Composable Commerce.
Changes:
- [API] Added
key
to the following Order types: - [API] Added
returnItemKey
and madereturnItemId
optional on the following update actions on Orders: - [API] Added
returnItemKey
and madereturnItemId
optional on the following update actions on Orders Edits: - [GraphQL API] Changed the
SetStagedOrderReturnPaymentStateOutput
type:- Added the
returnItemKey
field to theSetStagedOrderReturnPaymentStateOutput
type. SetStagedOrderReturnPaymentStateOutput.returnItemId
field type changed fromString!
toString
- Added the
- [GraphQL API] Changed the
SetStagedOrderReturnItemCustomType
type:- Input field
returnItemKey
was added toSetStagedOrderReturnItemCustomType
type SetStagedOrderReturnItemCustomType.returnItemId
input field type changed fromString!
toString
- Input field
Added support for high precision money on fixed price Cart Discounts
With this enhancement, fixed price Cart Discounts now support money values in high precision to support your business needs. Previously, you could use money values in cent precision only for fixed price Cart Discounts.
Changes:
- [API] Changed the type of
money
field on CartDiscountValueFixed from CentPrecisionMoney to TypedMoney. - [API] Changed the type of
money
field on CartDiscountValueFixedDraft from Money to TypedMoneyDraft. - [GraphQL API] Added the following types to the GraphQL schema:
CartDiscountValueBaseMoneyInput
. - [GraphQL API] Changed the
FixedPriceDiscountValue
type:FixedPriceDiscountValue.money
field type changed from[Money!]!
to[BaseMoney!]!
- [GraphQL API] Changed the
FixedPriceDiscountValueInput
type:FixedPriceDiscountValueInput.money
input field type changed from[MoneyInput!]!
to[CartDiscountValueBaseMoneyInput!]!
Added Get QuoteRequest endpoints to My Quote Requests
Buyers can now retrieve QuoteRequests by ID or key using the My Quote Requests API.
Changes:
- [API] Added Get QuoteRequest by ID endpoint.
- [API] Added Get QuoteRequest by Key endpoint.
Introduced 'customLineItemKey' field on Orders Messages and update actions
We introduced the customLineItemKey
on Order Messages referencing Custom Line Items. The customLineItemKey
field is now also available on Transition LineItem State and Import LineItem State update actions on Orders and Order Edits. In addition, we introduced the key
field on CustomLineItemImportDraft and LineItemImportDraft. This ensures a consistent experience when working with external identifiers across different entity types in Composable Commerce.
Changes:
- [API] Added
customLineItemKey
to the following Order Messages:- CustomLineItemStateTransition Message, OrderCustomLineItemDiscountSet Message, OrderCustomLineItemQuantityChanged Message, and OrderCustomLineItemRemoved Message.
- [API] Added
key
to the following Order Import types: - [API] Added
customLineItemKey
and madecustomerLineItemId
optional on the following update actions on Orders: - [API] Added
customLineItemKey
and madecustomerLineItemId
optional on the following update actions on Order Edits: - [GraphQL API] Changed the
TransitionStagedOrderCustomLineItemStateOutput
type:TransitionStagedOrderCustomLineItemStateOutput.customLineItemId
field type changed fromString!
toString
Addresses field is now optional on Customer Import
The addresses
field in CustomerImport on the Import Customers endpoint has changed from required to optional. This change aligns the Import API with the HTTP API and makes it easier for users to create and update Customers with the Import API.
Audit Log now tracks changes on Associate Roles
We have extended the capabilities of Audit Log to track changes to Associate Roles. In addition, we introduced new Change Types for Business Units.
To ensure a consistent experience when working with different Change Types across the Change History API, we are adjusting the implementation of SetNameChange
and introducing SetLocalizedNameChange.
From 18 October 2023:
SetNameChange
fieldspreviousValue
andnextValue
will change to typeString
.- The following update actions will trigger
SetLocalizedNameChange
instead ofSetNameChange
:- Set Name on Discount Codes.
- Set State Name on States.
- Set Name on Stores.
Changes:
- [API] Added the following Change Types:
- Associate Roles: ChangeBuyerAssignableChange, SetPermissionsChange.
- Business Units: AddInheritedAssociateChange, ChangeInheritedAssociateChange, RemoveInheritedAssociateChange.
- [API] Added Label
AssociateRoleLabel
. - [API] Added
associate-role
to ChangeHistoryResourceType enum. - [GraphQL API] Added the following types to the GraphQL schema:
AssociateRoleChangeInput
,AssociateRoleLabel
.
Enhanced Client Logging to include changes of Associates
We updated Client Logging to include information about Associates performing changes. This enhancement is specific to Associates who create or update a Business Unit, Cart, Order, Quote Request, or Quote within the context of associate endpoints. The createdBy
and lastModifiedBy
properties of affected resources now contain the associate
field, referencing the Customer who performed the change. This brings greater visibility into the operations Associates perform within a Business Unit.
- [API] Added
associate
to CreatedBy. - [API] Added
associate
to LastModifiedBy. - [GraphQL API] Changed the
Initiator
type:- Added the
associateRef
field to theInitiator
type.
- Added the
Added ChangeSubscriptions for Associate Roles
You can now subscribe to notifications about changes to Associate Roles.
This feature is only available as part of Composable Commerce for B2B and will be subject to additional terms and pricing. To get access to Composable Commerce for B2B, contact the Composable Commerce support team.
Changes:
- [API] Added the
associate-roles
type to ChangeSubscriptionResourceTypeId.
Introduced 'lineItemKey' field on Messages related to Order Line Items
We introduced the lineItemKey
on Order Messages referencing Line Items. The lineItemKey
field is now also available on Transition LineItem State and Import LineItem State update actions on Orders and Order Edits. This ensures a consistent experience when working with external identifiers across different entity types in Composable Commerce.
Changes:
- [API] Added
lineItemKey
and madelineItemId
optional on the following update actions on Orders: - [API] Added
lineItemKey
and madelineItemId
optional on the following update actions on Order Edits: - [API] Added
lineItemKey
to the following Order Messages:- LineItemStateTransition Message, OrderLineItemRemoved Message, OrderLineItemDistributionChannelSet Message, and OrderLineItemDiscountSet Message.
- [GraphQL API] Changed the
ImportStagedOrderLineItemState
type:ImportStagedOrderLineItemState.lineItemId
input field type changed fromString!
toString
- Input field
lineItemKey
was added toImportStagedOrderLineItemState
type
Introduced 'customLineItemKey' field on update actions related to CustomLineItem
We introduced the customLineItemKey
field on update actions referencing Custom Line Items on Carts, Orders, and Order Edits. The customLineItemId
field is now optional on the affected update actions. This ensures a consistent experience when working with external identifiers across different entity types in Composable Commerce.
Changes:
- [API] Added
customLineItemKey
and madecustomLineItemId
optional on the following update actions on Carts:- Remove CustomLineItem, Change CustomLineItem Quantity, Set CustomLineItem TaxRate, Set CustomLineItem TaxAmount, Change CustomLineItem Price Mode, Change CustomLineItem Money, Set CustomLineItem ShippingDetails, Apply DeltaToCustomLineItemShippingDetailsTargets, Set CustomLineItem Custom Type, Set CustomLineItem CustomField.
- [API] Added
customLineItemKey
and madecustomLineItemId
optional on the following update actions on Orders: - [API] Added
customLineItemKey
and madecustomLineItemId
optional on the following update actions on Order Edits: - [GraphQL API] Changed the
RemoveStagedOrderCustomLineItemOutput
type:RemoveStagedOrderCustomLineItemOutput.customLineItemId
field type changed fromString!
toString
- Added the
customLineItemKey
field to theRemoveStagedOrderCustomLineItemOutput
type.
Extended the date when the EmbeddedPriceDraftImport key field changes from optional to required
As announced before, the key
field on EmbeddedPriceDraftImport is changing from optional to required.
The effective date of this change has been extended to 31 July 2023. This extension provides users with additional time to make necessary updates to accommodate this change.
Introduced Store-specific Cart Discounts in beta
With the introduction of Store-specific Cart Discounts in public beta, you can now define Cart Discounts that are applicable to specific Stores. Previously, you could only define Cart Discounts that are active across all the Stores in your Project.
You can restrict the permissions of API Clients to view and manage Cart Discounts in a specific Store only. Previously, such permissions could only be managed globally for all Cart Discounts in a Project at the same time. However, the permissions set are not exclusive in the following instances:
- Cart Discounts requiring a Discount Code can be linked to a Discount Code created by any user.
- When using Custom Fields, if any Custom Field references Cart Discounts, all Cart Discounts will be visible.
With this enhancement, the limit for Cart Discounts that do not require a Discount Code has been increased. In addition to the 100 active Cart Discounts that are independent of a Store, you can now have 100 Cart Discounts per Store. Thus, the overall limit is 100 + (100 * number of Stores in a Project).
Introduced 'key' field on CustomLineItem
We introduced the key
field on CustomLineItem and CustomLineItemDraft. This ensures a consistent experience when working with external identifiers across different entity types in Composable Commerce.
Changes:
- [API] Added the
key
field to CustomLineItem and CustomLineItemDraft. - [API] Added
key
field to Add CustomLineItem update action on Carts. - [API] Added
key
field to Add CustomLineItem update action on Order Edits. - [GraphQL API] Changed the
CustomLineItemDraftOutput
type:- Added the
key
field to theCustomLineItemDraftOutput
type.
- Added the
- [GraphQL API] Changed the
AddCartCustomLineItem
type:- Input field
key
was added toAddCartCustomLineItem
type.
- Input field
- [GraphQL API] Changed the
AddStagedOrderCustomLineItem
type:- Input field
key
was added toAddStagedOrderCustomLineItem
type.
- Input field
- [GraphQL API] Changed the
CustomLineItem
type:- Added the
key
field to theCustomLineItem
type.
- Added the
- [GraphQL API] Changed the
CustomLineItemDraft
type:- Input field
key
was added toCustomLineItemDraft
type.
- Input field
Audit Log AWS Regions achieved general availability status
After collecting feedback during the beta phase, we have moved all AWS Regions out of beta and into general availability.
Increased the limit of Associates in a Business Unit to 2000
A Business Unit can now contain up to 2000 Associates. This is an increase from the previous limit of 100.
Removed deprecated names of Product Variant Selection types
As announced before we have now removed the deprecated values from the type
field of ProductVariantSelection.
To assign Variants to Product Selections, use the IncludeOnly and IncludeAllExcept types instead.
Changes:
- [API] Removed
inclusion
andexclusion
values from thetype
field of ProductVariantSelection. - [GraphQL API] Removed the following types on the GraphQL schema:
ProductVariantSelectionExclusion
,ProductVariantSelectionInclusion
.
Audit Log now tracks changes on Business Units
We have extended the capabilities of Audit Log to track changes to Business Units. In addition, we introduced new Change Types for Stores, Product Selections, and Quotes.
To help you filter Records, we've added the resourceKey
query parameter to the Query Records endpoint. This allows you to filter Records by key for three specific resource types: business-units
, products
, and stores
.
Changes:
- [API] Added the following Change Types:
- Business Units: AddAssociateChange, ChangeAssociateChange, ChangeAssociateModeChange, ChangeParentUnitChange, ChangeStatusChange, RemoveAssociateChange, SetAddressCustomFieldChange, SetAddressCustomTypeChange, SetContactEmailChange, SetStoreModeChange.
- Stores: AddProductSelectionChange, ChangeProductSelectionActiveChange, RemoveProductSelectionChange.
- Product Selections: AddProductChange, SetVariantSelectionChange.
- Quotes: RequestQuoteRenegotiationChange.
- [API] Added Label
BusinessUnitLabel
. - [API] Added query parameter
resourceKey
to the Query Records endpoint. - [API] Added
key
field toresource
property of Record. - [API] Added
business-unit
to ChangeHistoryResourceType enum. - [GraphQL API] Added the following types to the GraphQL schema:
BusinessUnitChangeInput
,ResourceIdentifier
,BusinessUnitLabel
. - [GraphQL API] Changed the
ResourceTypes
type:- Added
BusinessUnit
to the enumResourceTypes
.
- Added
- [GraphQL API] Changed the Query type:
- Added the
businessUnits
field to the Query type. - Added the
businessUnit
field to the Query type. - Added the
resourceKey
property to theproducts
field. - Added the
resourceKey
property to thestores
field.
- Added the
- [GraphQL API] Changed the
ChangeHistory
type:- Added
key
field toresource
property ofChangeHistory
.
- Added
The following change was introduced in terms of GraphQL SDL:
Staged and active Standalone Prices achieved general availability status
After collecting feedback during the beta phase, we have moved the staged
and active
fields on StandalonePrice out of beta. The status of the following features has been changed to general availability:
staged
andactive
fields on StandalonePrice.active
field on StandalonePriceDraft.staged
field on Change Value update action.- Apply Staged Changes and Change Active update actions.
- Standalone Price Value Changed, Standalone Price Active Changed, and Standalone Price Staged Changes Applied Messages.
Added 'lineItemKey' to Cart, Order, and Order Edit update actions
We introduced the lineItemKey
field on update actions referencing Line Items on Carts, Orders, and Order Edits. The lineItemId
field is now optional on the affected update actions. This ensures a consistent experience when working with external identifiers across different entity types in Composable Commerce.
Changes:
- [API] Added
lineItemKey
and madelineItemId
optional on the following update actions on Carts:- Remove LineItem, Change LineItem Quantity, Set LineItem TaxRate, Set LineItem TaxAmount, Set LineItem Price, Set LineItem TotalPrice, Set LineItem DistributionChannel, Set LineItem SupplyChannel, Set LineItem ShippingDetails, Apply DeltaToLineItemShippingDetailsTargets, Set LineItem Custom Type, Set LineItem CustomField, and Set LineItem InventoryMode.
- [API] Added
lineItemKey
and madelineItemId
optional on the following update actions on My Carts: - [API] Added
lineItemKey
and madelineItemId
optional on the following update actions on Orders: - [API] Added
lineItemKey
and madelineItemId
optional on the following update actions on Order Edits: - [GraphQL API] Changed the
SetCartLineItemTaxAmount
type:SetCartLineItemTaxAmount.lineItemId
input field type changed fromString!
toString
- Input field
lineItemKey
was added toSetCartLineItemTaxAmount
type
- [GraphQL API] Changed the
SetStagedOrderLineItemCustomType
type:- Input field
lineItemKey
was added toSetStagedOrderLineItemCustomType
type SetStagedOrderLineItemCustomType.lineItemId
input field type changed fromString!
toString
- Input field
Fixed 'InventoryEntryCreated' type in the GraphQL API
We made a correction to the InventoryEntryCreated
type in the GraphQL API. The type of the field inventoryEntry
was incorrectly marked as InventoryEntryCreatedContent!
instead of InventoryEntry!
. This was not in line with the documentation of the InventoryEntryCreated Message and caused the SDKs to not work correctly.
Additionally, we removed the types InventoryEntryCreatedContent
and MessageId
from the GraphQL schema since they are no longer required.
Changes:
- [GraphQL API] Removed the following types from the GraphQL schema:
InventoryEntryCreatedContent
,MessageId
. - [GraphQL API] Changed the
InventoryEntryCreated
type:InventoryEntryCreated.inventoryEntry
field type changed fromInventoryEntryCreatedContent!
toInventoryEntry!
Added 'perMethodTaxRate' field to CustomLineItems
To align with the HTTP API, we now added support for the perMethodTaxRate
field on CustomLineItems to the GraphQL API.
Changes:
- [GraphQL API] Added the
perMethodTaxRate
field to theCustomLineItem
type.
Added 'sku' field to Standalone Price Deleted Message
The Standalone Price Deleted Message now includes a new field, sku
, which helps you identify the associated SKU when you delete a Standalone Price.
Changes:
- [API] Added field
sku
to Standalone Price Deleted Message. - [GraphQL API] Changed the
StandalonePriceDeleted
type:- Added the
sku
field to theStandalonePriceDeleted
type.
- Added the
Added update actions to set Price tiers on Standalone Prices
You can now update Price tiers on existing Standalone Prices. Before, you had to delete and to recreate the Standalone Price with the new Price tier to achieve this.
Changes:
- [API] Added Add Price Tier, Remove Price Tier, and Set Price Tiers update actions to the Standalone Prices API.
- [API] Added Standalone Price Tier Added, Standalone Price Tier Removed, and Standalone Price Tiers Set Messages.
- [GraphQL API] Added the following types to the GraphQL schema:
AddStandalonePriceTier
,RemoveStandalonePriceTier
,SetStandalonePriceTiers
,StandalonePriceTierAdded
,StandalonePriceTierRemoved
,StandalonePriceTiersSet
- [GraphQL API] Changed the
StandalonePriceUpdateAction
type:- Input field
removePriceTier
was added toStandalonePriceUpdateAction
type - Input field
addPriceTier
was added toStandalonePriceUpdateAction
type - Input field
setPriceTiers
was added toStandalonePriceUpdateAction
type
- Input field
Removed deprecated fields from Remove Price update action
As announced before we have now removed the variantId
, sku
and price
fields from the Remove Price update action on the Products API.
The Price to be removed is now identified by the priceId
field, respectively by RemoveProductPrice.priceId
in the GraphQL API.
Added update actions to set validity dates on Standalone Prices
We introduced new update actions on the Standalone Prices API that allow you to modify the start and end dates of a Standalone Price. This feature simplifies the process of maintaining accurate pricing information for your customers. Prior to this enhancement, changing the validity dates required the deletion and recreation of Standalone Prices, a process that was time-consuming and error-prone.
Alongside the new update actions, we also introduced corresponding Subscription Messages to enhance visibility and tracking.
Changes:
- [API] Added Set Valid From, Set Valid Until, and Set Valid From and Until update actions to the Standalone Prices API.
- [API] Added StandalonePriceValidFromSet, StandalonePriceValidUntilSet, and StandalonePriceValidFromAndUntilSet Messages.
- [GraphQL API] Added the following types to the GraphQL schema:
SetStandalonePriceValidFrom
,SetStandalonePriceValidFromAndUntil
,SetStandalonePriceValidUntil
,StandalonePriceValidFromAndUntilSet
,StandalonePriceValidFromSet
,StandalonePriceValidUntilSet
.
Added 'key' to Cart Line Item
We introduced the key
field on LineItem and LineItemDraft. This ensures a consistent experience when working with external identifiers across different entity types in Composable Commerce.
Changes:
- [GraphQL API] Changed the
AddStagedOrderLineItem
type:- Input field
key
was added toAddStagedOrderLineItem
type
- Input field
- [GraphQL API] Changed the
MyLineItemDraft
type:- Input field
key
was added toMyLineItemDraft
type
- Input field
- [GraphQL API] Changed the
LineItemDraft
type:- Input field
key
was added toLineItemDraft
type
- Input field
- [GraphQL API] Changed the
AddCartLineItem
type:- Input field
key
was added toAddCartLineItem
type
- Input field
- [GraphQL API] Changed the
LineItem
type:- Added the
key
field to theLineItem
type.
- Added the
- [GraphQL API] Changed the
LineItemDraftOutput
type:- Added the
key
field to theLineItemDraftOutput
type.
- Added the
- [GraphQL API] Changed the
AddMyCartLineItem
type:- Input field
key
was added toAddMyCartLineItem
type
- Input field
Confluent Cloud added as Subscription destination
We are announcing that Confluent Cloud is now supported as a Subscription destination.
With the introduction of Confluent Cloud support, customers can now natively use Apache Kafka across their preferred cloud platforms, whether it's Google Cloud, Azure, or AWS. This integration not only eliminates the necessity for intermediary gateways to consume messages from Kafka but also reduces the associated resources and costs.
Changes:
- [API] Added ConfluentCloudDestination to Subscriptions.
- [GraphQL API] Added the following types to the GraphQL schema:
ConfluentCloudDestination
,ConfluentCloudDestinationInput
- [GraphQL API] Changed the
DestinationInput
type:- Input field
ConfluentCloud
was added toDestinationInput
type
- Input field
Added 'business-unit' and 'associate-role' to CustomFieldReferenceValue
Business Units and Associate Roles can now be used as ReferenceTypes on Custom Fields. The new associate-role
and business-unit
values are supported on all customizable data types providing full flexibility in extending B2B features.
Changes:
- [API] Added
business-unit
andassociate-role
to CustomFieldReferenceValue.
Introduced GraphQL support for creating Associates using My Business Units
We introduced GraphQL support for creating Associates using My Business Units. This allows Customers with the UpdateAssociates
Permission to create a new Associate, assigning them roles specific to the given Business Unit.
Changes:
- [GraphQL API] Added the following types to the GraphQL schema:
SignUpInMyBusinessUnitDraft
. - [GraphQL API] Changed the
Mutation
type:- Added the
signUpInMyBusinessUnit
field to theMutation
type.
- Added the
Introduced 'key' field on Parcel
We introduced the key
field on Parcel and ParcelDraft. This ensures a consistent experience when working with external identifiers across different entity types in Composable Commerce.
Changes:
- [API] Added the
key
field to Parcel and ParcelDraft. - [API] Added the
parcelKey
field and changed theparcelId
field to be optional on the following Order and StagedOrderUpdateAction update actions: - [API] Added the
parcelKey
field to the Add Parcel update action on Order and StagedOrderUpdateAction. - [GraphQL API] Changed the
Parcel
type:- Added the
key
field to theParcel
type.
- Added the
- [GraphQL API] Changed the
ParcelDraft
type:- Input field
key
was added toParcelDraft
type
- Input field
- [GraphQL API] Changed the
SetStagedOrderParcelCustomTypeOutput
type:- Added the
parcelKey
field to theSetStagedOrderParcelCustomTypeOutput
type. SetStagedOrderParcelCustomTypeOutput.parcelId
field type changed fromString!
toString
- Added the
- [GraphQL API] Changed the
SetOrderParcelMeasurements
type:SetOrderParcelMeasurements.parcelId
input field type changed fromString!
toString
- Input field
parcelKey
was added toSetOrderParcelMeasurements
type
- [GraphQL API] Changed the
SetStagedOrderParcelCustomType
type:SetStagedOrderParcelCustomType.parcelId
input field type changed fromString!
toString
- Input field
parcelKey
was added toSetStagedOrderParcelCustomType
type
- [GraphQL API] Changed the
SetStagedOrderParcelTrackingData
type:SetStagedOrderParcelTrackingData.parcelId
input field type changed fromString!
toString
- Input field
parcelKey
was added toSetStagedOrderParcelTrackingData
type
- [GraphQL API] Changed the
SetStagedOrderParcelCustomField
type:SetStagedOrderParcelCustomField.parcelId
input field type changed fromString!
toString
- Input field
parcelKey
was added toSetStagedOrderParcelCustomField
type
- [GraphQL API] Changed the
SetStagedOrderParcelMeasurements
type:- Input field
parcelKey
was added toSetStagedOrderParcelMeasurements
type SetStagedOrderParcelMeasurements.parcelId
input field type changed fromString!
toString
- Input field
- [GraphQL API] Changed the
AddOrderParcelToDelivery
type:- Input field
parcelKey
was added toAddOrderParcelToDelivery
type
- Input field
- [GraphQL API] Changed the
SetStagedOrderParcelTrackingDataOutput
type:SetStagedOrderParcelTrackingDataOutput.parcelId
field type changed fromString!
toString
- Added the
parcelKey
field to theSetStagedOrderParcelTrackingDataOutput
type.
- [GraphQL API] Changed the
SetStagedOrderParcelMeasurementsOutput
type:SetStagedOrderParcelMeasurementsOutput.parcelId
field type changed fromString!
toString
- Added the
parcelKey
field to theSetStagedOrderParcelMeasurementsOutput
type.
- [GraphQL API] Changed the
SetOrderParcelTrackingData
type:SetOrderParcelTrackingData.parcelId
input field type changed fromString!
toString
- Input field
parcelKey
was added toSetOrderParcelTrackingData
type
- [GraphQL API] Changed the
RemoveOrderParcelFromDelivery
type:RemoveOrderParcelFromDelivery.parcelId
input field type changed fromString!
toString
- Input field
parcelKey
was added toRemoveOrderParcelFromDelivery
type
- [GraphQL API] Changed the
ParcelData
type:- Added the
key
field to theParcelData
type.
- Added the
- [GraphQL API] Changed the
AddStagedOrderParcelToDelivery
type:- Input field
parcelKey
was added toAddStagedOrderParcelToDelivery
type
- Input field
- [GraphQL API] Changed the
SetStagedOrderParcelItems
type:SetStagedOrderParcelItems.parcelId
input field type changed fromString!
toString
- Input field
parcelKey
was added toSetStagedOrderParcelItems
type
- [GraphQL API] Changed the
SetOrderParcelCustomType
type:SetOrderParcelCustomType.parcelId
input field type changed fromString!
toString
- Input field
parcelKey
was added toSetOrderParcelCustomType
type
- [GraphQL API] Changed the
ParcelDataDraftType
type:- Input field
key
was added toParcelDataDraftType
type
- Input field
- [GraphQL API] Changed the
SetStagedOrderParcelItemsOutput
type:SetStagedOrderParcelItemsOutput.parcelId
field type changed fromString!
toString
- Added the
parcelKey
field to theSetStagedOrderParcelItemsOutput
type.
- [GraphQL API] Changed the
RemoveStagedOrderParcelFromDeliveryOutput
type:- Added the
parcelKey
field to theRemoveStagedOrderParcelFromDeliveryOutput
type. RemoveStagedOrderParcelFromDeliveryOutput.parcelId
field type changed fromString!
toString
- Added the
- [GraphQL API] Changed the
SetOrderParcelItems
type:- Input field
parcelKey
was added toSetOrderParcelItems
type SetOrderParcelItems.parcelId
input field type changed fromString!
toString
- Input field
- [GraphQL API] Changed the
SetOrderParcelCustomField
type:- Input field
parcelKey
was added toSetOrderParcelCustomField
type SetOrderParcelCustomField.parcelId
input field type changed fromString!
toString
- Input field
- [GraphQL API] Changed the
RemoveStagedOrderParcelFromDelivery
type:RemoveStagedOrderParcelFromDelivery.parcelId
input field type changed fromString!
toString
- Input field
parcelKey
was added toRemoveStagedOrderParcelFromDelivery
type
- [GraphQL API] Changed the
SetStagedOrderParcelCustomFieldOutput
type:SetStagedOrderParcelCustomFieldOutput.parcelId
field type changed fromString!
toString
- Added the
parcelKey
field to theSetStagedOrderParcelCustomFieldOutput
type.
- [GraphQL API] Changed the
AddStagedOrderParcelToDeliveryOutput
type:- Added the
parcelKey
field to theAddStagedOrderParcelToDeliveryOutput
type.
- Added the
Added RenegotiationAddressed state to QuoteState
A new state RenegotiationAddressed
has been added to QuoteState. With this new state, Sellers can see Quotes where renegotiations requested by the respective buyer have been addressed.
Changes:
- [API] Added
RenegotiationAddressed
field to QuoteState. - [GraphQL API] Changed the
QuoteState
type:- Enum value
RenegotiationAddressed
was added to enumQuoteState
- Enum value
Added update action for setting the InventoryMode of Line Items
You can now change the InventoryMode of an existing LineItem by using the Set LineItem InventoryMode update action on the general endpoint. The InventoryMode could previously only be set when creating new Line Items.
Changes:
- [API] Added Set LineItem InventoryMode update action to the Carts API.
- [GraphQL API] Added the following types to the GraphQL schema:
SetCartLineItemInventoryMode
. - [GraphQL API] Changed the
CartUpdateAction
type:- Input field
setLineItemInventoryMode
was added toCartUpdateAction
type
- Input field
Countries on Stores achieved general availability status
After collecting feedback during the beta phase, we have moved countries on Stores out of beta. The status of the following features has been changed to general availability:
- Adding a country to a Store.
- Removing a country from a Store.
- Setting the countries on a Store.
- The StoreCountriesChanged Message.
Visit the API reference to learn more about how countries on Stores can enable filtering prices in Product Projections and Cart, Order, and Shopping List Line Items.
Added the MoneyOverflow error code
We've added the MoneyOverflow error code to help identify instances when a Money operation has failed due to an integer overflow.
Both centAmount
(applicable to all money types), as well as preciseAmount
(for high precision money types) are represented as 64-bit integers. If a Money operation results in either object exceeding the 64-bit limit, the API returns a 400 Bad Request with the MoneyOverflow error code.
Changes:
- [API] Added the MoneyOverflow error code.
Attribute Groups achieved general availability status
After collecting feedback during the beta phase, we have moved Attribute Groups out of beta. The status of the following features has been changed to general availability:
- Querying and managing Attribute Groups.
Attribute Groups let you organize Attribute Definitions by providing a list of references to Product Attributes. Learn more by visiting our documentation page.
Direct Discounts achieved general availability status
After collecting feedback during the beta phase, we have moved Direct Discounts out of beta. With Direct Discounts you can add a fixed or percentage discount to a single Cart.
The status of the following features has been changed to general availability:
Added support for updating a Customer on Quotes and Quote Requests
We introduced functionality to enable the reassignment of B2B Quotes and Quote Requests. This enhancement ensures that the Customer on a Quote or Quote Request can be updated in the event that they leave their Business Unit. The new Change Customer update action is available on Quote and Quote Request.
The new ReassignMyQuotes
and ReassignOthersQuotes
Permissions determine the ability to reassign a Quote within the context of a Business Unit. To enhance visibility and tracking, we have introduced two new Messages: QuoteRequestCustomerChanged and QuoteCustomerChanged. These Messages are triggered whenever a Quote or Quote Request's Customer is modified.
These enhancements improve the management of B2B Quotes within Composable Commerce, ensuring that Quotes and Quote Requests remain connected to the appropriate Associates even during organizational changes.
Changes:
- [API] Added the Change Customer update action to Quote.
- [API] Added the Change Customer update action to Quote Requests.
- [API] Added
ReassignMyQuotes
andReassignOthersQuotes
Permissions. - [API] Added QuoteRequestCustomerChanged and QuoteCustomerChanged Messages.
- [GraphQL API] Added the following types to the GraphQL schema:
ChangeQuoteCustomer
,ChangeQuoteRequestCustomer
. - [GraphQL API] Changed the
Permission
type:- Enum value
ReassignOthersQuotes
was added to enumPermission
- Enum value
ReassignMyQuotes
was added to enumPermission
- Enum value
- [GraphQL API] Changed the
QuoteRequestUpdateAction
type:- Input field
changeCustomer
was added toQuoteRequestUpdateAction
type
- Input field
- [GraphQL API] Changed the
QuoteUpdateAction
type:- Input field
changeCustomer
was added toQuoteUpdateAction
type
- Input field
Added Replicate Cart in Business Unit endpoint
You can now replicate Carts in a given Business Unit using the Associate Carts endpoint.
- [API] Added Replicate Cart in Business Unit endpoint.
- [GraphQL API] Changed the
Mutation
type:- Argument
asAssociate
was added toMutation.replicateCart
field
- Argument
Added support for external tax on multiple Shipping Methods
We have added support for external tax rates and tax amounts on multiple Shipping Methods. You can now target individual Shipping Methods by including a shippingKey
when using the Set ShippingMethod TaxAmount and Set ShippingMethod TaxRate update actions for Carts and Order Edits.
Changes:
-
[API] Added the
shippingKey
field to the following update actions on Carts: -
[API] Added the
shippingKey
field to the following update actions on Order Edits: -
[GraphQL API] Changed the
SetStagedOrderShippingMethodTaxRateOutput
type:- Added the
shippingKey
field to theSetStagedOrderShippingMethodTaxRateOutput
type.
- Added the
-
[GraphQL API] Changed the
SetStagedOrderShippingMethodTaxAmount
type:- Input field
shippingKey
was added toSetStagedOrderShippingMethodTaxAmount
type
- Input field
-
[GraphQL API] Changed the
SetCartShippingMethodTaxRate
type:- Input field
shippingKey
was added toSetCartShippingMethodTaxRate
type
- Input field
-
[GraphQL API] Changed the
SetStagedOrderShippingMethodTaxRate
type:- Input field
shippingKey
was added toSetStagedOrderShippingMethodTaxRate
type
- Input field
-
[GraphQL API] Changed the
SetCartShippingMethodTaxAmount
type:- Input field
shippingKey
was added toSetCartShippingMethodTaxAmount
type
- Input field
-
[GraphQL API] Changed the
SetStagedOrderShippingMethodTaxAmountOutput
type:- Added the
shippingKey
field to theSetStagedOrderShippingMethodTaxAmountOutput
type.
- Added the
Added observability to Composable Commerce SDKs
We have added support for New Relic to Composable Commerce SDKs.
New Relic is an observability platform which monitors your application's performance. This integration helps you analyze your application to identify potential improvements for performance and user experience.
With this update, you can:
- Trace and profile application performance directly from the SDK.
- View and analyze your application's performance.
- Get real-time insights and alerts about your application's performance and issues.
New Relic is currently supported by the latest versions of the Java SDK, TypeScript SDK, PHP SDK, and .NET SDK.
commercetools Composable Commerce for China is now available on AWS Ningxia
commercetools Composable Commerce is now available in China on AWS Ningxia in addition to our existing Regions in North America, Europe, and Australia. The China Region is available as part of Composable Commerce for China. Please reach out to your commercetools contact person to learn more.
Find the URLs to the commercetools Composable Commerce API here. Log in here.
When configuring a Project in the China Region, note that external links (for example, URLs used for images, external OAuth, and API Extensions) may be blocked due to firewall restrictions.
Introduced 'key' field on Delivery
We introduced the key
field on Delivery and DeliveryDraft. This ensures a consistent experience when working with external identifiers across different entity types in Composable Commerce.
Changes:
-
[API] Added the
key
field to Delivery and DeliveryDraft. -
[API] Added the
deliveryKey
field to the following update actions on Orders: -
[API] Added the
deliveryKey
field to the following update actions on Order Edits: -
[API] Changed the
deliveryId
field to be optional on the following update actions on Orders: -
[API] Changed the
deliveryId
field to be optional on the following update actions on Order Edits: -
[GraphQL API] Changed the
SetStagedOrderDeliveryCustomField
type:- Input field
deliveryKey
was added toSetStagedOrderDeliveryCustomField
type SetStagedOrderDeliveryCustomField.deliveryId
input field type changed fromString!
toString
- Input field
-
[GraphQL API] Changed the
AddStagedOrderDeliveryOutput
type:- Added the
deliveryKey
field to theAddStagedOrderDeliveryOutput
type.
- Added the
-
[GraphQL API] Changed the
SetStagedOrderDeliveryAddressOutput
type:SetStagedOrderDeliveryAddressOutput.deliveryId
field type changed fromString!
toString
- Added the
deliveryKey
field to theSetStagedOrderDeliveryAddressOutput
type.
-
[GraphQL API] Changed the
Delivery
type:- Added the
key
field to theDelivery
type.
- Added the
-
[GraphQL API] Changed the
SetStagedOrderDeliveryAddressCustomType
type:- Input field
deliveryKey
was added toSetStagedOrderDeliveryAddressCustomType
type SetStagedOrderDeliveryAddressCustomType.deliveryId
input field type changed fromString!
toString
- Input field
-
[GraphQL API] Changed the
AddStagedOrderDelivery
type:- Input field
deliveryKey
was added toAddStagedOrderDelivery
type
- Input field
-
[GraphQL API] Changed the
SetStagedOrderDeliveryItemsOutput
type:- Added the
deliveryKey
field to theSetStagedOrderDeliveryItemsOutput
type. SetStagedOrderDeliveryItemsOutput.deliveryId
field type changed fromString!
toString
- Added the
-
[GraphQL API] Changed the
SetStagedOrderDeliveryAddress
type:- Input field
deliveryKey
was added toSetStagedOrderDeliveryAddress
type SetStagedOrderDeliveryAddress.deliveryId
input field type changed fromString!
toString
- Input field
-
[GraphQL API] Changed the
SetStagedOrderDeliveryAddressCustomTypeOutput
type:- Added the
deliveryKey
field to theSetStagedOrderDeliveryAddressCustomTypeOutput
type. SetStagedOrderDeliveryAddressCustomTypeOutput.deliveryId
field type changed fromString!
toString
- Added the
-
[GraphQL API] Changed the
SetOrderDeliveryAddressCustomField
type:SetOrderDeliveryAddressCustomField.deliveryId
input field type changed fromString!
toString
- Input field
deliveryKey
was added toSetOrderDeliveryAddressCustomField
type
-
[GraphQL API] Changed the
SetStagedOrderDeliveryCustomType
type:SetStagedOrderDeliveryCustomType.deliveryId
input field type changed fromString!
toString
- Input field
deliveryKey
was added toSetStagedOrderDeliveryCustomType
type
-
[GraphQL API] Changed the
DeliveryDraft
type:- Input field
key
was added toDeliveryDraft
type
- Input field
-
[GraphQL API] Changed the
RemoveStagedOrderDeliveryOutput
type:- Added the
deliveryKey
field to theRemoveStagedOrderDeliveryOutput
type. RemoveStagedOrderDeliveryOutput.deliveryId
field type changed fromString!
toString
- Added the
-
[GraphQL API] Changed the
RemoveStagedOrderDelivery
type:RemoveStagedOrderDelivery.deliveryId
input field type changed fromString!
toString
- Input field
deliveryKey
was added toRemoveStagedOrderDelivery
type
-
[GraphQL API] Changed the
AddOrderDelivery
type:- Input field
deliveryKey
was added toAddOrderDelivery
type
- Input field
-
[GraphQL API] Changed the
SetStagedOrderDeliveryCustomFieldOutput
type:- Added the
deliveryKey
field to theSetStagedOrderDeliveryCustomFieldOutput
type. SetStagedOrderDeliveryCustomFieldOutput.deliveryId
field type changed fromString!
toString
- Added the
-
[GraphQL API] Changed the
SetStagedOrderDeliveryAddressCustomFieldOutput
type:SetStagedOrderDeliveryAddressCustomFieldOutput.deliveryId
field type changed fromString!
toString
- Added the
deliveryKey
field to theSetStagedOrderDeliveryAddressCustomFieldOutput
type.
-
[GraphQL API] Changed the
AddStagedOrderParcelToDelivery
type:- Input field
deliveryKey
was added toAddStagedOrderParcelToDelivery
type AddStagedOrderParcelToDelivery.deliveryId
input field type changed fromString!
toString
- Input field
-
[GraphQL API] Changed the
SetOrderDeliveryAddress
type:SetOrderDeliveryAddress.deliveryId
input field type changed fromString!
toString
- Input field
deliveryKey
was added toSetOrderDeliveryAddress
type
-
[GraphQL API] Changed the
AddOrderParcelToDelivery
type:AddOrderParcelToDelivery.deliveryId
input field type changed fromString!
toString
- Input field
deliveryKey
was added toAddOrderParcelToDelivery
type
-
[GraphQL API] Changed the
RemoveOrderDelivery
type:RemoveOrderDelivery.deliveryId
input field type changed fromString!
toString
- Input field
deliveryKey
was added toRemoveOrderDelivery
type
-
[GraphQL API] Changed the
SetOrderDeliveryCustomType
type:- Input field
deliveryKey
was added toSetOrderDeliveryCustomType
type SetOrderDeliveryCustomType.deliveryId
input field type changed fromString!
toString
- Input field
-
[GraphQL API] Changed the
SetOrderDeliveryCustomField
type:SetOrderDeliveryCustomField.deliveryId
input field type changed fromString!
toString
- Input field
deliveryKey
was added toSetOrderDeliveryCustomField
type
-
[GraphQL API] Changed the
SetStagedOrderDeliveryItems
type:SetStagedOrderDeliveryItems.deliveryId
input field type changed fromString!
toString
- Input field
deliveryKey
was added toSetStagedOrderDeliveryItems
type
-
[GraphQL API] Changed the
SetStagedOrderDeliveryCustomTypeOutput
type:- Added the
deliveryKey
field to theSetStagedOrderDeliveryCustomTypeOutput
type. SetStagedOrderDeliveryCustomTypeOutput.deliveryId
field type changed fromString!
toString
- Added the
-
[GraphQL API] Changed the
SetOrderDeliveryAddressCustomType
type:- Input field
deliveryKey
was added toSetOrderDeliveryAddressCustomType
type SetOrderDeliveryAddressCustomType.deliveryId
input field type changed fromString!
toString
- Input field
-
[GraphQL API] Changed the
SetStagedOrderDeliveryAddressCustomField
type:SetStagedOrderDeliveryAddressCustomField.deliveryId
input field type changed fromString!
toString
- Input field
deliveryKey
was added toSetStagedOrderDeliveryAddressCustomField
type
-
[GraphQL API] Changed the
AddStagedOrderParcelToDeliveryOutput
type:- Added the
deliveryKey
field to theAddStagedOrderParcelToDeliveryOutput
type. AddStagedOrderParcelToDeliveryOutput.deliveryId
field type changed fromString!
toString
- Added the
-
[GraphQL API] Changed the
SetOrderDeliveryItems
type:SetOrderDeliveryItems.deliveryId
input field type changed fromString!
toString
- Input field
deliveryKey
was added toSetOrderDeliveryItems
type
Announced deprecation of 'sku', 'variantId' and 'price' fields in Remove Price update action
The variantId
, sku
and price
fields are now deprecated in the Remove Price update action on Products. Please use priceId
instead.
For the GraphQL API, please use RemoveProductPrice.priceId
instead.
Changes:
- [GraphQL API] Changed the
RemoveProductPrice
type:RemoveProductPrice.variantId
is deprecatedRemoveProductPrice.sku
is deprecatedRemoveProductPrice.price
is deprecated
Added Product Projections on locales to the GraphQL API
We added support for locale-based Product Projection to the product
and products
queries on the GraphQL API. With this projection, your response contains the translation on Products (also in a Store) you have specified in your query only. All other locales are filtered out from the product information.
Furthermore, the projection can also be applied to Products expanded on Reference Type Attributes.
Changes:
- [GraphQL API] Changed the
Query
type:- Argument
localeProjection
was added toQuery.products
field - Argument
localeProjection
was added toQuery.product
field - Argument
projectExpandedProducts
was added toQuery.productProjectionSearch
field - Argument
projectExpandedProducts
was added toQuery.product
field - Argument
projectExpandedProducts
was added toQuery.products
field
- Argument
- [GraphQL API] Changed the
InStore
type:- Arguments
localeProjection
was added toInStore.product
field - Argument
projectExpandedProducts
was added toInStore.product
field
- Arguments
Added Type import endpoint
We have added the Type endpoint to the Import API. This new feature allows you to bulk import Types to your Composable Commerce Project for modeling Custom Fields.
You can now send us the whole Type snapshot and we will create/update the entry in your Project by calculating the delta.
Changes:
- [API] Added Type Import endpoint.
Changed the fields ‘BusinessUnit.associateMode’, ‘Associate.associateRoleAssignments’, and ‘AssociateRoleAssignment.inheritance’ to be mandatory in responses
We have made the fields BusinessUnit.associateMode
, Associate.associateRoleAssignments
, and AssociateRoleAssignment.inheritance
mandatory in responses. They were previously optional during the closed beta period.
Changes:
- [GraphQL API] Changed the
BusinessUnit
type:BusinessUnit.associateMode
field type changed fromBusinessUnitAssociateMode
toBusinessUnitAssociateMode!
- [GraphQL API] Changed the
Associate
type:Associate.associateRoleAssignments
field type changed from[AssociateRoleAssignment!]
to[AssociateRoleAssignment!]!
- [GraphQL API] Changed the
AssociateRoleAssignment
type:AssociateRoleAssignment.inheritance
field type changed fromAssociateInheritanceMode
toAssociateInheritanceMode!
Added AssociateMissingPermissionError for Associate Roles
We introduced the error code AssociateMissingPermissionError for Associate Roles. This error code helps to identify when an Associate is missing a specific Permission on a B2B resource.
Changes:
- [API] Added AssociateMissingPermissionError.
Added 'inheritedStores' field to Business Units in GraphQL
The GraphQL API now supports querying inherited Stores of a Business Unit. Visit the API reference for more information on additional GraphQL fields available on Business Units.
Changes:
- [GraphQL API] Changed the
BusinessUnit
type:- Added the
inheritedStores
field to theBusinessUnit
type.
- Added the
Enhanced permissions management for companies
The new Associate Roles API provides B2B customers with the flexibility to define and manage the permissions of their Associates. The feature allows the configuration of granular permissions that provide controlled access to Business Units, Carts, Orders, Quotes, and Quote Requests. Additionally, roles can be inherited from a parent Business Unit by its children.
This feature replaces the less flexible AssociateRole enum with Buyer
and Admin
values. This type alongside the roles
field on Associate and AssociateDraft is now deprecated and will be completely removed on 02 August 2023.
In addition to the Associate Roles API, a new set of associate
endpoints can be used to validate that an Associate has sufficient permissions on a given resource. These endpoints are available for Business Units, Carts, Orders, Quotes, and Quote Requests and perform permission evaluation checks based on an associateId
.
These features are part of Composable Commerce for B2B and will be subject to additional terms and pricing.
Changes:
- [API] Added Associate Roles API.
- [API] Added Associate Carts, Associate Orders, Associate Quote Requests, Associate Quotes, and Associate BusinessUnit endpoints.
- [API] Added BusinessUnitAssociateMode, AssociateRoleInheritanceMode, AssociateRoleAssignment, and AssociateRoleAssignmentDraft, InheritedAssociate, and InheritedAssociateRoleAssignment types to BusinessUnit.
- [API] Added
inheritedAssociates
andassociateMode
fields to BusinessUnit. - [API] Added
associateMode
fields to BusinessUnitDraft. - [API] Added
associateRoleAssignments
field to Associate and AssociateDraft. - [API] Added
associateRoleAssignments
to MyBusinessUnitAssociateDraft. - [API] Deprecated AssociateRole enum with
Admin
andBuyer
values. - [API] Deprecated
roles
andinheritedAssociates
field on Associate and AssociateDraft. - [API] Added Associate Role Messages.
- [API] Added BusinessUnitAssociateModeChanged Message.
- [API] Added
myBusinessUnitAssociateRoleOnCreation
to BusinessUnitConfiguration in Project settings. - [GraphQL API] Added the following types to the GraphQL schema:
AddAssociateRolePermission
,AsAssociate
,AsAssociateArgument
,AssociateInheritanceMode
,AssociateRole
,AssociateRoleAssignment
,AssociateRoleAssignmentDraft
,AssociateRoleBuyerAssignableChanged
,AssociateRoleCreated
,AssociateRoleDeleted
,AssociateRoleDraft
,AssociateRoleNameSet
,AssociateRolePermissionAdded
,AssociateRolePermissionRemoved
,AssociateRolePermissionsSet
,AssociateRoleQueryResult
,AssociateRoleUpdateAction
,BusinessUnitAssociateMode
,BusinessUnitAssociateModeChanged
,ChangeAssociateRoleBuyerAssignable
,ChangeBusinessUnitAssociateMode
,InheritedAssociate
,InheritedAssociateRoleAssignment
,Permission
,RemoveAssociateRolePermission
,SetAssociateRoleCustomField
,SetAssociateRoleCustomType
,SetAssociateRoleName
,SetAssociateRolePermissions
,SetProjectSettingsMyBusinessUnitAssociateRoleOnCreation
. - [GraphQL API] Changed the
BusinessUnitDraft
type:- Input field
associateMode
was added toBusinessUnitDraft
type
- Input field
- [GraphQL API] Changed the
BusinessUnit
type:- Added the
inheritedAssociates
field to theBusinessUnit
type. - Added the
associateMode
field to theBusinessUnit
type.
- Added the
- [GraphQL API] Changed the
Associate
type:- Added the
associateRoleAssignments
field to theAssociate
type. - Field
roles
was deprecated inAssociate
type
- Added the
- [GraphQL API] Changed the
AssociateDraft
type:- Input field
associateRoleAssignments
was added toAssociateDraft
type - Input field
roles
was deprecated inAssociateDraft
type
- Input field
- [GraphQL API] Changed the
BusinessUnitConfiguration
type:- Added the
myBusinessUnitAssociateRoleOnCreation
field to theBusinessUnitConfiguration
type. - Added the
myBusinessUnitAssociateRoleOnCreationRef
field to theBusinessUnitConfiguration
type.
- Added the
- [GraphQL API]
SimpleAssociateRole
type was deprecated - [GraphQL API] Changed the
Query
type:- Added the
asAssociate
field to theQuery
type. - Added the
associateRole
field to theQuery
type. - Added the
associateRoles
field to theQuery
type.
- Added the
- [GraphQL API] Changed the
Mutation
type:- Argument
asAssociate
was added toMutation.updateBusinessUnit
field - Added the
updateAssociateRole
field to theMutation
type. - Argument
asAssociate
was added toMutation.createOrderFromCart
field - Argument
asAssociate
was added toMutation.deleteCart
field - Argument
asAssociate
was added toMutation.createBusinessUnit
field - Argument
asAssociate
was added toMutation.updateQuoteRequest
field - Argument
asAssociate
was added toMutation.createOrderFromQuote
field - Argument
asAssociate
was added toMutation.createCart
field - Argument
asAssociate
was added toMutation.updateOrder
field - Added the
deleteAssociateRole
field to theMutation
type. - Argument
asAssociate
was added toMutation.updateQuote
field - Argument
asAssociate
was added toMutation.createQuoteRequest
field - Added the
createAssociateRole
field to theMutation
type. - Argument
asAssociate
was added toMutation.updateCart
field
- Argument
- [GraphQL API] Changed the
ProjectSettingsUpdateAction
type:- Input field
setMyBusinessUnitAssociateRoleOnCreation
was added toProjectSettingsUpdateAction
type
- Input field
- [GraphQL API] Changed the
BusinessUnitUpdateAction
type:- Input field
changeAssociateMode
was added toBusinessUnitUpdateAction
type
- Input field
Product Selections achieved general availability status
After collecting feedback during the beta phase, we have moved Product Selections out of beta. The status of the following features has been changed to general availability:
- Querying and managing Product Selections.
- Adding and removing Products from Product Selections.
Product Selections can be used to manage individual assortments for different sales channels and Stores. Learn more by visiting our documentation page.
Replaced ProductSelectionType with ProductSelectionMode
We introduced a new type ProductSelectionMode to replace ProductSelectionType. The functionality of Individual
and IndividualExclusion
Product Selections remains the same. We adjusted the naming of the type and the enums to ensure a consistent experience when working with the Composable Commerce APIs.
Instead of the previous individual
and individualExclusion
enums defined by the type
field on ProductSelection, you can now use the mode
field with the values Individual
and IndividualExclusion
. The type
field, alongside ProductSelectionType is now deprecated and will be completely removed on 18 July 2023.
We also aligned the behavior of ProductSelectionCreated Message with other similar Messages generated by resource creation. The Message now includes the entire ProductSelection object in the payload, instead of a subset of the fields.
Changes:
- [API] Added the
mode
field to ProductSelection and ProductSelectionDraft. - [API] Deprecated
ProductSelectionTypeEnum
,IndividualProductSelectionType
,IndividualExclusionProductSelectionType
from ProductSelection. - [API] Deprecated the
type
field from ProductSelection and ProductSelectionDraft. - [API] Changed the type of
productSelection
field on ProductSelectionCreated Message from ProductSelectionType to ProductSelection. - [GraphQL API] Removed the following types from the GraphQL schema:
ProductSelectionType
,IndividualExclusionProductSelectionCreatedPayload
,IndividualProductSelectionCreatedPayload
,ProductSelectionCreatedPayload
. - [GraphQL API] Changed the
ProductSelection
type:- Removed the
type
field from theProductSelection
type. - Added the
mode
field to theProductSelection
type.
- Removed the
- [GraphQL API] Changed the
CreateProductSelectionDraft
type:- Input field
type
was removed fromCreateProductSelectionDraft
type - Input field
mode
was added toCreateProductSelectionDraft
type
- Input field
- [GraphQL API] Changed the
ProductSelectionCreated
type:ProductSelectionCreated.productSelection
field type changed fromProductSelectionCreatedPayload!
toProductSelection!
Audit Log available for AWS Regions in beta
Audit Log is now available in AWS Regions in beta.
Added 'shippingCustomFields' and 'shippingKey' fields on Cart and Order
You can now retrieve the shippingCustomFields
and shippingKey
fields on Carts and Orders with Single
ShippingMode.
Changes:
- [API] Added the
shippingCustomFields
field to Cart and Order. - [API] Added the
shippingKey
field to Cart and Order. - [GraphQL API] Changed the
Cart
type:- Added the
shippingKey
field to theCart
type. - Added the
shippingCustomFields
field to theCart
type.
- Added the
- [GraphQL API] Changed the
Order
type:- Added the
shippingKey
field to theOrder
type. - Added the
shippingCustomFields
field to theOrder
type.
- Added the
EmbeddedPriceDraftImport key field changing from optional to required
To enhance the performance and reliability of the Import API, we are changing the key
field on EmbeddedPriceDraftImport from optional to required.
This change will take effect on 31 July 2023*. From this date, you must include a key
when importing Prices using EmbeddedPriceDraftImport.
*The original date of this change was 11 July 2023. The date was extended to provide users with additional time to make necessary updates to accommodate this change.
Introduced 'key' field on TaxRate
We introduced the key
field on TaxRate and TaxRateDraft. This ensures a consistent experience when working with external identifiers across different entity types in Composable Commerce.
Changes:
- [API] Added the
key
field to TaxRate and TaxRateDraft. - [API] Added the
taxRateKey
field to Remove TaxRate and Replace TaxRate update actions. - [API] Changed the
taxRateId
field to be optional on Remove TaxRate and Replace TaxRate update actions. - [GraphQL API] Changed the
TaxRate
type:- Added the
key
field to theTaxRate
type.
- Added the
- [GraphQL API] Changed the
TaxRateInput
type:- Input field
key
was added toTaxRateInput
type
- Input field
- [GraphQL API] Changed the
TaxRateDraft
type:- Input field
key
was added toTaxRateDraft
type
- Input field
- [GraphQL API] Changed the
TaxCategoryRemoveTaxRate
type:- Input field
taxRateKey
was added toTaxCategoryRemoveTaxRate
type TaxCategoryRemoveTaxRate.taxRateId
input field type changed fromString!
toString
- Input field
- [GraphQL API] Changed the
TaxCategoryReplaceTaxRate
type:TaxCategoryReplaceTaxRate.taxRateId
input field type changed fromString!
toString
- Input field
taxRateKey
was added toTaxCategoryReplaceTaxRate
type
Fixed Reference Expansion input types for Business Unit Messages in the GraphQL API
We fixed the Reference Expansion input types on Business Unit Messages to provide a consistent experience when working with the GraphQL API. Additionally, we updated the type BusinessUnitConfiguration
to align it with the HTTP API. We have also made the roles
field optional on AssociateDraft in the HTTP and GraphQL API to allow creating Associates without having to assign roles.
Changes:
- [API] Changed
roles
field to be optional on AssociateDraft. - [GraphQL API] Changed the
AssociateDraft
type:AssociateDraft.roles
input field type changed from[SimpleAssociateRole!]!
to[SimpleAssociateRole!]
- [GraphQL API] Added the following types to the GraphQL schema:
BusinessUnitConfigurationStatus
. - [GraphQL API] Changed the
BusinessUnitConfiguration
type:BusinessUnitConfiguration.myBusinessUnitStatusOnCreation
field type changed fromBusinessUnitStatus!
toBusinessUnitConfigurationStatus!
- [GraphQL API] Changed the
BusinessUnitStoreAdded
type:BusinessUnitStoreAdded.store
field type changed fromKeyReference!
toStore!
- Added the
storeRef
field to theBusinessUnitStoreAdded
type.
- [GraphQL API] Changed the
BusinessUnitStoresSet
type:BusinessUnitStoresSet.stores
field type changed from[KeyReference!]!
to[Store!]!
- Added the
storesRef
field to theBusinessUnitStoresSet
type.
- [GraphQL API] Changed the
BusinessUnitStoreModeChanged
type:- Added the
oldStoresRef
field to theBusinessUnitStoreModeChanged
type. - Added the
storesRef
field to theBusinessUnitStoreModeChanged
type. BusinessUnitStoreModeChanged.stores
field type changed from[KeyReference!]
to[Store!]
BusinessUnitStoreModeChanged.oldStores
field type changed from[KeyReference!]
to[Store!]
- Added the
- [GraphQL API] Changed the
BusinessUnitParentChanged
type:- Added the
oldParentUnitRef
field to theBusinessUnitParentChanged
type. - Added the
newParentUnitRef
field to theBusinessUnitParentChanged
type. BusinessUnitParentChanged.newParentUnit
field type changed fromKeyReference
toBusinessUnit
BusinessUnitParentChanged.oldParentUnit
field type changed fromKeyReference
toBusinessUnit
- Added the
- [GraphQL API] Changed the
ChangeProjectSettingsMyBusinessUnitStatusOnCreation
type:ChangeProjectSettingsMyBusinessUnitStatusOnCreation.status
input field type changed fromBusinessUnitStatus!
toBusinessUnitConfigurationStatus!
- [GraphQL API] Changed the
BusinessUnitStoreRemoved
type:BusinessUnitStoreRemoved.store
field type changed fromKeyReference!
toStore!
- Added the
storeRef
field to theBusinessUnitStoreRemoved
type.
Introduced Product Selection of type Individual Exclusion in Beta
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 theProductSelection
type. -
[GraphQL API] Added the
type
input field to theCreateProductSelectionDraft
type. -
[GraphQL API] Added the
excludeProduct
input field toProductSelectionUpdateAction
type. -
[GraphQL API] Added the
setVariantExclusion
input field toProductSelectionUpdateAction
type. -
[GraphQL API] Added the
staged
field to theProductVariantDeleted
type.
Fixed type for 'state' field in PaymentStatusDraft
We changed the type for the state
field in PaymentStatusDraft from Reference to ResourceIdentifier allowing you to reference a State by key
when creating a new Payment. The HTTP API now behaves as documented, and we aligned the GraphQL API with this behavior also.
Changes:
- [GraphQL API] Changed the
PaymentStatusInput.state
input field type fromReferenceInput
toResourceIdentifierInput
.
Changed names of Product Variant Selection types
We renamed the types of Product Variant Selection from Inclusion to IncludeOnly and from Exclusion to IncludeAllExcept. Based on our feedback, the new names describe the semantics of these types better and make their purpose clearer.
The previous types have now been deprecated and will be migrated to the new types automatically on 30 June 2023 without any disruption of services.
Changes:
- [API] Added
includeOnly
andincludeAllExcept
values to thetype
field of Product Variant Selection. - [API] Deprecated
inclusion
andexclusion
values on thetype
field of Product Variant Selection. - [GraphQL API] Changed the
ProductVariantSelectionDraft
type:- Added input field
includeOnly
andincludeAllExcept
toProductVariantSelectionDraft
type. - Deprecated input field
inclusion
andexclusion
onProductVariantSelectionDraft
type.
- Added input field
- [GraphQL API] Added the following types to the GraphQL schema:
ProductVariantSelectionIncludeOnly
,ProductVariantSelectionIncludeAllExcept
. - [GraphQL API] Deprecated the following types on the GraphQL schema:
ProductVariantSelectionExclusion
,ProductVariantSelectionInclusion
.
External OAuth achieved general availability status
We are announcing that external OAuth is out of beta. During the beta phase, we collected feedback to ensure a reliable, stable, and performant feature.
The status of the following functionality has changed to general availability:
- Requesting an access token using an External OAuth server.
- Configuring external OAuth through Project settings using the Set ExternelOAuth update action.
Added support for AuthenticationMode in Customer import and support for Custom Fields and State in Order import fields.
You can now import Customers with an AuthenticationMode to determine if they should use a password or external authentication. The addition of AuthenticationMode also means that passwords are no longer mandatory when importing Customers.
Order Import can also now include Custom Fields on their shippingAddress
, and Parcels fields.
State is also now available for import in Order Import.
These additions provide more options and greater flexibility when importing Customers and Orders.
Changes:
- [API] Added
authenticationMode
to CustomerImport on the Import Customers endpoint. - [API] Added Custom Fields to
shippingAddress
in OrderImport on the Import Orders endpoint. - [API] Added Custom Fields to Parcel in OrderImport on the Import Orders endpoint.
- [API] Added state to OrderImport on the Import Orders endpoint.
Introducing Google Cloud Function destination for API Extensions
We have enhanced API Extensions to support Cloud Functions natively.
Using the GoogleCloudFunctionDestination you can directly invoke Cloud Functions without providing authorization headers or having to use intermediate gateways.
The new destination uses the permissions granted through Identity and Access Management (IAM) of Google Cloud Platform projects. Visit the API Extensions reference to learn more about using IAM-authorized Cloud Functions as destinations for your API Extensions.
Changes:
- [API] Added GoogleCloudFunctionDestination to API Extensions.
- [GraphQL API] Added the following types to the GraphQL schema:
GoogleCloudFunctionDestination
,GoogleCloudFunctionDestinationInput
. - [GraphQL API] Changed the
ExtensionDestinationInput
type:- Input field
GoogleCloudFunction
was added toExtensionDestinationInput
type.
- Input field
Improvements to working with Business Units in the GraphQL API
Quote Requests, Staged Quotes, and Quotes now support Reference Expansion on Business Unit in the GraphQL API.
Changes:
- [GraphQL API] Changed the
StagedQuote
type:- Added the
businessUnitRef
field to theStagedQuote
type. StagedQuote.businessUnit
field type changed fromKeyReference
toBusinessUnit
- Added the
- [GraphQL API] Changed the
Quote
type:- Added the
businessUnitRef
field to theQuote
type. Quote.businessUnit
field type changed fromKeyReference
toBusinessUnit
- Added the
- [GraphQL API] Changed the
QuoteRequest
type:- Added the
businessUnitRef
field to theQuoteRequest
type. QuoteRequest.businessUnit
field type changed fromKeyReference
toBusinessUnit
- Added the
Added 'discounted' field to 'ProductPriceDataInput' type in GraphQL
To align with the PriceDraft object in the HTTP API we added the discounted
field to the ProductPriceDataInput
type in the GraphQL schema.
Furthermore, we fixed the field type for the DiscountedProductPriceValueInput
type in the GraphQL API.
Changes:
- [GraphQL API] Added
discounted
field to theProductPriceDataInput
type. - [GraphQL API] Changed the
DiscountedProductPriceValueInput.discount
field type fromReferenceInput!
toResourceIdentifierInput!
.
Added 'oldValue' field to Standalone Price Value Changed Message
We added the oldValue
field to the Standalone Price Value Changed Message that contains the StandalonePrice value
as it was before the change.
You can now see how much the value of your updated Standalone Price has changed by comparing the Message fields value
and oldValue
.
Changes:
- [API] Added field
oldValue
to Standalone Price Value Changed Message. - [GraphQL API] Changed the
StandalonePriceValueChanged
type:- Added the
oldValue
field to theStandalonePriceValueChanged
type.
- Added the
CloudEventsFormat achieved general availability status
We are announcing that CloudEventsFormat for Subscription destinations is out of beta.
In the process of bringing the feature to general availability status, we ensured that the payload format is in accordance with the 1.0.2
specification. This will ensure consistency when using CloudEvents across different services.
Visit the API reference to learn more about enabling CloudEvents for your Subscription destinations.
Added GraphQL support for multiple shipping methods
To align with the HTTP API, multiple Shipping Methods are now supported on Carts and Orders in the GraphQL API.
Changes:
- [GraphQL API] Added the following types to the GraphQL schema:
AddCartCustomShippingMethod
,AddCartShippingMethod
,CustomShippingDraft
,MethodTaxRate
,RemoveCartShippingMethod
,Shipping
,ShippingDraft
,ShippingMode
. - [GraphQL API] Changed the
MyCartDraft
type:- Input field
shippingMode
was added toMyCartDraft
type - Input field
customShipping
was added toMyCartDraft
type - Input field
shipping
was added toMyCartDraft
type
- Input field
- [GraphQL API] Changed the
CartDraft
type:- Input field
customShipping
was added toCartDraft
type - Input field
shipping
was added toCartDraft
type - Input field
shippingMode
was added toCartDraft
type
- Input field
- [GraphQL API] Changed the
CartUpdateAction
type:- Input field
addCustomShippingMethod
was added toCartUpdateAction
type - Input field
removeShippingMethod
was added toCartUpdateAction
type - Input field
addShippingMethod
was added toCartUpdateAction
type
- Input field
- [GraphQL API] Changed the
Cart
type:- Added the
taxedShippingPrice
field to theCart
type. - Added the
shipping
field to theCart
type. - Added the
shippingMode
field to theCart
type.
- Added the
- [GraphQL API] Changed the
Order
type:- Added the
taxedShippingPrice
field to theOrder
type. - Added the
shipping
field to theOrder
type. - Added the
shippingMode
field to theOrder
type.
- Added the
- [GraphQL API] Changed the
LineItem
type:- Added the
perMethodTaxRate
field to theLineItem
type. - Added the
taxedPricePortions
field to theLineItem
type.
- Added the
- [GraphQL API] Changed the
ShippingTargetDraft
type:- Added the
shippingMethodKey
field to theShippingTargetDraft
type.
- Added the
Added 'purchaseOrderNumber' field to Quotes- and Order-related types
With the new purchaseOrderNumber
field, Buyers are now able to track their purchase throughout the order creation process with their Purchase Order Number. To support B2B scenarios, this new field is also supported on all types related to Quotes.
Changes:
- [API] Added optional field
purchaseOrderNumber
to OrderFromCartDraft, OrderImportDraft, QuoteRequestDraft, QuoteRequest, StagedQuote, Quote, Order. - [API] Added
setPurchaseOrderNumber
update action to Orders and Order Edits APIs. - [API] Added PurchaseOrderNumberSet message.
- [GraphQL API] Changed the
QuoteRequestDraft
type:- Input field
purchaseOrderNumber
was added toQuoteRequestDraft
type
- Input field
- [GraphQL API] Changed the
OrderCartCommand
type:- Input field
purchaseOrderNumber
was added toOrderCartCommand
type
- Input field
- [GraphQL API] Changed the
ImportOrderDraft
type:- Input field
purchaseOrderNumber
was added toImportOrderDraft
type
- Input field
- [GraphQL API] Changed the
StagedOrderUpdateAction
type:- Input field
setPurchaseOrderNumber
was added toStagedOrderUpdateAction
type
- Input field
- [GraphQL API] Changed the
StagedQuote
type:- Added the
purchaseOrderNumber
field to theStagedQuote
type.
- Added the
- [GraphQL API] Changed the
OrderUpdateAction
type:- Input field
setPurchaseOrderNumber
was added toOrderUpdateAction
type
- Input field
- [GraphQL API] Changed the
Quote
type:- Added the
purchaseOrderNumber
field to theQuote
type.
- Added the
- [GraphQL API] Changed the
Order
type:- Added the
purchaseOrderNumber
field to theOrder
type.
- Added the
- [GraphQL API] Changed the
QuoteRequest
type:- Added the
purchaseOrderNumber
field to theQuoteRequest
type.
- Added the
Automatic updates of SKU changes in Product Selection Assignments
We introduced a background service that reflects any change for SKUs performed on Products in all corresponding SKUs on ProductVariantSelections. This service keeps SKUs in ProductSelectionAssignments up to date with eventual consistency.
Discontinued support for IronMQ
We deprecated IronMQ as a Subscription destination in 2018 due to low adoption. The feature is now completely removed and newer versions of our SDKs no longer support it.
Retrieve applicable Shipping Methods for a Cart and Location
You can now retrieve Shipping Methods that match a given Cart and Location. The new endpoint is especially useful in cases where a Cart must match Shipping Method predicates, but does not have its shippingAddress
defined. For example, this allows you to retrieve applicable Shipping Methods for a Cart with multiple Shipping Methods.
Changes:
- [API] added Get ShippingMethods for a Cart and Location endpoint.
API Extensions for AWS Lambda destinations now support the use of function aliases
AWSLambdaDestination now accepts Lambda function aliases. This allows you to optimize your development and deployment workflows by pointing to a specific version of a Lambda in your API Extension.
Changes:
- [API] The
arn
field of AWSLambdaDestination now accepts AWS Lambda function aliases.
Added Cart freeze option
We have added the option to freeze Carts during the purchasing journey of your Customers. With this, usual price and discount updates are primarily not applied on frozen Carts. This new feature is useful if you want to prevent Carts from being modified by changes affecting prices until the order is placed. Inventory is not reserved by freezing a Cart.
Changes:
- [API] Added FreezeCart and UnfreezeCart update actions to Carts API.
- [API] Added
Frozen
field to CartState. - [GraphQL API] Added the following types to the GraphQL schema:
FreezeCart
,UnfreezeCart
. - [GraphQL API] Added input fields
freezeCart
andunfreezeCart
to theCartUpdateAction
type. - [GraphQL API] Added
Frozen
value to theCartState
enum type.
Introducing pattern and length validation for keys of Embedded Prices and Standalone Prices
As we have recently introduced a key
field on Embedded Prices, we have aligned pattern and length constraints accordingly so that there are no inconsistencies for imported Prices.
Values for the key
field in EmbeddedPriceDraftImport, EmbeddedPriceImport, and StandalonePriceImport should now match the pattern ^[A-Za-z0-9_-]+$
and be 2-256 characters in length. The key
value will be validated when processing import requests with the following objects:
- Product draft import endpoints having Price keys.
- StandalonePriceImport on Importing Standalone Prices.
- EmbeddedPriceImport on Importing Embedded Prices.
Announced removal of non-standard GraphQL error field
To fully comply with the GraphQL response format, we have moved the code
field under the extensions
map as shown in this example.
From 15 January 2023, code
will no longer be returned as a top-level field of the errors
array, but under the extensions
map.
As a part of the same initiative oriented towards complying with the GraphQL specification, we also removed support for non-standard variables. This change was announced on 4 October 2022 and took effect on 1 December 2022.
Added key to Embedded Prices and Embedded PriceDrafts, and an update action to set keys for both Standalone and Embedded Prices
In addition to identifying Embedded Prices by their id
, you can now use key
as a user-defined unique identifier. By assigning a human-readable key
to Embedded Prices, you have greater flexibility for referencing Embedded Prices.
The key
field was already available for StandalonePrices and this allowed us to assess and confirm its usefulness. Implementing the key
field in Embedded Prices ensures consistency in offerings for both Standalone Prices and Embedded Prices.
Update actions for setting the key
value has also been added for both Embedded Prices and Standalone Prices, allowing you to efficiently update Price keys without needing to bulk import Prices with the updated price keys.
Changes:
- [API] Added
key
field to Price and PriceDraft. - [API] Added Set Price Key update action.
- [API] Added Set Standalone Price Key update action.
- [API] Added the error code DuplicatePriceKey.
- [API] Added ProductPriceKeySet Message.
- [API] Added StandalonePriceKeySet Message.
- [GraphQL API] Changed the
ProductPrice
type:- Added the
key
field to theProductPrice
type.
- Added the
- [GraphQL API] Changed the
ProductPriceSearch
type:- Added the
key
field to theProductPriceSearch
type.
- Added the
- [GraphQL API] Changed the
ProductPriceDataInput
type:- Input field
key
was added toProductPriceDataInput
type
- Input field
- [GraphQL API] Added the following types to the GraphQL schema:
SetProductPriceKey
,SetStandalonePriceKey
,StandalonePriceKeySet
,ProductPriceKeySet
. - [GraphQL API] Changed the
ProductUpdateAction
type:- Input field
setPriceKey
was added toProductUpdateAction
type
- Input field
- [GraphQL API] Changed the
StandalonePriceUpdateAction
type:- Input field
setKey
was added toStandalonePriceUpdateAction
type
- Input field
Improvements to working with Business Units in the GraphQL API
We have made several improvements and changes to the Business Units functionality in GraphQL:
- Carts and Orders now support Reference Expansion on Business Unit.
- Added support for creating Carts that reference a Business Unit.
- Changed the naming of the type
AssociateRole
to free up the namespace for new functionality.
Changes:
- [GraphQL API] Changed the
Cart
type:- Added the
businessUnitRef
field to theCart
type. Cart.businessUnit
field type changed fromKeyReference
toBusinessUnit
- Added the
- [GraphQL API] Changed the
Order
type:Order.businessUnit
field type changed fromKeyReference
toBusinessUnit
- Added the
businessUnitRef
field to theOrder
type.
- [GraphQL API] Changed the
CartDraft
type:- Input field
businessUnit
was added toCartDraft
type
- Input field
- [GraphQL API] Changed the
MyCartDraft
type:- Input field
businessUnit
was added toMyCartDraft
type
- Input field
- [GraphQL API] Added the following types to the GraphQL schema:
SimpleAssociateRole
- [GraphQL API] Removed the following types from the GraphQL schema:
AssociateRole
. - [GraphQL API] Changed the
Associate
type:Associate.roles
field type changed from[AssociateRole!]!
to[SimpleAssociateRole!]!
- [GraphQL API] Changed the
AssociateDraft
type:AssociateDraft.roles
input field type changed from[AssociateRole!]!
to[SimpleAssociateRole!]!
Added Messages for changes on Embedded Prices and PriceMode on Products
You can now subscribe to Messages about adding, changing, setting, and removing Embedded Prices on Products, as well as setting the PriceMode on Products.
Changes:
- [API] Added ProductPriceAdded Message.
- [API] Added ProductPriceChanged Message.
- [API] Added ProductPricesSet Message.
- [API] Added ProductPriceRemoved Message.
- [API] Added ProductPriceModeSet Message.
- [GraphQL API] Added the following types to the GraphQL schema:
ProductPriceAdded
,ProductPriceChanged
,ProductPriceModeSet
,ProductPriceRemoved
,ProductPricesSet
.
Audit Log now tracks changes on Store's Product Selections
We have extended the abilities of Audit Log to include tracking of changes made on a Store's Product Selections. With this enhancement, all Product Selection-related Changes performed on Stores are tracked from now on and these Changes are now retrievable via API.
Added support for expanded Channel and Customer Group to GraphQL query for StandalonePrice
We understood there is a demand to retrieve the full information about the Channel and the Customer Group on Standalone Prices instead of just the reference to those via the GraphQL API. Before, additional API calls were needed to retrieve the respective information, from now on just one query is sufficient for this use case.
Changes:
- [GraphQL API] Changed the
StandalonePrice
type:- Added the
channel
field to theStandalonePrice
type. - Added the
customerGroup
field to theStandalonePrice
type.
- Added the
Introduced Countries to Stores
We have released countries in Stores in public beta. You can now define countries
on Stores and filter prices by country in Product Projections and Cart/Order/Shopping List Line Items.
Changes:
- [API] Added type StoreCountry to Stores.
- [API] Added
countries
field to Store and StoreDraft. - [API] Added Add Country, Remove Country, and Set Countries update actions to Stores.
- [API] Added optional
countries
field to StoreCreated Message. - [API] Added StoreCountriesChanged Message.
- [API] Added the error code CountryNotConfiguredInStore.
- [GraphQL API] Added the following types to the GraphQL schema:
AddStoreCountry
,RemoveStoreCountry
,SetStoreCountries
,StoreCountriesChanged
,StoreCountry
,StoreCountryInput
. - [GraphQL API] Changed the
StoreUpdateAction
type:- Input field
addCountry
was added toStoreUpdateAction
type - Input field
setCountries
was added toStoreUpdateAction
type - Input field
removeCountry
was added toStoreUpdateAction
type
- Input field
- [GraphQL API] Changed the
CreateStore
type:- Input field
countries
was added toCreateStore
type
- Input field
- [GraphQL API] Changed the
StoreCreated
type:- Added the
countries
field to theStoreCreated
type.
- Added the
- [GraphQL API] Changed the
Store
type:- Added the
countries
field to theStore
type.
- Added the
Correction to the `ChangeQuoteState` type in the GraphQL API
We made a correction to the ChangeQuoteState
type in the GraphQL API. The type of the input field quoteState
was incorrectly marked as MyQuoteState
instead of QuoteState
. This caused certain QuoteStates, for example, the Withdrawn
state, to be unavailable through the GraphQL API. With this correction in place, the ChangeQuoteState
type now supports all QuoteStates in GraphQL.
Changes:
- [GraphQL API] Changed the
ChangeQuoteState
type:ChangeQuoteState.quoteState
input field type changed fromMyQuoteState!
toQuoteState!
Introduced Attribute Groups in beta
You can now organize related Attributes together into Attributes Groups and ease your product data enhancement workflows.
Changes:
- [API] Added Attribute Groups API.
- [API] Added the
view_attribute_groups
andmanage_attribute_groups
OAuth scopes. - [GraphQL API] Added the following types to the GraphQL schema:
AddAttributeGroupAttribute
,AttributeGroup
,AttributeGroupDraft
,AttributeGroupQueryResult
,AttributeGroupUpdateAction
,ChangeAttributeGroupName
,RemoveAttributeGroupAttribute
,SetAttributeGroupAttributes
,SetAttributeGroupDescription
,SetAttributeGroupKey
,AttributeReference
.
Added functionality to automatically transition states for Quote Requests, Staged Quotes, and Quotes
You can now enable automatic state transitions between various pre-defined states for Quote Requests, Staged Quotes, and Quotes. In particular:
- When creating a Staged Quote you can transition the referenced Quote Request to the
Accepted
state using thequoteRequestStateToAccepted
field on StagedQuoteDraft. - When creating a Quote you can transition the referenced Staged Quote to the
Sent
state using thestagedQuoteStateToSent
field on QuoteDraft. - When creating an Order you can transition the referenced Quote to the
Accepted
state using thequoteStateToAccepted
field on OrderFromQuoteDraft. The same functionality is available on the My Order endpoint using MyOrderFromQuoteDraft.
This simplifies the management of Quote states by eliminating the need for an additional API call to transition the state.
Support for IAM-based authentication in the Subscriptions API
We have added support for IAM-based authentication for SNS and SQS Destinations. The new field authenticationMode
is available on SQSDestination and SNSDestination and defines the mode of authentication. IAM-based authentication allows the Subscriptions API to send messages to a queue or publish to a topic, without explicitly providing credentials in the form of an accessKey
and accessSecret
. This simplifies key management for customers who maintain hundreds of queues and rotate credentials regularly. By providing permissions to an IAM user instead, the access needs to be set up once per topic and requires no additional key management. For backwards compatibility, the authenticationMode
field is set to Credentials
by default.
Changes:
- [API] Added fields
authenticationMode
to SQSDestination and SNSDestination. - [API] Added AwsAuthenticationMode.
- [GraphQL API] Added the following types to the GraphQL schema:
AwsAuthenticationMode
. - [GraphQL API] Changed the
SQSDestinationInput
type:SQSDestinationInput.accessSecret
input field type changed fromString!
toString
SQSDestinationInput.accessKey
input field type changed fromString!
toString
- Input field
authenticationMode
was added toSQSDestinationInput
type
- [GraphQL API] Changed the
SNSDestinationInput
type:SNSDestinationInput.accessSecret
input field type changed fromString!
toString
SNSDestinationInput.accessKey
input field type changed fromString!
toString
- Input field
authenticationMode
was added toSNSDestinationInput
type
- [GraphQL API] Changed the
SQSDestination
type:SQSDestination.accessSecret
field type changed fromString!
toString
- Added the
authenticationMode
field to theSQSDestination
type. SQSDestination.accessKey
field type changed fromString!
toString
- [GraphQL API] Changed the
SNSDestination
type:SNSDestination.accessSecret
field type changed fromString!
toString
SNSDestination.accessKey
field type changed fromString!
toString
- Added the
authenticationMode
field to theSNSDestination
type.
Order import now supports Store key reference
The Import Orders endpoint now supports referencing Stores by key using StoreKeyReference.
Changes:
- [API] Added StoreKeyReference on the Import Orders endpoint.
Introduced My Quotes in beta
The My Quotes API provides access to Quotes scoped to a specific user. Using the My Quotes endpoints, Buyers can view and update Quotes that they have access to. By updating the state of the Quote, Buyers can indicate whether they accept or decline a given Quote.
Changes:
- [API] Added My Quotes API.
- [API] Added MyOrderFromQuoteDraft to My Orders.
- [API] Added Create Order from My Quote endpoint to My Orders.
- [GraphQL API] Added the following types to the GraphQL schema:
ChangeMyQuoteMyQuoteState
,MyQuoteState
,MyQuoteUpdateAction
,OrderMyQuoteCommand
- [GraphQL API] Changed the
Me
type:- Added the
quote
field to theMe
type. - Added the
quotes
field to theMe
type.
- Added the
- [GraphQL API] Changed the
Mutation
type:- Added the
updateMyQuote
field to theMutation
type.
- Added the
Introduced Business Units in beta
We have released Business Units in public beta. This new feature allows you to model companies and their divisions in Composable Commerce. You can assign Customers to Business Units to manage Carts, Orders, and Quotes on behalf of companies. With the help of Stores, Business Units can support company-specific products and pricing. When linked to a Business Unit, Carts, Orders, and Quotes will validate a Customer's role within the Business Unit. This feature is part of Composable Commerce for B2B and will be subject to additional terms and pricing.
Announced removal of non-standard GraphQL variables format
To be fully compliant with the GraphQL specification for serving over HTTP, we will be accepting GraphQL variables
only as a JSON objects from 1 December 2022.
From then on, we will no longer accept variables
to be passed as String
containing a JSON object.
Please find an example on how to use GraphQL variables
on our GraphQL API page.
Added Line Item inventoryMode to the GraphQL schema
To align with the HTTP API we released following Carts- and Quotes-related features in the GraphQL API.
Changes:
- [GraphQL API] Added the
inventoryMode
field to theLineItem
type. - [GraphQL API] Added Enum value
Quote
toCartOrigin
type . - [GraphQL API] Added the
sellerComment
field to theStagedQuote
type.
Introducing the Standalone Price import endpoint
The Standalone Price Import endpoint has been added to the Import API, enabling the bulk import of Standalone Price.
You can now:
- Send us the whole StandalonePrice snapshot and we will create/update the entry in your Project by calculating the delta.
Using the Standalone Prices endpoint is the same as using other Import API endpoints. For more information:
- View the best practices guide for the Import API.
- Discover how Import Containers work.
The Product Draft endpoint only supports Embedded Prices. Standalone Prices must be imported separately using Standalone Price endpoint.
Changes:
- [API] Added Standalone Price Import endpoint.
Added 'productSelections' to Store limits query in the GraphQL API
You can now view Product Selections limits for Stores in the GraphQL API.
Changes:
- [GraphQL API] Changed the
StoreLimitsProjection
type:- Added the
productSelections
field to theStoreLimitsProjection
type.
- Added the
Increased the limit of Line Items in Shopping Lists to 250.
We understood from our customers that there is a need to store more than 100 Line Items in a Shopping List and after analyzing the performance impact of higher numbers of Line Items we can now raise this limit to 250. This limit can be increased per Project after we reviewed the performance impact. Find more details in the documentation.
Added Message for changes on supply channels on Stores
You can now subscribe to Messages about additions, removals, or overwrites of inventory supply Channels on Stores.
Changes:
- [API] Added StoreSupplyChannelsChanged Message.
- [GraphQL API] Added the following type to the GraphQL schema:
StoreSupplyChannelsChanged
.
Added new state 'Delivered' to Order ShipmentState
With the new ShipmentState, Delivered
, you can now track the orders that are received by the customer.
Previously, this was only possible by using a custom state on the Order, or on the Line Item if they have more shipments per Order.
Added 'active' field to Standalone Prices
With the new 'active' field on Standalone Prices you can activate or deactivate individual Standalone Prices. This allows you to make changes or edits to your prices without them being visible to your customers. When a Standalone Price is not active, it is not considered during price selection. All existing Standalone Prices received an active status.
Added Message for name changes on Stores
You can now subscribe to Messages about name changes on Stores.
Changes:
- [API] Added StoreNameSet Message.
- [GraphQL API] Added the following type to the GraphQL schema:
StoreNameSet
.
Added support for Direct Discounts in the GraphQL API
Direct Discounts on Carts are now supported in the GraphQL API. The feature has been released in beta in the HTTP API on 30 June 2022.
Changes:
- [GraphQL API] Added the following types to the GraphQL schema:
DirectDiscount
,DirectDiscountDraft
,DirectDiscountDraftOutput
,SetCartDirectDiscounts
,SetStagedOrderDirectDiscounts
,SetStagedOrderDirectDiscountsOutput
. - [GraphQL API] Changed the
Quote
type:- Added the
directDiscounts
field to theQuote
type.
- Added the
- [GraphQL API] Changed the
QuoteRequest
type:- Added the
directDiscounts
field to theQuoteRequest
type.
- Added the
- [GraphQL API] Changed the
CartUpdateAction
type:- Input field
setDirectDiscounts
was added toCartUpdateAction
type
- Input field
- [GraphQL API] Changed the
Cart
type:- Added the
directDiscounts
field to theCart
type.
- Added the
- [GraphQL API] Changed the
StagedOrderUpdateAction
type:- Input field
setDirectDiscounts
was added toStagedOrderUpdateAction
type
- Input field
- [GraphQL API] Changed the
Order
type:- Added the
directDiscounts
field to theOrder
type.
- Added the
Raised limit for Stores in a Project
After successful experiences with Projects having up to 50,000 Stores, we have now raised this limit to 300,000. With this, we provide better support for B2B scenarios now in which separate product catalogs with pricing for business units of companies are required.
This limit can be increased per Project after we reviewed the performance impact. See also documentation.
Deprecation of PHP and .NET Core v1 SDKs
As announced previously in our long-term support plan for Composable Commerce SDKs, Version 1 (v1) of our PHP and .NET Core SDKs are now deprecated effective today.
These SDKs will not receive any future updates to fix bugs or security vulnerabilities. If you are using one of these SDKs, you should migrate to PHP v2 or .NET v2. You can find migration guides for both SDKs on their respective pages.
Fixed ChangeDiscountCodeCartDiscounts type in GraphQL schema
We fixed the GraphQL type for changing the Cart Discounts on Discount Codes to achieve alignment with the respective update action on the Discount Codes API.
With this, you can now reference the CartDiscounts by user-defined key
in addition to id
also in the GraphQL API.
Furthermore, we made the Channel-related fields optional in the Store Distribution Channels Changed
Message.
Multiple Shipping Methods for Carts and Orders
You can now add multiple Shipping Methods to a Cart and Order. This is useful for cases where you want to have individual Shipping Methods for each Line Item ordered from a Cart.
A newly introduced shippingMode
on Cart and Order controls whether Carts and Orders can have single or multiple Shipping Methods. The default ShippingMode is Single
for backwards compatibility. For Carts and Orders with multiple Shipping Methods, all shipping-related information (such as address, rate, deliveries) are wrapped in a newly introduced Shipping object per Shipping Method. The Shipping object can also be extended with Custom Fields.
Additionally, you can add deliveries to Carts during Cart creation, which was previously only possible on Orders.
Order import now supports Custom Fields on Line Items
The Import Orders endpoint now supports Custom Fields for Line Items.
Changes:
- [API] Added Custom Fields to LineItemImportDraft on the Import Orders endpoint.
Added Message for language changes on Stores
You can now subscribe to Messages about language changes on Stores.
Changes:
- [API] Added StoreLanguagesChanged Message.
- [GraphQL API] Added the following type to the GraphQL schema:
StoreLanguagesChanged
.
Buyers can now request Quote renegotiation
Buyers can now request to renegotiate a Quote provided by the Seller. Previously, Buyers only had the option to accept or reject a Quote. Renegotiation offers more flexibility and allows Buyers to ask for amendments to the Quote. Buyers can express additional details regarding their request in the form of a comment.
Customer import now supports Custom Fields on addresses
The Import Customers endpoint now supports Custom Fields for Customer addresses.
Changes:
- [API] Added Custom Fields to CustomerAddress on the Import Customers endpoint.
Added 'priceMode' field to CustomLineItemDraft and CustomLineItemImportDraft
You can now set the price mode for a Custom Line Item when adding the Custom Line Item to a Cart.
Previously, new Custom Line Items had the Standard
price mode set by default for backwards compatibilty. You could only change the price mode on an existing Custom Line Item with the Change CustomLineItem Price Mode update action.
Added Reference Expansion for Product Search Attributes in the GraphQL API
Reference Expansion for Attributes of ProductProjectionsSearch is now supported in the GraphQL API.
We appreciate your feedback on this new in public beta feature. An example query can be found in our GraphQL API documentation.
Changes:
- [GraphQL API] Changed the
RawProductSearchAttribute
type:- Added the
referencedResourceSet
field to theRawProductSearchAttribute
type. - Added the
referencedResource
field to theRawProductSearchAttribute
type.
- Added the
Staged Standalone Prices Available in Beta
With Staged Standalone Prices, you can make changes or edits to Standalone Prices without them being visible to your customers. This allows you to prepare and test your changes before applying them with confidence when they are ready. Staged Standalone Prices support DiscountedPrice which means that you can assess how a given Product Discount would affect your Prices before making them live. Staged Standalone Prices is currently available in public beta.
Changes:
- [API] Added StagedStandalonePrice to Standalone Prices API.
- [API] Added field
staged
to StandalonePrice. - [API] Added
applyStagedChanges
update action to StandalonePrice. - [API] Added
StandalonePriceStagedChangesApplied
Message. - [API] Added field
staged
toStandalonePriceValueChanged
Message - [GraphQL API] Added the following types to the GraphQL schema:
ApplyStagedChanges
,StagedStandalonePrice
,StandalonePriceStagedChangesApplied
. - [GraphQL API] Changed the
StandalonePriceUpdateAction
type:- Input field
applyStagedChanges
was added toStandalonePriceUpdateAction
type
- Input field
- [GraphQL API] Changed the
ChangeStandalonePriceValue
type:- Input field
staged
was added toChangeStandalonePriceValue
type
- Input field
- [GraphQL API] Changed the
StandalonePrice
type:- Added the
staged
field to theStandalonePrice
type.
- Added the
- [GraphQL API] Changed the
StandalonePriceValueChanged
type:- Added the
staged
field to theStandalonePriceValueChanged
type.
- Added the
Added 'state' to QuoteRequest, StagedQuote, and Quote
You can now set States reflecting custom business logic on QuoteRequests, StagedQuotes, and Quotes.
Removed closed beta features from GraphQL schema
In our June 14, 2022 release we incorrectly labeled some closed beta features as available in public beta and introduced them in our GraphQL schema file.
We made a correction to the schema file and the original release note to remove the closed beta features listed below. This does not change the availability of the features. They remain discoverable through introspection and are intended for selected customers taking part in closed beta programs.
If you are interested in evaluating a closed beta feature, please reach out to your contact at commercetools.
API Extensions now support Quote Requests, Staged Quotes and Quotes
You can now extend the Quotes APIs with your custom business logic using API Extensions. You can trigger Extensions on create and update requests to Quote Requests, Staged Quotes, and Quotes. This allows you to integrate with other services seamlessly and cover custom B2B use cases by modifying the default behavior of the APIs.
Changes:
- [API] Added
quote-request
,staged-quote
, andquote
to ExtensionResourceTypeId.
Added inventory mode to Line Items
The inventory mode can now be configured for individual LineItems. The Cart/Order-level inventory mode remains, but can be overridden on a per-line-item basis. For example, in a Cart with two Line Items, you can now give Line Item 1 an inventory mode that is different from the inventory mode for Line Item 2. Before this release, it was only possible to specify one inventory mode valid for all Line Items in the Cart or Order.
Changes:
- [API] Added optional
inventoryMode
field to LineItem, LineItemDraft, and LineItemImportDraft. - [GraphQL API] Changed the
LineItemDraftOutput
type:- Added the
inventoryMode
field to theLineItemDraftOutput
type.
- Added the
- [GraphQL API] Changed the
AddStagedOrderLineItem
type:- Input field
inventoryMode
was added toAddStagedOrderLineItem
type
- Input field
- [GraphQL API] Changed the
AddCartLineItem
type:- Input field
inventoryMode
was added toAddCartLineItem
type
- Input field
- [GraphQL API] Changed the
LineItemDraft
type:- Input field
inventoryMode
was added toLineItemDraft
type
- Input field
Added 'priceMode' to Custom Line Item
You can now set a price mode on a CustomLineItem that controls whether Cart Discounts should be applied to them by Composable Commerce or not. Use this if you want to control application of Cart Discounts for each Custom Line Item in the Cart individually.
For backwards compatibility, Standard
is the default price mode for newly created Custom Line Items, that allows application of Cart Discounts. For cases where Cart Discounts should not be considered on a Custom Line Item, you can change its price mode to External
via new update action. You can still overwrite the price for a Custom Line Item via Change CustomLineItem Money update action.
Changes:
- [API] Added field
priceMode
to CustomLineItem. - [API] Added Change CustomLineItem Price Mode update action to Carts.
- [GraphQL API] Added the following types to the GraphQL schema:
ChangeCartCustomLineItemPriceMode
,CustomLineItemPriceMode
. - [GraphQL API] Changed the
CartUpdateAction
type:- Input field
changeCustomLineItemPriceMode
was added toCartUpdateAction
type
- Input field
- [GraphQL API] Changed the
CustomLineItem
type:- Added the
priceMode
field to theCustomLineItem
type.
- Added the
- [GraphQL API] Changed the
TypeDefinition
type:TypeDefinition
type description is changed
PriceMode can now be set on Products using the Import API
You can now set the PriceMode of Products using the Product import and Product draft import endpoints.
Standalone Prices recently achieved general availability, enabling you to use Standalone Prices with the Import API. It is convenient to set the PriceMode at the Product level when creating or updating Products using the Import API.
Consult the Import API reference documentation to learn how to set the PriceMode when importing (creating or updating) a Product:
Audit Log now tracks changes on Quote Request, Staged Quotes and Quotes
We have extended the capabilities of Audit Log to include the tracking of changes made on Quotes, Quote Requests, and Staged Quotes. With this enhancement, all Changes performed on Quotes, Quotes Requests and Staged Quotes are tracked from now on and these Changes are now retrievable via API.
Changes:
- [API] Added scopes
view_quotes:{projectKey}
,view_quotes:{projectKey}
, andview_quotes:{projectKey}
. - [API] Added
quote
,quote-request
, andstaged-quote
to ChangeHistoryResourceType. - [API] Added ChangeQuoteRequestStateChange, ChangeQuoteStateChange, ChangeStagedQuoteStateChange, SetSellerCommentChange, and SetValidToChange.
- [API] Added StagedQuoteLabel, QuoteRequestLabel, QuoteLabel, and StagedQuoteLabel.
- [GraphQL API] Added the following types to the graphQL schema:
QuoteRequestChangeInput
,QuoteChangeInput
andStagedQuoteChangeInput
. - [GraphQL API] Added
QuoteRequestLabel
,QuoteLabel
, andStagedQuoteLabel
type. - [GraphQL API] Added queries
quoteRequest
andquoteRequests
. - [GraphQL API] Added queries
quote
andquotes
. - [GraphQL API] Added queries
stagedQuote
andstagedQuotes
. - [GraphQL API] Added
QuoteRequest
,Quote
, andStagedQuote
to the ResourceType enum.
Added Message for changes on distribution channels on Stores
You can now subscribe to Messages about additions, removals, or overwrites of product distribution Channels on Stores.
Changes:
- [API] Added StoreDistributionChannelsChanged Message.
- [GraphQL API] Added the following type to the GraphQL schema:
StoreDistributionChannelsChanged
.
Added existence check for Product Types
You can now check if a Product Type exists using its id
, key
or a query predicate. These methods are useful if you are only interested in the existence of a certain Product Type without the need of fetching its information.
- [API] Added HEAD methods for Product Types by ID, by Key, and by Query Predicate.
Added OrderImport GraphQL mutation
You can now create an Order by import using the GraphQL API.
Changes:
- [GraphQL API] Added the following types to the GraphQL schema:
CustomLineItemImportDraft
,DeliveryDraft
,DiscountedLineItemPriceDraft
,ImportOrderDraft
,LineItemImportDraft
,ParcelDraft
,ProductVariantImportDraft
,ShippingInfoImportDraft
,TaxRateInput
,TaxedPriceDraft
. - [GraphQL API] Changed the
Mutation
type:- Added the
importOrder
field to theMutation
type.
- Added the
Audit Log now tracks changes on Product Selections
We have extended the capabilities of Audit Log to include the tracking of changes made on Product Selections. With this enhancement, all Changes performed on Product Selections are tracked from now on and these Changes are now retrievable via API.
Changes:
- [API] Added the
view_product_selections:{projectKey}
scope. - [API] Added
product-selection
to ChangeHistoryResourceType. - [API] Added AddProductChange.
- [API] Added RemoveProductChange.
- [API] Added SetProductCountChange.
- [GraphQL API] Added the following types to the graphQL schema:
ProductSelectionChangeInput
. - [GraphQL API] Added queries
productSelection
andproductSelections
. - [GraphQL API] Added
ProductSelection
to the ResourceType enum.
Introduced Quotes in beta
We have released Quotes in public beta. This new feature allows you to negotiate quote requests for your products with your customers. The negotiation process involves utilizing several APIs that we introduced with this feature, allowing you to control each step of the intended workflow of the negotiation. All the introduced resources, such as Quote Request, Staged Quote, and Quote can be extended with Custom Fields. The discounts applied on a specific Quote, can be utilized by the newly added DirectDiscount. After successful negotiation, the Order can be created right from the Quote.
Changes:
- [API] Added Quote Requests and My Quote Requests APIs.
- [API] Added Staged Quotes API.
- [API] Added Quotes API.
- [API] Added QuoteRequestCreated, QuoteRequestStateChanged, and QuoteRequestDeleted Messages.
- [API] Added StagedQuoteCreated, StagedQuoteStateChanged, StagedQuoteValidToSet, StagedQuoteSellerCommentSet, and StagedQuoteDeleted Messages.
- [API] Added QuoteCreated, QuoteStateChanged, and QuoteDeleted Messages.
- [API] Added
Quote
to CartOrigin. - [API] Added DirectDiscount and DirectDiscountDraft to Carts API.
- [API] Added
directDiscounts
field to Cart and Order. - [API] Added
setDirectDiscounts
update action to Carts and Orders via OrderEdit. - [API] Added OrderFromQuoteDraft and Create Order from Quote endpoint to Orders API.
- [API] Added
quote
field to Order. - [API] Added OAuth scopes
manage_quote_requests
,view_quote_requests
,manage_my_quote_requests
,manage_staged_quotes
,view_staged_quotes
,manage_quotes
, andview_quotes
. - [GraphQL API] Added the following types to the GraphQL schema:
CancelQuoteRequest
,ChangeMyQuoteMyQuoteState
,ChangeQuoteRequestState
,ChangeQuoteState
,ChangeStagedQuoteState
,MyQuoteRequestDraft
,MyQuoteRequestUpdateAction
,MyQuoteState
,MyQuoteUpdateAction
,OrderMyQuoteCommand
,OrderQuoteCommand
,Quote
,QuoteDraft
,QuoteQueryResult
,QuoteRequest
,QuoteRequestDraft
,QuoteRequestQueryResult
,QuoteRequestState
,QuoteRequestUpdateAction
,QuoteState
,QuoteUpdateAction
,SetMyQuoteRequestCustomField
,SetMyQuoteRequestCustomType
,SetQuoteCustomField
,SetQuoteCustomType
,SetQuoteRequestCustomField
,SetQuoteRequestCustomType
,SetStagedQuoteCustomField
,SetStagedQuoteCustomType
,SetStagedQuoteSellerComment
,SetStagedQuoteValidTo
,StagedQuote
,StagedQuoteDraft
,StagedQuoteQueryResult
,StagedQuoteState
,StagedQuoteUpdateAction
.
Introducing the Inventory import endpoint
The Inventory endpoint has been added to the Import API, enabling the bulk import of Inventory Entries.
You can now:
- Send us the whole InventoryEntry snapshot and we will create/update the entry in your Project by calculating the delta.
- Use the Inventory endpoint to schedule hourly/daily/nightly/weekly bulk inventory import processes.
Using the Inventory endpoint is the same as using other Import API endpoints. For more information:
- View the best practices guide for the Import API.
- Discover how Import Containers work.
Changes:
- [API] Added Inventory Import endpoint.
Product Selections can now operate on Product Variant level
You can now include or exclude particular Product Variants in/from a Product Selection. Formerly it was only possible to add Products as a whole to a Product Selection meaning that all existing Product Variants of the Product are included.
Changes:
- [API] You can now specify a Product Variant Selection when you Add a Product to the Product Selection.
- [API] You can now specify a Product Variant Selection for an existing Product in the Product Selection by the new Set Variant Selection update action.
- [API] When you query a Product Selection for Products assigned to a Product Selection the response now also contains Product Variant Selections.
- [API] When you query for Products available in a Store through active Product Selections the response now also contains Product Variant Selections.
- [API] When you Get Product Projection in Store by ID or by Key you can now project by Product Selection assignments for Product Variants.
- [API] Added
variantSelection
field to ProductSelectionProductAdded Message. - [API] Added ProductSelectionVariantSelectionChanged Message.
- [API] Added
ProductAssignmentMissing
andProductPresentWithDifferentVariantSelection
errors. - [GraphQL API] Added the following types to the GraphQL schema:
ProductSelectionVariantSelectionChanged
,ProductVariantSelection
,ProductVariantSelectionDraft
,ProductVariantSelectionExclusion
,ProductVariantSelectionInclusion
,SetProductSelectionVariantSelection
. - [GraphQL API] Changed the
ProductOfSelection
type:- Added the
variantSelection
field to theProductOfSelection
type.
- Added the
- [GraphQL API] Changed the
SelectionOfProduct
type:- Added the
variantSelection
field to theSelectionOfProduct
type.
- Added the
- [GraphQL API] Changed the
ProductSelectionUpdateAction
type:- Input field
setVariantSelection
was added toProductSelectionUpdateAction
type
- Input field
- [GraphQL API] Changed the
AddProductSelectionProduct
type:- Input field
variantSelection
was added toAddProductSelectionProduct
type
- Input field
- [GraphQL API] Changed the
ProductSelectionProductAdded
type:- Added the
variantSelection
field to theProductSelectionProductAdded
type.
- Added the
Standalone Prices achieved general availability status
After collecting feedback during the beta phase, we have moved Standalone Prices out of beta. The status of the following features has been changed to general availability:
- Querying and managing Standalone Prices through the Standalone Prices API
- Adding Custom Fields on Standalone Prices
- Setting the
priceMode
on the Product
Read more on Standalone Prices and how to use them in the API reference.
Extended long-term support plan for Java v1 SDK
The long-term support plan for the Java v1 SDK has been extended until the end of 2023. This provides additional time for users to migrate to Java v2 SDK.
Changes in the GraphQL schema
Changes:
- [GraphQL API] Changed the
AuthenticationMode
type:AuthenticationMode
type description is changed
- [GraphQL API] Changed the
StandalonePriceCustomField
type:StandalonePriceCustomField
type description is changed
- [GraphQL API] Changed the
ProductPrice
type:- Added the
key
field to theProductPrice
type.
- Added the
- [GraphQL API] Changed the
RoundingMode
type:RoundingMode.HalfDown
description changed
- [GraphQL API] Changed the
ProductPriceSearch
type:- Added the
key
field to theProductPriceSearch
type.
- Added the
- [GraphQL API] Changed the
Payment
type:Payment
type description is changed
- [GraphQL API] Changed the
SelectionOfProduct
type:- Added the
createdAt
field to theSelectionOfProduct
type.
- Added the
- [GraphQL API] Changed the
MyPayment
type:MyPayment
type description is changed
- [GraphQL API] Changed the
Query
type:Query.standalonePrices
description is changedQuery.standalonePrice
description is changed
- [GraphQL API] Changed the
ProductPriceDataInput
type:- Input field
key
was added toProductPriceDataInput
type
- Input field
- [GraphQL API] Changed the
Cart
type:- Argument
id
was added toCart.lineItems
field
- Argument
- [GraphQL API] Changed the
PriceMode
type:PriceMode
type description is changed
- [GraphQL API] Changed the
StandalonePriceQueryResult
type:StandalonePriceQueryResult.exists
description is changed
- [GraphQL API] Changed the
TriggerInput
type:- Input field
condition
was added toTriggerInput
type
- Input field
- [GraphQL API] Changed the
Mutation
type:Mutation.replicateMyCart
description is changed
- [GraphQL API] Changed the
Order
type:Order
type description is changed- Argument
id
was added toOrder.lineItems
field
- [GraphQL API] Changed the
Trigger
type:- Added the
condition
field to theTrigger
type.
- Added the
- [GraphQL API] Changed the
StandalonePrice
type:StandalonePrice
type description is changed
Added update action for setting external discounts on Standalone Prices
You can now set the discounted
value of a Standalone Price via update action also. Before, it was only possible to set that value during creation of the Standalone Price.
Changes:
- [API] Added SetStandalonePriceDiscountedPrice update action to Standalone Prices.
- [API] Added StandalonePriceExternalDiscountSet Message.
- [GraphQL API] Added the following types to the GraphQL schema:
SetStandalonePriceDiscountedPrice
,StandalonePriceExternalDiscountSet
. - [GraphQL API] Changed the
StandalonePriceUpdateAction
type:- Input field
setDiscountedPrice
was added toStandalonePriceUpdateAction
type
- Input field
Conditional API Extensions in Beta
Conditional triggers on API Extensions allow you to specify the criteria under which a given Extension is triggered. By default, API Extensions are called on every create or update to the resource they are configured for. However, the new feature allows you to specify fine-grained predicates based on the resource's properties. Using conditional statements you can configure the API Extension to trigger only when your particular use case requires it. Conditional triggers are especially useful in cases where multiple brands or countries reside in a single project.
Changes:
- [API] Added
condition
field to ExtensionTrigger. - [GraphQL API] Changed the
TriggerInput
type:- Input field
condition
was added toTriggerInput
type
- Input field
- [GraphQL API] Changed the
Trigger
type:- Added the
condition
field to theTrigger
type.
- Added the
extend type Trigger {
condition: String
}
extend input TriggerInput {
condition: String
}
Added Messages for Standalone Prices
You can now subscribe to Messages specific to Standalone Prices to get informed about their creation, deletion, or updates on them.
Changes:
- [API] Added StandalonePriceCreated Message, StandalonePriceDeleted Message, StandalonePriceValueChanged Message, and StandalonePriceDiscountSet Message.
- [GraphQL API] Added the following types to the GraphQL schema:
StandalonePriceCreated
,StandalonePriceDeleted
,StandalonePriceDiscountSet
,StandalonePriceValueChanged
.
Removed 'lastMessageSequenceNumber' from Order
The lastMessageSequenceNumber
field is deprecated from Order, as it is an internal field that should not be used in customer logic.
For processing Messages in the correct order, a message processor can continue to use the id
field of the resource alongside the sequenceNumber
of the Message.
Changes:
- [API] Removed
lastMessageSequenceNumber
from Order. - [GraphQL API] Changed the
Order
type:- Field
lastMessageSequenceNumber
was deprecated inOrder
type.
- Field
Introduced Standalone Prices in Beta
The Standalone Prices feature provides an alternative way to store your product prices as standalone resources. In comparison to prices embedded inside the Product, this new approach allows increasing the limit of prices per ProductVariant from 100 to 50.000. It also brings a more flexible way to query and manage your prices, separately from your Products, which contributes to better query performance.
The feature allows you to manage and query Standalone Prices through the Standalone Prices API, and to associate them to a ProductVariant via SKU. Additionally, a new priceMode
has been introduced on the Product that controls whether the Prices of the ProductVariants are embedded into the Product resource or stored separately as Standalone Prices.
Please note that currently it is not possible to use filters, facets, and sorting on Standalone Prices via the Product Projection Search endpoint.
Read more on Standalone Prices and how to use them in the API reference.
Changes:
- [API] Added Standalone Prices API.
- [API] Added
view_standalone_prices
andmanage_standalone_prices
OAuth scopes. - [API] Added optional field
priceMode
to Product and ProductDraft. - [API] Added Set PriceMode update action to Product.
- [API] Added
DuplicateStandalonePriceScope
andOverlappingStandalonePriceValidity
400 Bad Request errors specific to Standalone Prices. - [GraphQL API] Added the following types to the GraphQL schema:
ChangeStandalonePriceValue
,CreateStandalonePrice
,PriceMode
,SetProductPriceMode
,SetStandalonePriceCustomFields
,StandalonePrice
,StandalonePriceCustomField
,StandalonePriceQueryResult
,StandalonePriceUpdateAction
. - [GraphQL API] Changed the
Query
type:- Added the
standalonePrice
field to theQuery
type. - Added the
standalonePrices
field to theQuery
type.
- Added the
- [GraphQL API] Changed the
Mutation
type:- Added the
createStandalonePrice
field to theMutation
type. - Added the
deleteStandalonePrice
field to theMutation
type. - Added the
updateStandalonePrice
field to theMutation
type.
- Added the
- [GraphQL API] Changed the
Product
type:- Added the
priceMode
field to theProduct
type.
- Added the
- [GraphQL API] Changed the
ProductDraft
type:- Input field
priceMode
was added toProductDraft
type
- Input field
- [GraphQL API] Changed the
ProductUpdateAction
type:- Input field
setPriceMode
was added toProductUpdateAction
type
- Input field
OrderFromCartDraft Custom Fields now merge with Cart Custom Fields.
When creating an Order from a Cart, the Custom Fields in the OrderFromCartDraft now merge with the Custom Fields in the referenced Cart.
With this, you can enrich the Custom Fields that already exist on the Cart and store them in the Order with a single API call.
Changes:
- [API] The
custom
field on OrderFromCartDraft is now used for adding extra Custom Fields on Create Order from Cart.
Added Cart replication to My Carts
Creating a new Cart by replicating an existing Cart or Order can be useful in case a Customer wants to cancel a recent order to make some changes, or if a previous order should be ordered again. This has been supported for Carts already, and now we added a replicatiion endpoint for My Carts also.
Changes:
- [API] Added Replicate My Cart endpoint.
- [API] Added ReplicaMyCartDraft.
- [GraphQL API] Changed the
Mutation
type:- Added the
replicateMyCart
field to theMutation
type.
- Added the
Added 'deleteAt' and 'deleteDaysAfterCreation' fields to API Clients in the GraphQL API
You can now view and configure the deletion date of API Clients in the GraphQL API.
Changes:
- [GraphQL API] Changed the
APIClientWithoutSecret
type:- Added the
deleteAt
field to theAPIClientWithoutSecret
type.
- Added the
- [GraphQL API] Changed the
APIClientWithSecret
type:- Added the
deleteAt
field to theAPIClientWithSecret
type.
- Added the
- [GraphQL API] Changed the
CreateApiClient
type:- Input field
deleteDaysAfterCreation
was added toCreateApiClient
type
- Input field
Added total tax to Carts, Orders, and Line Items
The total tax amount on Cart, Order, LineItem, CustomLineItem, and ShippingInfo. Before, your application had to calculate that amount if you wanted to display it to your customers.
Changes:
- [API] Added optional
totalTax
field to TaxedPrice and TaxedItemPrice. - [GraphQL API] Changed the
TaxedPrice
type:- Added the
totalTax
field to theTaxedPrice
type. - Added the
totalTax
field to theTaxedItemPrice
type.
- Added the
Added Reference Expansion for Product Attributes in the GraphQL API
Reference Expansion for Attributes of Products is now supported in the GraphQL API.
We appreciate your feedback on this new in public beta feature. An example query can be found in our GraphQL API documentation.
Changes:
- [GraphQL API] Changed the
RawProductAttribute
type:- Added the
referencedResourceSet
field to theRawProductAttribute
type. - Added the
referencedResource
field to theRawProductAttribute
type.
- Added the
OrderFromCartDraft can now be extended with Custom Fields.
You can now add Custom Fields when you Create an Order from a Cart. With this, you can now store additional information, like payment reference, to your Order during checkout if required for your business logic.
Changes:
- [API] Added optional
custom
field to OrderFromCartDraft. - [GraphQL API] Changed the
OrderCartCommand
type:- Added the
custom
field toOrderCartCommand
type.
- Added the
Audit Log now supports Stores
We have extended the abilities of Audit Log to include tracking of changes on Stores as well as on Store-related information on Customers, Orders, and Shopping Lists.
For supported resources, this enhancement will now scope Audit Log response data to the user's or API Client's Store permissions. All other resources will remain unaffected.
Changes:
- [API] Adds
stores
attribute toRecord
response. - [API] Adds filter for
store
keys to all available endpoints. - [GraphQL API] Adds
stores
attribute toChangeHistory
type. - [GraphQL API] Adds filter for
store
keys to all queries for supported resources.
Added 'paymentInfo' and 'state' fields to OrderImportDraft
You can now set the PaymentInfo as well as a State to an Order via Order Import.
Changes:
- [API] Added optional field
paymentInfo
to OrderImportDraft. - [API] Added optional field
state
to OrderImportDraft.
Added Reference Expansion for Custom Fields in the GraphQL API
Reference Expansion for Custom Fields of CustomFieldReferenceType (as well as for the CustomFieldSetType of it) is now supported in the GraphQL API.
We appreciate your feedback on this new in public beta feature; for an example query, please refer to the respective section in the GraphQL API documentation.
Changes:
- [GraphQL API] Changed the
RawCustomField
type:- Added the
referencedResourceSet
field to theRawCustomField
type. - Added the
referencedResource
field to theRawCustomField
type.
- Added the
- [GraphQL API] Changed the
Cart
type:Cart
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
CartDiscount
type:CartDiscount
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
Category
type:Category
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
Channel
type:Channel
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
Customer
type:Customer
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
CustomerGroup
type:CustomerGroup
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
CustomObject
type:CustomObject
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
DiscountCode
type:DiscountCode
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
Extension
type:Extension
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
InventoryEntry
type:InventoryEntry
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
Message
type:Message
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
Order
type:Order
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
Product
type:Product
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
ProductDiscount
type:ProductDiscount
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
ProductTypeDefinition
type:ProductTypeDefinition
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
Review
type:Review
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
ShippingMethod
type:ShippingMethod
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
ShoppingList
type:ShoppingList
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
State
type:State
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
Store
type:Store
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
TaxCategory
type:TaxCategory
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
TypeDefinition
type:TypeDefinition
object type now implementsReferenceExpandable
interface
- [GraphQL API] Changed the
Zone
type:Zone
object type now implementsReferenceExpandable
interface
Introduced AuthenticationMode for Customer
We introduced the AuthenticationMode that controls whether the password
field is required for a Customer in public beta. The Password
authentication mode is the default mode for backwards compatibility that requires to set a password for the Customer. For use cases where Customers are authenticated externally, you can now set the authenticationMode
to ExternalAuth
to create Customers without a password.
Changes:
- [API] Added
authenticationMode
field to Customer and CustomerDraft. - [API] Changed
password
field to be optional on CustomerDraft whenauthenticationMode
is set toExternalAuth
. - [API] Removed
password
field from Customer whenauthenticationMode
is set toExternalAuth
. - [API] Added Set AuthenticationMode update action.
- [GraphQL API] Added the following types to the GraphQL schema:
AuthenticationMode
,SetCustomerAuthenticationMode
. - [GraphQL API] Changed the
Customer
type:Customer.password
field type changed fromString!
toString
- Added the
authenticationMode
field to theCustomer
type.
- [GraphQL API] Changed the
CustomerSignUpDraft
type:CustomerSignUpDraft.password
input field type changed fromString!
toString
- Input field
authenticationMode
was added toCustomerSignUpDraft
type
- [GraphQL API] Changed the
CustomerUpdateAction
type:- Input field
setAuthenticationMode
was added toCustomerUpdateAction
type
- Input field
- [GraphQL API] Changed the
CustomerSignMeUpDraft
type:CustomerSignMeUpDraft.password
input field type changed fromString!
toString
Added the 'key' field to InventoryEntry
InventoryEntry now supports the key
field. You can now retrieve, update, and delete InventoryEntry by user-defined key
.
Changes:
- [API] Added
key
field to InventoryEntry and InventoryEntryDraft. - [API] Added Get, Update, and Delete by Key methods to InventoryEntry.
- [API] Added Set Key update action to InventoryEntry.
- [GraphQL API] Changed the
Query
type:Query.inventoryEntry(id)
type changed fromString!
toString
Query.inventoryEntry(id)
description is changed- Argument
key
was added toQuery.inventoryEntry
field
- [GraphQL API] Changed the
Mutation
type:Mutation.updateInventoryEntry(id)
type changed fromString!
toString
Mutation.updateInventoryEntry(id)
description is changed- Argument
key
was added toMutation.updateInventoryEntry
field Mutation.deleteInventoryEntry(id)
type changed fromString!
toString
Mutation.deleteInventoryEntry(id)
description is changed- Argument
key
was added toMutation.deleteInventoryEntry
field
Added 'messagePayloads' field to the 'PreviewSuccess' GraphQL type
The messagePayloads
field has been added to the PreviewSuccess
OrderEdit result in our GraphQL API.
Changes:
- [GraphQL API] Added the following types to the GraphQL schema:
OrderMessagePayload
. - [GraphQL API] Changed the
OrderCustomLineItemQuantityChanged
type:OrderCustomLineItemQuantityChanged
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderShippingRateInputSet
type:OrderShippingRateInputSet
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderCustomLineItemRemoved
type:OrderCustomLineItemRemoved
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderBillingAddressSet
type:OrderBillingAddressSet
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
ParcelItemsUpdated
type:ParcelItemsUpdated
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderEditApplied
type:OrderEditApplied
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
DeliveryAdded
type:DeliveryAdded
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
PreviewSuccess
type:- Added the
messagePayloads
field to thePreviewSuccess
type.
- Added the
- [GraphQL API] Changed the
OrderPaymentStateChanged
type:OrderPaymentStateChanged
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
ReturnInfoSet
type:ReturnInfoSet
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderCustomerSet
type:OrderCustomerSet
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderDiscountCodeStateSet
type:OrderDiscountCodeStateSet
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderCustomerGroupSet
type:OrderCustomerGroupSet
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderLineItemDiscountSet
type:OrderLineItemDiscountSet
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderStateChanged
type:OrderStateChanged
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderLineItemAdded
type:OrderLineItemAdded
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderImported
type:OrderImported
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderCustomerEmailSet
type:OrderCustomerEmailSet
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderCustomLineItemDiscountSet
type:OrderCustomLineItemDiscountSet
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderDiscountCodeAdded
type:OrderDiscountCodeAdded
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
CustomLineItemStateTransition
type:CustomLineItemStateTransition
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderPaymentRemoved
type:OrderPaymentRemoved
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
ParcelTrackingDataUpdated
type:ParcelTrackingDataUpdated
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderDiscountCodeRemoved
type:OrderDiscountCodeRemoved
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
DeliveryRemoved
type:DeliveryRemoved
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderCreated
type:OrderCreated
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderLineItemRemoved
type:OrderLineItemRemoved
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
ParcelRemovedFromDelivery
type:ParcelRemovedFromDelivery
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderDeleted
type:OrderDeleted
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderStoreSet
type:OrderStoreSet
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
DeliveryItemsUpdated
type:DeliveryItemsUpdated
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
ReturnInfoAdded
type:ReturnInfoAdded
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderReturnShipmentStateChanged
type:OrderReturnShipmentStateChanged
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
ParcelMeasurementsUpdated
type:ParcelMeasurementsUpdated
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderStateTransition
type:OrderStateTransition
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
LineItemStateTransition
type:LineItemStateTransition
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderLineItemDistributionChannelSet
type:OrderLineItemDistributionChannelSet
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
ParcelAddedToDelivery
type:ParcelAddedToDelivery
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
DeliveryAddressSet
type:DeliveryAddressSet
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderCustomLineItemAdded
type:OrderCustomLineItemAdded
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderShipmentStateChanged
type:OrderShipmentStateChanged
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderShippingInfoSet
type:OrderShippingInfoSet
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderShippingAddressSet
type:OrderShippingAddressSet
object type now implementsOrderMessagePayload
interface
- [GraphQL API] Changed the
OrderPaymentAdded
type:OrderPaymentAdded
object type now implementsOrderMessagePayload
interface
Supported GraphQL schema
Please find officially released features for our GraphQL API in the schema file publicly available on Github.
Only the features listed in that schema file are fully covered by our SLAs. Any additional features you might discover through introspection are intended for selected customers taking part in closed beta programs. Since such closed beta features can change, we strongly advise against using those in productive environments.
If you are interested in evaluating a closed beta feature and you would like to provide us with feedback about it, please reach out to your contact person at commercetools.
Added sorting capability when retrieving Shipping Methods for a Location
You can now sort the query results, for example by ShippingRate price
, when retrieving the Shipping Methods for a Location. Before, you had to implement this logic in the store front application.
- [API] Added
sort
query parameter to Get ShippingMethods for a Location endpoint.
Product Selections can now be extended with Custom Fields
You can now extend the ProductSelection resource with Custom Fields. With this, you can add meta-information to your Product Selection in case it is required for your business logic.
Changes:
- [API] Added optional
custom
field to ProductSelection and ProductSelectionDraft. - [API] Added Set Custom Type and Set CustomField update actions to Product Selections.
- [GraphQL API] Added the following types to the GraphQL schema:
SetProductSelectionCustomField
,SetProductSelectionCustomType
. - [GraphQL API] Changed the
ProductSelection
type:- Added the
custom
field to theProductSelection
type.
- Added the
- [GraphQL API] Changed the
ProductSelectionCreatedPayload
type:- Added the
custom
field to theProductSelectionCreatedPayload
type.
- Added the
- [GraphQL API] Changed the
IndividualProductSelectionCreatedPayload
type:- Added the
custom
field to theIndividualProductSelectionCreatedPayload
type.
- Added the
- [GraphQL API] Changed the
ProductSelectionUpdateAction
type:- Input field
setCustomField
was added toProductSelectionUpdateAction
type - Input field
setCustomType
was added toProductSelectionUpdateAction
type
- Input field
- [GraphQL API] Changed the
CreateProductSelectionDraft
type:- Input field
custom
was added toCreateProductSelectionDraft
type
- Input field
Expiration times on access and refresh tokens can now be configured.
The expiration time for access and refresh tokens can now be configured per API Client by using the new accessTokenValiditySeconds
and refreshTokenValiditySeconds
fields. If specified, each access and refresh token created by the API Client will expire within the specified number of seconds. If not specified, the tokens will expire as per the default configuration.
Changes:
- [API] Added
accessTokenValiditySeconds
field to API Client and APIClientDraft. - [API] Added
refreshTokenValiditySeconds
field to API Client and APIClientDraft. - [GraphQL API] Changed the
APIClientWithoutSecret
type:- Added the
refreshTokenValiditySeconds
field to theAPIClientWithoutSecret
type. - Added the
accessTokenValiditySeconds
field to theAPIClientWithoutSecret
type.
- Added the
- [GraphQL API] Changed the
APIClientWithSecret
type:- Added the
accessTokenValiditySeconds
field to theAPIClientWithSecret
type. - Added the
refreshTokenValiditySeconds
field to theAPIClientWithSecret
type.
- Added the
- [GraphQL API] Changed the
CreateApiClient
type:- Input field
refreshTokenValiditySeconds
was added toCreateApiClient
type - Input field
accessTokenValiditySeconds
was added toCreateApiClient
type
- Input field
Added field to Cart representing the total quantity of all Line Items
We added the totalLineItemQuantity
field to Cart that represents the sum of all Line Item quantities. Its value does not take the Cart's Custom Line Items into consideration. With this, there is no need for you any more to calculate this value on the client side.
Changes:
- [API] Added
totalLineItemQuantity
field to Cart. - [GraphQL API] Changed the
Cart
type:- Added the
totalLineItemQuantity
field to theCart
type.
- Added the
Added OrderPaymentAdded Message
Add OrderPayment update action performed on Orders or OrderEdits now triggers Messages . To subscribe to Messages, see Subscriptions for Messages and Notifications.
Change:
- [API] Added OrderPaymentAdded Message.
Increased the limit of Customers in a Project to 10,000,000.
The default limit of Customers you can have in a Project has been increased from 1 million to 10 million. This limit can be increased per Project after we reviewed the performance impact. Find more details in the documentation.
Introduced Product Selections in Beta
Product Selections let you model the availability of your products in different sales channels. Depending on your use case and by leveraging the existing Stores functionality you can create individual catalogs or assortments for your brand sites, regional shops or brick-and-mortar stores.
Currently, the feature allows you to create Product Selections, populate them with Products, add them to any of your Stores and activate them independently for each Store. We also introduced a new endpoint that returns a Product Projection available in a given Store's active Product Selections.
Please note that the focus of this first release lies in scenarios where assortment management happens in a commercetools-external product information management (PIM) system and a commercetools-external search provider is used for product discovery in the shop frontend. As a consequence, you currently can’t filter your search results by Product Selections or Stores in both, Product Projections and the Merchant Center Product list. We plan to close these gaps progressively and add more functionality to Product Selections during the public beta phase.
Read more on Product Selections and how to use them in the API reference.
Read more on how to integrate with an external search service providing product discovery for your Store-specific shop frontends in this guide.
Furthermore, you can now subscribe to Messages triggered when Product Selections are created, deleted, or updated or when the Store's Product Selections have changed.
Changes:
- [API] Added the
view_product_selections
andmanage_product_selections
OAuth scopes. - [API] Added ProductSelections.
- [API] Added query on Product Selections for a Product.
- [API] Added Get ProductProjection in Store by ID or by Key.
- [API] Added ProductSelectionCreated and ProductSelectionDeleted Message.
- [API] Added ProductSelectionProductAdded and ProductSelectionProductRemoved Message.
- [API] Added StoreProductSelectionsChanged Message.
- [GraphQL API] Added the following types to the GraphQL schema:
AddProductSelectionProduct
,AddStoreProductSelection
,ChangeProductSelectionName
,ChangeStoreProductSelectionActive
,CreateProductSelectionDraft
,IndividualProductSelectionCreatedPayload
,ProductAssignment
,ProductAssignmentQueryResult
,ProductOfSelection
,ProductOfSelectionQueryResult
,ProductSelection
,ProductSelectionCreated
,ProductSelectionCreatedPayload
,ProductSelectionDeleted
,ProductSelectionProductAdded
,ProductSelectionProductRemoved
,ProductSelectionQueryInterface
,ProductSelectionQueryResult
,ProductSelectionSetting
,ProductSelectionSettingDraft
,ProductSelectionSettingInActionInput
,ProductSelectionUpdateAction
,RemoveProductSelectionProduct
,RemoveStoreProductSelection
,SelectionOfProduct
,SelectionOfProductQueryResult
,SetProductSelectionKey
,SetStoreProductSelections
,StoreProductSelectionsChanged
. - [GraphQL API] Changed the
CreateStore
type:- Input field
productSelections
was added toCreateStore
type
- Input field
- [GraphQL API] Changed the
Query
type:- Added the
productSelections
field to theQuery
type. Query.inStores
description is changedQuery
object type now implementsProductSelectionQueryInterface
interface- Added the
productSelectionAssignments
field to theQuery
type. - Added the
productSelection
field to theQuery
type. Query.inStore
description is changed
- Added the
- [GraphQL API] Changed the
Mutation
type:- Added the
updateProductSelection
field to theMutation
type. - Added the
deleteProductSelection
field to theMutation
type. - Added the
createProductSelection
field to theMutation
type.
- Added the
- [GraphQL API] Changed the
Product
type:- Added the
productSelectionRefs
field to theProduct
type.
- Added the
- [GraphQL API] Changed the
StoreCreated
type:- Added the
productSelections
field to theStoreCreated
type. - Added the
productSelectionsRef
field to theStoreCreated
type.
- Added the
- [GraphQL API] Changed the
Store
type:- Added the
productSelections
field to theStore
type.
- Added the
- [GraphQL API] Changed the
StoreUpdateAction
type:- Input field
changeProductSelectionActive
was added toStoreUpdateAction
type - Input field
setProductSelections
was added toStoreUpdateAction
type - Input field
addProductSelection
was added toStoreUpdateAction
type - Input field
removeProductSelection
was added toStoreUpdateAction
type
- Input field
- [GraphQL API] Changed the
InStore
type:- Added the
product
field to theInStore
type. - Added the
productSelectionAssignments
field to theInStore
type.
- Added the
Return Items can now be extended with Custom Fields.
You can now extend the LineItemReturnItem as well as the CustomLineItemReturnItem object on the Order resource with Custom Fields. With these you can, for example, add the courier name or their shipment IDs to the return items of the Orders.
Changes:
- [API] Added
custom
field to LineItemReturnItem and CustomLineItemReturnItem. - [API] Added
custom
field to ReturnItemDraft. - [API] Added Set ReturnItem Custom Type and Set ReturnItem CustomField update actions to Orders and Order Edits.
- [GraphQL API] Added the following types to the GraphQL schema:
SetOrderReturnItemCustomField
,SetOrderReturnItemCustomType
SetStagedOrderReturnItemCustomField
,SetStagedOrderReturnItemCustomFieldOutput
,SetStagedOrderReturnItemCustomType
,SetStagedOrderReturnItemCustomTypeOutput
. - [GraphQL API] Changed the
CustomLineItemReturnItem
type:- Added the
custom
field to theCustomLineItemReturnItem
type.
- Added the
- [GraphQL API] Changed the
ReturnItem
type:- Added the
custom
field to theReturnItem
type.
- Added the
- [GraphQL API] Changed the
StagedOrderUpdateAction
type:- Input field
setReturnItemCustomField
was added toStagedOrderUpdateAction
type - Input field
setReturnItemCustomType
was added toStagedOrderUpdateAction
type
- Input field
- [GraphQL API] Changed the
ReturnItemDraftType
type:- Input field
custom
was added toReturnItemDraftType
type
- Input field
- [GraphQL API] Changed the
ReturnItemDraftTypeOutput
type:- Added the
custom
field to theReturnItemDraftTypeOutput
type.
- Added the
- [GraphQL API] Changed the
OrderUpdateAction
type:- Input field
setReturnItemCustomField
was added toOrderUpdateAction
type - Input field
setReturnItemCustomType
was added toOrderUpdateAction
type
- Input field
- [GraphQL API] Changed the
LineItemReturnItem
type:- Added the
custom
field to theLineItemReturnItem
type.
- Added the
Parcels can now be extended with Custom Fields.
You can now extend the Parcel object on the Order resource with Custom Fields. With these you can, for example, add meta data associated with your ERP system to the deliveries of the Orders.
Changes:
- [API] Added
custom
field to Parcel and ParcelDraft. - [API] Added Set Parcel Custom Type and Set Parcel CustomField update actions to Orders and Order Edits.
- [GraphQL API] Added the following types to the GraphQL schema:
SetOrderParcelCustomField
,SetOrderParcelCustomType
,SetStagedOrderParcelCustomField
,SetStagedOrderParcelCustomFieldOutput
,SetStagedOrderParcelCustomType
,SetStagedOrderParcelCustomTypeOutput
. - [GraphQL API] Changed the
Parcel
type:- Added the
custom
field to theParcel
type.
- Added the
- [GraphQL API] Changed the
ParcelDataDraftType
type:- Input field
custom
was added toParcelDataDraftType
type
- Input field
- [GraphQL API] Changed the
StagedOrderUpdateAction
type:- Input field
setParcelCustomField
was added toStagedOrderUpdateAction
type - Input field
setParcelCustomType
was added toStagedOrderUpdateAction
type
- Input field
- [GraphQL API] Changed the
AddOrderParcelToDelivery
type:- Input field
custom
was added toAddOrderParcelToDelivery
type
- Input field
- [GraphQL API] Changed the
AddStagedOrderParcelToDeliveryOutput
type:- Added the
custom
field to theAddStagedOrderParcelToDeliveryOutput
type.
- Added the
- [GraphQL API] Changed the
ParcelData
type:- Added the
custom
field to theParcelData
type.
- Added the
- [GraphQL API] Changed the
AddStagedOrderParcelToDelivery
type:- Input field
custom
was added toAddStagedOrderParcelToDelivery
type
- Input field
- [GraphQL API] Changed the
OrderUpdateAction
type:- Input field
setParcelCustomField
was added toOrderUpdateAction
type - Input field
setParcelCustomType
was added toOrderUpdateAction
type
- Input field
Added key to ProductProjection GraphQL type
Added key
field to the ProductProjection GraphQL type.
Change:
- [GraphQL API] Changed the
ProductProjection
type:- Added the
key
field to theProductProjection
type.
- Added the
Added token revocation endpoint
You can now revoke your API access and refresh tokens compliant to Auth 2.0 Token Revocation.
Revoking tokens prevents the abuse of abandoned tokens and contributes to the security of your applications. You might want to revoke the tokens associated with the Customer, for example, when the Customer logs out, changes identity or uninstalls your application.
For more information, see Revoking tokens.
Introduced Order Search
With the new Order Search, merchants are able to perform faster search for their orders with enhanced performance, increased query capabilities, and in a scalable way as it supports Projects with a large number of Orders. The feature needs to be activated for the Project before it can be used.
The Order Search API is utilized by our Merchant Center, but you are also welcome to build your own applications with this API. This feature is meant to support back office use cases. It is not intended for searching through the customer's order history in a storefront application.
Changes:
- [API] Introduced Order Search API in public beta.
- [API] Added
orders
field to Search Indexing Configuration on Projects. - [API] Added Change Order Search Status update action on Projects.
Added Price selection to Product Projection Search on GraphQL API
The Product Projection Search feature on the GraphQL API now supports price selection.
Changes:
- [GraphQL API] Added the following types to the GraphQL schema:
ScopedPrice
. - [GraphQL API] Changed the
ProductSearchVariant
type:- Added the
scopedPrice
field to theProductSearchVariant
type. - Added the
scopedPriceDiscounted
field to theProductSearchVariant
type.
- Added the
- [GraphQL API] Changed the
PriceSelectorInput
type:PriceSelectorInput.date
input field type changed fromDateTime!
toDateTime
Core part of the Import API achieves general availability status.
The following features of the Import API achieved the general availability status.
- Import Container
- All Processing States -
processing
,validationFailed
,rejected
,unresolved
,waitForMasterVariant
,imported
- Import Operations
- Import Summaries
Please note that all Import Request endpoints such as Products, Prices, and Categories remain in public beta until further announcement. To learn more about the Import API, please see Best practices as well as the documentation.
Deliveries can now be extended with Custom Fields
You can now extend the Delivery object on the Order resource with Custom Fields. With these you can, for example, add meta data associated with your ERP system to the deliveries of the Orders.
Changes:
- [API] Added
custom
field to Delivery. - [API] Added update actions Set Delivery Custom Type and Set Delivery CustomField to the Order.
- [GraphQL API] Added the following types to the GraphQL schema:
SetOrderDeliveryCustomField
,SetOrderDeliveryCustomType
,SetStagedOrderDeliveryCustomField
,SetStagedOrderDeliveryCustomFieldOutput
,SetStagedOrderDeliveryCustomType
,SetStagedOrderDeliveryCustomTypeOutput
. - [GraphQL API] Changed the
AddOrderDelivery
type:- Input field
custom
was added toAddOrderDelivery
type
- Input field
- [GraphQL API] Changed the
Delivery
type:- Added the
custom
field to theDelivery
type.
- Added the
- [GraphQL API] Changed the
AddStagedOrderDelivery
type:- Input field
custom
was added toAddStagedOrderDelivery
type
- Input field
- [GraphQL API] Changed the
StagedOrderUpdateAction
type:- Input field
setDeliveryCustomField
was added toStagedOrderUpdateAction
type - Input field
setDeliveryCustomType
was added toStagedOrderUpdateAction
type
- Input field
- [GraphQL API] Changed the
AddStagedOrderDeliveryOutput
type:- Added the
custom
field to theAddStagedOrderDeliveryOutput
type.
- Added the
- [GraphQL API] Changed the
OrderUpdateAction
type:- Input field
setDeliveryCustomType
was added toOrderUpdateAction
type - Input field
setDeliveryCustomField
was added toOrderUpdateAction
type
- Input field
Added Product key to Line Item
Previously, the Line Items in Carts and Orders contained the Product ID only, to refer to the related Product. From now on, the Line Items have the user-defined Product key also, in case it exists for the related Product. The new field is present on Carts that were created or updated after 2 December 2021 and on Orders created after this date.
Changes:
- [API] Added
productKey
field to LineItem. - [GraphQL API] Changed the
LineItem
type:- Added the
productKey
field to theLineItem
type.
- Added the
Payment transactions can now be extended with Custom Fields
You can now extend the Transaction object on the Payment resource with Custom Fields. With this, you can now store additional information, like refund details and taxed amounts, on the specific payment transaction.
Changes:
- [API] Added
custom
field to Transaction, TransactionDraft, and MyTransactionDraft . - [API] Added update actions Set Transaction Custom Type and Set Transaction CustomField to Payments.
- [API] Added Set Transaction CustomField update action to My Payments.
- [GraphQL API] Added the following types to the GraphQL schema:
SetPaymentTransactionCustomField
,SetPaymentTransactionCustomType
. - [GraphQL API] Changed the
Transaction
type:- Added the
custom
field to theTransaction
type.
- Added the
- [GraphQL API] Changed the
MyTransactionDraft
type:- Input field
custom
was added toMyTransactionDraft
type
- Input field
- [GraphQL API] Changed the
TransactionDraft
type:- Input field
custom
was added toTransactionDraft
type
- Input field
- [GraphQL API] Changed the
PaymentUpdateAction
type:- Input field
setTransactionCustomType
was added toPaymentUpdateAction
type - Input field
setTransactionCustomField
was added toPaymentUpdateAction
type
- Input field
Added update action for the supply channel of Line Items in a Cart
You can now update the inventory supply channel for Line Items that are already in a Cart. Before, you could only achieve this via replacing the existing Line Item with a new one.
Changes:
- [API] Added Set LineItem SupplyChannel to Carts and My Carts.
- [GraphQL API] Added the following types to the GraphQL schema:
SetCartLineItemSupplyChannel
. - [GraphQL API] Changed the
CartUpdateAction
type:- Input field
setLineItemSupplyChannel
was added toCartUpdateAction
type
- Input field
- [GraphQL API] Changed the
MyCartUpdateAction
type:- Input field
setLineItemSupplyChannel
was added toMyCartUpdateAction
type
- Input field
Increased maximum timeout for payment-related API Extensions
We have increased the maximum timeout for API Extensions of resource type payment
from 2 to 10 seconds what makes your integrations with payment service providers (PSPs) more reliable. You can set this timeout on the ExtensionDraft upon creation of the Extension or via Set TimeoutInMs update action (setTimeoutInMs
mutation in the GraphQL API).
Added AWS EventBridge as supported Subscription destination
AWS EventBridge is now supported as a Subscription destination. Configuring EventBridge as a destination allows your serverless event bus to receive message from commercetools Composable Commerce and forward them to a variety of targets based on forwarding rules. Please find more information in our tutorial.
- [API] Added EventBridge destination.
- [GraphQL API] Added the following types to the GraphQL schema:
EventBridgeDestination
,EventBridgeDestinationInput
,SetCartLineItemSupplyChannel
. - [GraphQL API] Changed the
SearchIndexingConfiguration
type:- Added the
categoriesDisabledForInternalTest
field to theSearchIndexingConfiguration
type.
- Added the
- [GraphQL API] Changed the
CartUpdateAction
type:- Input field
setLineItemSupplyChannel
was added toCartUpdateAction
type
- Input field
- [GraphQL API] Changed the
MyCartUpdateAction
type:- Input field
setLineItemSupplyChannel
was added toMyCartUpdateAction
type
- Input field
- [GraphQL API] Changed the
SetStagedOrderReturnInfo
type:SetStagedOrderReturnInfo.items
default value changed from none to[]
- [GraphQL API] Changed the
DestinationInput
type:- Input field
EventBridge
was added toDestinationInput
type
- Input field
- [GraphQL API] Changed the
ProductProjection
type:- Removed the
key
field from theProductProjection
type.
- Removed the
- [GraphQL API] Changed the
SetOrderReturnInfo
type:SetOrderReturnInfo.items
default value changed from none to[]
Error status code 400 for POST request
As announced on 5 November 2021, we introduced a HTTP status code 400 for errors in all Import API POST endpoints.
Added Product key to GraphQL API's Product Projection Search
You can now add the Product key
to the results of Product Projection Search queries in the GraphQL API.
Changes:
- [GraphQL API] Added
key
field to theProductProjection
type.
Audit Log now tracks Custom Object Changes
We have extended the abilities of Audit Log to include the tracking of changes made against Custom Objects. This enhancement will start tracking new Custom Object Changes made and these Changes will be automatically added into your Audit Log responses.
Changes:
- [API] Added the
view_key_value_documents:{projectKey}
scope. - [API] Added
key-value-document
to ChangeHistoryResourceType. - [API] Added AddPropertyChange.
- [API] Added RemovePropertyChange.
- [API] Added SetPropertyChange.
- [API] Added SetValueChange.
- [API] Added CustomObjectLabel.
- [GraphQL API] Added the following types to the graphQL schema:
CustomObjectLabel
,CustomObjectChangeInput
. - [GraphQL API] Added queries
customObject
andcustomObjects
. - [GraphQL API] Added
CustomObject
to the ResourceType enum.
Added supplyChannel field to InventoryEntryQuantitySet Message
We added the field 'supplyChannel' to the InventoryEntryQuantitySet Message on the HTTP API and 'supplyChannel' and 'supplyChannelRef' fields to the GraphQL API. With these fields, you can check the Channel where changes took place.
Changes:
- [API] Added the
supplyChannel
field to InventoryEntryQuantitySet Message. - [GraphQL API] Changed the
InventoryEntryQuantitySet
type:- Added the
supplyChannelRef
field to theInventoryEntryQuantitySet
type. - Added the
supplyChannel
field to theInventoryEntryQuantitySet
type.
- Added the
Added CustomerFirstNameSet, CustomerLastNameSet, and CustomerTitleSet Messages
With the addition of three new Messages you can now use the MessageSubscription to subscribe to changes on the firstName
, lastName
, and title
fields on Customers specifically. Before, you had to use the generic ChangeSubscription for that.
These Messages are triggered by Set First Name, Set Last Name, and Set Title update actions.
Changes:
- [API] Added CustomerFirstNameSet Message.
- [API] Added CustomerLastNameSet Message.
- [API] Added CustomerTitleSet Message.
- [GraphQL API] Added the following types to the GraphQL schema:
CustomerFirstNameSet
,CustomerLastNameSet
,CustomerTitleSet
.