For the complete documentation index, see llms.txt. This page is also available as Markdown.

2026

new feature

Indexing Service - mixin path allowlist for BatteryIncluded

Overview

The IndexConfiguration object has been extended with a new optional includedMixinPaths property for the BATTERY_INCLUDED provider. It is a glob-based allowlist of product mixin paths (matched against full dot-notation paths rooted at the mixin key), where * matches within a single path segment and ** matches across one or more segments. When includedMixinPaths is non-empty, only matching mixin paths are indexed, and it must not be combined with excludedMixinKeys. Malformed glob patterns are rejected with a validation error.

Updated endpoints

Endpoint
Description

Property includedMixinPaths can be provided for the BATTERY_INCLUDED provider.

Property includedMixinPaths is returned.

Property includedMixinPaths is returned.

Property includedMixinPaths can be updated.

Known problems

There are no known problems.

new feature

Schema Service - bulk patching of custom instances

Overview

The Schema Service now supports partially updating multiple custom instances in a single request. Each item provides the custom instance id and a list of patch operations to apply. The maximum batch size is 200, and each item returns its own result status.

New endpoints

Endpoint
Description

Partially updates up to 200 custom instances in one request by applying patch operations to each item.

Known problems

There are no known problems.

new feature

Quote Service - customerReference and customerComment properties

Overview

The Quote object has been extended with two new properties that allow customers to provide additional information on their quotes:

  • customerReference - A customer-provided reference stored on the quote (e.g., a purchase order number like "PO-12345")

  • customerComment - A customer-provided comment stored on the quote (e.g., "Please deliver before Friday")

These properties can be set when creating a quote, creating a quote from a cart, or when updating a quote.

Updated endpoints

Endpoint
Description

Creating a quote

Properties customerReference and customerComment can be provided.

Properties customerReference and customerComment can be provided.

Retrieving quotes

Properties customerReference and customerComment are returned.

Retrieving a single quote

Properties customerReference and customerComment are returned.

Properties customerReference and customerComment can be updated. Customers can update these on own quotes.

Known problems

There are no known problems.

new feature

AI Service - streaming chat responses

Overview

AI Service now supports streaming LLM responses for endpoint-triggered agents through a new Server-Sent Events endpoint. This lets clients receive incremental output over text/event-stream.

New endpoints

Endpoint
Description

Adds POST /ai-service/{tenant}/agentic/chat-stream for streaming chat responses over text/event-stream.

Known problems

There are no known problems.

improvement

Schema and IAM Services - digits now supported in custom entity and scope IDs

Overview

Custom entity IDs in the Schema Service and scope IDs in the IAM Service now accept digits alongside letters and other allowed characters, giving more flexibility when naming custom types and scopes.

Updated endpoints

Endpoint
Description

The id field now accepts digits.

The id field now accepts digits.

Upserting a custom scope

The scopeId path parameter now accepts digits.

Known problems

There are no known problems.

improvement

AI Service - introduction of 'outputFormat' field

Overview

The AI Service API now accepts a JSON Schema (as a JSON string) in the outputFormat field to constrain the structure of the agent response. This enables clients to request predictable, machine-readable output for easier integration with downstream workflows.

Updated endpoints

Endpoint
Description

Retrieving agent by ID

Response now includes the outputFormat field.

Listing agents

Response now includes the outputFormat field.

Searching agents

Response now includes the outputFormat field.

Upserting an agent

Request now includes the outputFormat field.

Request now includes the outputFormat field.

Response now includes the outputFormat field.

Searching agent templates

Response now includes the outputFormat field.

improvement

Country Service - X-Version header no longer required

Overview

The X-Version header is no longer required for Country Service endpoints.

Updated endpoints

Endpoint
Description

Retrieving all countries

The X-Version header is no longer required.

Retrieving a country

The X-Version header is no longer required.

Updating a country

The X-Version header is no longer required.

Get all regions

The X-Version header is no longer required.

Retrieving a region

The X-Version header is no longer required.

Known problems

There are no known problems.

improvement

Media, Schema, and Product Services - mixin support for media assets

Overview

Media assets now support mixins, consistent with other Emporix entities. The Schema Service supports a new MEDIA schema type for defining mixin schemas, but custom attribute values must still be provided in the asset payload through mixins and metadata.mixins when creating or updating assets through the Media Service. Category and Product Service endpoints do not accept media in requests; when media is created and linked to a category or product, the media items in responses include the corresponding mixin values.

Updated endpoints

Endpoint
Description

Creating an asset

Request accepts mixins and metadata.mixins.

Updating an asset

Request accepts mixins and metadata.mixins.

Retrieving all assets

Response includes mixins and metadata.mixins.

Retrieving an asset

Response includes mixins and metadata.mixins.

Creating a schema

MEDIA added to supported schema types.

Updating a schema

MEDIA added to supported schema types.

Response media items include a mixins field.

Response media items include a mixins field.

Retrieving a product

Response media items include a mixins field.

Retrieving all products

Response media items include a mixins field.

Searching for products

Response media items include a mixins field.

Known problems

There are no known problems.

deprecated

AI Rag Indexer Service - deprecated endpoint

Overview

The AI Rag Indexer Service endpoint for reindexing has been marked as deprecated and will be removed on 2026-12-01. Instead, use the Creating reindex job endpoint.

Deprecated endpoints

Endpoint
Description

Use the Creating reindex job endpoint instead.

Known problems

There are no known problems.

deprecated

Indexing Service - deprecated endpoint

Overview

The Indexing Service endpoint for reindexing has been marked as deprecated and will be removed on 2026-12-01. Use the Creating reindex job endpoint instead.

Deprecated endpoints

Endpoint
Description

Reindexing

Use the Creating reindex job endpoint instead.

Known problems

There are no known problems.

new featureimprovement

Indexing Service - Reindex Jobs

Overview

The Indexing Service was extended with new endpoints for creating and fetching reindex jobs. For now, reindexing supports PRODUCT and custom schema entity types.

New endpoints

Endpoint
Description

Creating reindex job

Endpoint for creating reindex job.

Fetching reindex jobs

Endpoint for fetching reindex jobs.

Fetching reindex job

Endpoint for fetching reindex job.

improvement

AI Service - commerce event trigger filter support and job status update

Overview

The AI Service API now supports payload-level filtering for commerce_events agent triggers. You can define filter expressions so an agent is triggered only when an incoming commerce event payload matches the configured criteria. Additionally, jobs now support the skipped status value.

Updated types

Type
Description

AgentTrigger

Added optional filter field for the commerce_events trigger variant.

JobStatus

Added skipped enum value.

Updated endpoints

Endpoint
Description

Retrieving agent by ID

Response can now include trigger.filter for commerce_events triggers.

Listing Agents

Response can now include trigger.filter for commerce_events triggers.

Upserting agent

Request payload now supports trigger.filter for commerce_events triggers.

Partially updating agent

Request payload now supports trigger.filter for commerce_events triggers.

Listing available jobs

Job responses can now return status: skipped.

Searching jobs

Job responses can now return status: skipped.

Retrieving available job

Job response can now return status: skipped.

improvement

Category Service - X-Version header no longer required

Overview

The Category Service no longer requires the X-Version header to be passed in requests. Existing integrations that still send the X-Version header will continue to work without any changes.

Affected endpoints

All Category Service endpoints are affected. The X-Version request header is no longer required and can be safely omitted.

Endpoint
Description

Category Service API

The X-Version request header is no longer required and is ignored when provided.

Known problems

There are no known problems.

improvement

Webhook Events - cartId and quoteId on order.created and order.updated

Overview

The order.created and order.updated webhook event payloads were extended with cartId and quoteId. These fields link an order to its source cart or quote and are populated when the order was created from checkout.

  • cartId — identifier of the cart used to create the order (cart checkout).

  • quoteId — identifier of the quote from which the order was created (quote checkout).

Either field may be omitted when it does not apply to the order.

Updated events

Event
Description

order.created

Event schema extended with optional cartId and quoteId properties.

order.updated

Event schema extended with optional cartId and quoteId properties.

Known problems

There are no known problems.

major change

Overview

The Approval Service now scopes approvals to the B2B legal entity from the customer token. Previously, customers could see approvals created for other companies because the Legal-Entity-Id has not been stored on the Approval model.

New and updated approvals store legalEntity on the document and are filtered by legalEntity.id. GET responses also expose createdResource when a downstream resource (for checkout, typically an order) exists after the approval flow completes.

Behavior change (not backward compatible)

When the Legal-Entity-Id request header is sent (injected for B2B customer tokens — see B2B token and legal entity), the service:

  • Creates approvals for that legal entity only (requestor and approver contact assignments are resolved for the given entity).

  • Returns only approvals whose stored legalEntity.id matches the legal-entity-id from token.

Existing approvals created before this release do not have legalEntity stored. They are not returned when Legal-Entity-Id is present in token, because they cannot match the legal-entity filter. This is intentional and not backward compatible: tenants will not see historical approvals through the scoped B2B API.

Updated endpoints

Endpoint
Description

Creating an approval

Respects Legal-Entity-Id; persists legalEntity on the approval.

Filtered by Legal-Entity-Id when present; response includes legalEntity and optional createdResource.

Retrieving an approval

Filtered by Legal-Entity-Id when present; response includes legalEntity and optional createdResource.

Updating an approval

Filtered by Legal-Entity-Id when present.

Deleting an approval

Filtered by Legal-Entity-Id when present.

Respects Legal-Entity-Id when checking existing approvals.

Respects Legal-Entity-Id for contact assignment and approver resolution.

Schema updates

The getApprovalResponse schema was extended with:

  • legalEntity — object with id (legal entity identifier); set when the approval is created

  • createdResource — object with id (identifier of the created resource; for checkout, typically an order ID); omitted until the approved action produces a linked resource

Known problems

There are no known problems.

new featureimprovement

Emporix SDK - Batch cart item update and removal of X-Version header from category clients

Overview

A new version 1.3.1 of the Emporix SDK has been released with the following changes:

  • support for batch updating cart items via PUT /cart/{tenant}/carts/{cartId}/itemsBatch

  • removal of the X-Version header from Category Service clients (CategoryClient, CategoryAssignmentClient, CategoryTreeClient)

New methods

Method
Description

CartItemsClient.updateMultipleItemsToCart

Updates multiple cart items in a single batch operation (maximum 50 items). Returns HTTP 207 (Multi-Status) with per-item outcomes aligned to request order.

New types

Type
Description

UpdateCartItemsBatchRequest

Batch cart item update request. Each entry must include a cart item id.

UpdateCartItemsBatchEntryResponse

Per-item outcome for a batch update (index, id, code, status, message, details).

Updated types

Type
Description

BatchItemResponse

Added index field matching the position of the item in the request body.

Updated clients

Client
Description

CategoryClient

No longer sends the X-Version header on requests.

CategoryAssignmentClient

No longer sends the X-Version header on requests.

CategoryTreeClient

No longer sends the X-Version header on requests.

Known problems

There are no known problems.

new feature

AI Service - Support for file upload

Overview

The AI Service has been enhanced with a new endpoint that allows you to upload a file and attach it to the agent. Then, when calling chat endpoints it is possible to reference this file.

New endpoints

Endpoint
Description

Uploading attachment

Attaches a file to the agent

Updated endpoints

Endpoint
Description

Starting agent chat

Request body extended with attachments field.

Starting agent async chat

Request body extended with attachments field.

Known problems

There are no known problems.

new feature

AI Service - LLM models from supported providers

Overview

The AI Service has been enhanced with a new endpoint that lists available LLM models from supported LLM providers: OpenAI, Anthropic, and Google.

The service retrieves models directly from each provider's models API.

Each model entry includes an identifier, display name, optional description, and a thinking flag indicating whether the model supports thinking capabilities.

New endpoints

Endpoint
Description

Returns models grouped by provider (openai, anthropic, google). Requires ai.agent_read.

Known problems

There are no known problems.

new feature

Indexing Service - Battery Included provider support

Overview

The Indexing Service now supports Battery Included as a new index provider alongside Algolia. Only one provider can be active per tenant at a time. Battery Included only supports the MERGE site-aware fields strategy; tenants configured with the SPLIT strategy will have Battery Included indexing silently skipped.

This feature is in a preview state and payload sent to battery included is subject to change.

Updated endpoints

Endpoint
Description

Added BATTERY_INCLUDED provider support with new excludedMixinKeys field. Only one provider can be active per tenant at a time.

Response may include Battery Included configurations with excludedMixinKeys.

provider path parameter now accepts BATTERY_INCLUDED.

Updating a configuration

Supports updating Battery Included configurations with excludedMixinKeys.

Response may include Battery Included public configurations.

provider path parameter now accepts BATTERY_INCLUDED.

Known problems

There are no known problems.

deprecated

Availability Service - deprecated endpoints

Overview

The Availability Service endpoints for managing availabilities that accept site as a query parameter, which were marked as deprecated on 2025-01-13, will be removed on 2026-09-01. They have been replaced with new endpoints that accept site as a path parameter. The Availability Service endpoints for managing locations have been marked as deprecated and will be removed on 2026-09-01 due to the planned sunset of the related functionalities.

Deprecated endpoints

Availability endpoints accepting site as query parameter

Endpoint
Description

[GET] /{tenant}/availability/{productId}?site

Deprecated. Use Retrieving a product availability instead.

[POST] /{tenant}/availability/{productId}?site

Deprecated. Use Creating a new availability for a product instead.

[PUT] /{tenant}/availability/{productId}?site

Deprecated. Use Upserting availability information of a product instead.

[DELETE] /{tenant}/availability/{productId}?site

Deprecated. Use Deleting availability information of a product instead.

[GET] /{tenant}/availability?site

Deprecated. Use Retrieving all availability information for a site instead.

[POST] /{tenant}/availability?site

Deprecated. Use Retrieving product availabilities instead.

Deprecated due to planned sunset of related functionalities.

Deprecated due to planned sunset of related functionalities.

Updating locations

Deprecated due to planned sunset of related functionalities.

Deleting a location

Deprecated due to planned sunset of related functionalities.

Deprecated due to planned sunset of related functionalities.

Known problems

There are no known problems.

deprecated

Supplier Service - deprecation

Overview

The Supplier Service has been deprecated and will be removed on 2026-09-01.

Known problems

There are no known problems.

improvement

Schema Service — explicit owner on custom instance creation

Overview

The Schema Service now accepts an optional owner field in the request body when creating a custom instance, so clients can assign ownership explicitly instead of relying on the platform to derive it from the calling principal.

The owner field can be set explicitly only by clients authorized with a manage scope (schema.custominstance_manage or custom.{lowerCaseType}_manage). When the request is authorized with a manage_own scope, the field is ignored and ownership is set automatically to the user who created the custom instance. When a manage scope is granted but the field is omitted, ownership is likewise set automatically to the user who created the custom instance.

The following limitations apply when providing owner:

  • type can only be set to CUSTOMER or EMPLOYEE. The SERVICE type cannot be assigned explicitly.

  • legalEntityId can be provided only when type is CUSTOMER.

  • The owner field is immutable. It can only be set during creation.

Updated endpoints

Endpoint
Description

The request body now accepts an optional owner.

The request body now accepts an optional owner field.

Known problems

There are no known problems.

new feature

AI Service - RAG_EMPORIX support for custom entity types

Overview

The tool of RAG_EMPORIX type allow specifying the custom entity type by using entityType field.

Updated endpoints

Endpoint
Description

Listing tools

Field entityType of RAG_EMPORIX tool type supports custom entity types.

Searching tools

Field entityType of RAG_EMPORIX tool type supports custom entity types.

Retrieving tool by ID

Field entityType of RAG_EMPORIX tool type supports custom entity types.

Upserting tool

Field entityType of RAG_EMPORIX tool type supports custom entity types.

Partially updating tool

Field entityType of RAG_EMPORIX tool type supports custom entity types.

Known problems

There are no known problems.

improvement

Webhook Events - updated schema.custom-instance-updated and schema.custom-instance-created events schema

Overview

The schema.custom-instance-updated and schema.custom-instance-created webhook events documentation has been updated to reflect the current payload structure.

Updated event

Event
Description

schema.custom-instance-updated

Updated event schema by including nested media and owner data.

schema.custom-instance-created

Updated event schema by including nested media and owner data.

Known problems

There are no known problems.

improvement

Approval Service - quote approval process

Overview

The Approval Service supports quote checkout approvals alongside cart approvals. For resourceType: QUOTE, the client sends the quote ID in resourceId and does not send details. The service loads quote line and price data from the quote integration. For resourceType: CART, details remains required as before.

Updated endpoints

Endpoint
Description

Creating an approval

Supports resourceType: QUOTE with quote resourceId.

Response resource payloads align with updated item and price schemas.

Retrieving an approval

Response resource payloads align with updated item and price schemas.

Request may use resourceType: QUOTE and a quote resourceId.

Request may use resourceType: QUOTE and a quote resourceId.

Schema updates

The Approval Service API reference schemas were extended with:

  • resourceType value QUOTE

  • resourceItem: itemId; itemPrice as line-level price (unitPrice, newUnitPrice, calculatedPrice)

  • price (totals): netValue, grossValue, taxValue

Known problems

There are no known problems.

deprecated

Approval Service - deprecated fields

Overview

All deprecations will be removed on 2026-11-30. Several fields in the approval response have been deprecated in favor of new, more descriptive fields. The new fields provide a more comprehensive and consistent way to access price calculations.

Deprecated approval resource level fields:

  • totalPrice.amount - use totalPrice.netValue, totalPrice.grossValue and totalPrice.taxValue instead

  • subTotalPrice.amount - use subTotalPrice.netValue, subTotalPrice.grossValue and subTotalPrice.taxValue instead

Deprecated approval resource-item level fields:

  • itemYrn - use itemId instead

  • itemPrice.amount - use calculatedPrice and unitPrice instead

Updated endpoints

Endpoint
Description

Deprecated response fields in favor of new more comprehensive way to represent prices.

Retrieving an approval

Deprecated response fields in favor of new more comprehensive way to represent prices.

Known problems

There are no known problems.

new feature

AI Rag Indexer - support for custom entity types in /filter-metadata and /rag-metadata endpoints

Overview

The endpoints /filter-metadata and /rag-metadata of AI Rag Indexer have been enhanced to support custom entity types.

Updated endpoints

Endpoint
Description

Support for custom entity types.

Support for custom entity types.

Known problems

There are no known problems.

deprecated

AI Rag Indexer - name and description fields from /filter-metadata endpoint deprecated

Overview

The fields name and description from the response of /filter-metadata endpoint of AI Rag Indexer have been deprecated. These fields were previously used to provide additional information about the filters, but they are no longer necessary for the functionality of the service. They will be removed on 2026-12-01.

Affected endpoint

Endpoint
Description

Fields name and description from the response are marked as deprecated.

Known problems

There are no known problems.

new feature

AI Service - RAG_EMPORIX filter fields

Overview

The tool of RAG_EMPORIX type has been enhanced with a filterFields field, which allows specifying which fields are available for filtering in the vector index.

Updated endpoints

Endpoint
Description

Listing tools

Response enhanced with filterFields field.

Searching tools

Response enhanced with filterFields field.

Retrieving tool by ID

Response enhanced with filterFields field.

Upserting tool

Request body enhanced with filterFields field.

Partially updating tool

Request body enhanced with filterFields field.

Known problems

There are no known problems.

deprecated

SEPA Export Service - deprecation

Overview

The SEPA Export Service has been deprecated and will be removed on 2026-08-24.

Known problems

There are no known problems.

Overview

The SEPA Export Service is now deprecated in its entirety. All endpoints exposed by the service are deprecated and the service is scheduled to be officially removed on 2026-08-24.

Deprecated endpoints

All endpoints under the /sepa-export/{tenant}/ base path are deprecated. For the full list of affected endpoints, refer to the SEPA Export Service API Reference.

Known problems

There are no known problems.

deprecated

Pick-pack Service - service deprecation

Overview

The Pick-pack Service is now deprecated in its entirety. All endpoints exposed by the service are deprecated and the service is scheduled to be officially removed on 2026-08-24.

Deprecated endpoints

All endpoints under the /pick-pack/{tenant} base path are deprecated, including those used to manage pick-pack orders, order cycles, assignees, recalculations, and events. For the full list of affected endpoints, refer to the Pick-pack Service API Reference.

Known problems

There are no known problems.

new feature

Overview

The Price Service search endpoint now supports a new siteCodes field, which allows searching for prices across multiple site codes in a single request. If the existing siteCode field is specified, siteCodes is ignored.

Updated endpoints

Endpoint
Description

Searching for prices

New attribute siteCodes added to request payload. Accepts an array of site codes for which the prices should be retrieved.

Known problems

There are no known problems.

new feature

Emporix SDK - Dynamic variants support and recalculation jobs

Overview

A new version 1.3.0 of the Emporix SDK adds support for DYNAMIC_VARIANT products and introduces a dedicated client for asynchronous dynamic variant recalculation jobs.

Dynamic variants form a flexible hierarchy (up to 4 levels). Each variant stores its own distinguishing attributes (ownVariantAttributes) and a root dynamic variant contains a denormalized variants map of all descendants. For bulk imports, the variant tree can be rebuilt asynchronously using the recalculation job endpoints.

New client

Client
Description

RecalculationJobClient

Declarative HTTP client for Product Service dynamic variant recalculation jobs. Automatically registered as a Spring bean.

New methods

Method
Description

RecalculationJobClient.triggerDynamicVariantRecalculation

Triggers asynchronous recalculation jobs for one or more dynamic variants.

RecalculationJobClient.listDynamicVariantRecalculationJobs

Lists recalculation jobs, optionally filtered by status.

RecalculationJobClient.getDynamicVariantRecalculationJob

Retrieves a single recalculation job by ID.

New types

Dynamic variant recalculation

Type
Description

DynamicVariantRecalculationRequest

Request body for triggering recalculation. Contains up to 1000 productIds.

DynamicVariantRecalculationResponse

Response containing jobs and skippedProductIds.

DynamicVariantRecalculationJobResponse

Represents a single recalculation job (id, root, status, timestamps, error).

DynamicVariantRecalculationJobStatus

Job status enum: PENDING, PROCESSING, FINISHED, FAILED, FAILED_PERMANENT.

Dynamic variant attributes and variant map

Type
Description

DynamicVariantAttribute

Attribute entry with localized name and typed value.

DynamicVariantAttributeValue

Typed value containing type, qualifier, optional unit, and localized display name.

DynamicVariantAttributeType

Attribute value type enum (e.g. STRING, BOOLEAN, NUMBER, DECIMAL).

VariantAttributeQualifier

Qualifier value with custom serializer/deserializer for stable JSON representation.

VariantMapEntry

Entry stored in a root product’s variants map with accumulated attributes for a descendant.

DynamicVariantInfo

Metadata information for dynamic variant trees (for example, missing ancestor, cycle detection).

Requests for DYNAMIC_VARIANT products

Type
Description

DynamicVariantCreateRequest

Create request for DYNAMIC_VARIANT products, including ownVariantAttributes.

DynamicVariantUpdateRequest

Update request for DYNAMIC_VARIANT products, including ownVariantAttributes.

Product presentation - brand & labels

Type
Description

Brand

Brand representation embedded in ProductResponse (resolved when expanded by the API).

Label

Label representation embedded in ProductResponse (resolved when expanded by the API).

Updated types

Type
Change summary

ProductResponse

Added dynamic variant support (dynamicVariantType, parentVariantId, parentVariantPath, sellable, ownVariantAttributes, inheritedVariantAttributes, root variants map) and presentation fields (labelIds, labels, brandId, brand).

ProductMetadataResponse

Added dynamicVariantInfo for dynamic-variant tree diagnostics.

GenericProductCreateRequest

Added dynamic variant fields (productType, parentVariantId, dynamicVariantType, sellable, ownVariantAttributes).

GenericProductUpdateRequest

Added dynamic variant fields (sellable, dynamicVariantType, parentVariantId, ownVariantAttributes).

ProductPartialUpdateRequest

Added dynamic variant fields (dynamicVariantType, sellable, ownVariantAttributes) and additional partial-update fields (labelIds, brandId).

Known problems

Constructor signature changes (compile-time breaking for some usages)

The all-args constructors generated by Lombok changed due to newly added fields in:

  • ProductResponse

  • GenericProductCreateRequest

  • GenericProductUpdateRequest

  • ProductPartialUpdateRequest

If your code instantiates these classes using constructors, you may hit compilation errors after upgrading.

Recommended fix: use the Lombok builder (.builder()...build()) instead of constructors.

Class GenericProductUpdateRequest is now using MetadataRequest instead of VariantProductMetadataRequest for the metadata field.

The following classes were updated to contain productType field that is necessary for upserting and creating products:

  • BundledProductCreateRequest

  • DynamicVariantCreateRequest

  • ParentVariantCreateRequest

  • ProductVariantCreateRequest

  • BundledProductUpdateRequest

  • ParentVariantUpdateRequest

  • ProductVariantUpdateRequest

improvement

IAM Service - access control restrictions, predefined scopes, and deprecations

Overview

The IAM Service has been extended in three main areas, and the legacy roles/permissions/resources object model is being phased out.

Access control assignment restrictions

Access controls now expose a restrictedTo property that limits the type of group an access control can be assigned to:

  • CUSTOMER - the access control can be assigned only to groups of CUSTOMER user type.

  • EMPLOYEE - the access control can be assigned only to groups of EMPLOYEE user type.

If restrictedTo is not present on an access control, it can be assigned to any group regardless of its user type.

Multiple domains per access control

The domain property on access controls has been replaced with domains - a list of domain identifiers.

Predefined scopes

The endpoints for listing and retrieving scopes now also return predefined scopes and scopes responses now include a read-only predefined flag indicating whether a scope is system-defined or user-created. Moreover, predefined scopes can now be referenced when creating or updating access controls.

Deprecation of the roles, permissions, and resources model

The legacy roles, permissions, and resources object model is being phased out. The endpoints that retrieve these objects, as well as the roleId and resourceId properties on access controls and the expand, roleId, and resourceId query parameters that resolved them, are now deprecated. The endpoints for retrieving user access controls and user permissions for a specific resource - which are also tied to the legacy model - are deprecated as well.

Updated endpoints

Endpoint
Description

Property restrictedTo introduced. Property domain replaced with domains. Response properties roleId and resourceId are now deprecated. Query parameters expand, roleId, and resourceId are now deprecated.

Property restrictedTo introduced. Property domain replaced with domains. Response properties roleId and resourceId are now deprecated. Query parameter expand is now deprecated.

Property restrictedTo introduced. Property domain replaced with domains. Predefined scopes can now be used when creating or updating access controls.

Property restrictedTo introduced. Property domain replaced with domains. Response properties roleId and resourceId are now deprecated. Query parameter expand is now deprecated.

Property restrictedTo introduced. Property domain replaced with domains. Response properties roleId and resourceId are now deprecated. Query parameter expand is now deprecated.

Property restrictedTo introduced. Property domain replaced with domains. Response properties roleId and resourceId are now deprecated. Query parameter expand is now deprecated.

Retrieving all scopes

Response now includes the read-only predefined flag. The endpoint now also returns predefined access control scopes in addition to user-created custom scopes.

Retrieving a scope

Response now includes the read-only predefined flag. The endpoint now also returns predefined access control scopes in addition to user-created custom scopes.

Deprecated endpoints

Endpoint
Description

Endpoint deprecated.

Retrieving a permission

Endpoint deprecated.

Retrieving all resources

Endpoint deprecated.

Retrieving a resource

Endpoint deprecated.

Endpoint deprecated.

Retrieving a role

Endpoint deprecated.

Endpoint deprecated.

Endpoint deprecated.

Known problems

There are no known problems.

improvement

Product Service - code on dynamic variant variants map entries

Overview

For DYNAMIC_VARIANT root products, each entry in the denormalized variants map now includes code: the business code of the corresponding variant product (the same value as on the variant product itself). This lets storefronts and integrations read SKU-style identifiers from the root response without an extra lookup.

Webhook event documentation for payloads that include the dynamic variant variants structure has been aligned with this field.

Modified behavior

When you retrieve a dynamic variant root product, every key under variants includes:

  • code — string, code of the source variant product

Existing fields such as version, name, parentVariantId, sellable, dynamicVariantType, and variantAttributes are unchanged.

Known problems

There are no known problems.

improvement

Product Service - expand brand and labels in product responses

Overview

Product responses can now be enriched with expanded brand and label data using the expand query parameter.

Modified behavior

When requesting product data, you can now use:

  • expand=brand to include a brand object expanded from brandId

  • expand=labels to include a labels array expanded from labelIds

  • multiple values can be combined, for example: expand=template,parentVariant,brand,labels

Schema updates

The product response schemas were extended with:

  • brand (expanded object)

  • labels (expanded array)

Known problems

There are no known problems.

improvement

Webhook Events - updated index-item.updated event schema

Overview

The index-item.updated webhook event documentation has been updated to reflect the current payload structure used by staging changes.

Updated event

Event
Description

index-item.updated

Updated event schema for index item update payload, including nested product, variant, site-specific price, and availability data.

Known problems

There are no known problems.

new feature

Cart Service - batch update endpoint for cart items

Overview

The Cart Service API reference now documents a new batch update endpoint for cart items. You can update multiple items in a cart in a single request using PUT /cart/{tenant}/carts/{cartId}/itemsBatch. The response for POST /cart/{tenant}/carts/{cartId}/itemsBatch was extended with the index property in each batch entry.

New endpoints

Endpoint
Description

New endpoint for updating multiple cart items in one request. The number of cart items that can be edited in one request is limited to 50.

Updated endpoints

Endpoint
Description

Response for POST /cart/{tenant}/carts/{cartId}/itemsBatch was extended with the index property for each batch entry.

Known problems

There are no known problems.

new feature

Schema Service - Export and Import functionality for custom schema types

Overview

The Schema Service has been extended with endpoints for exporting and importing custom schema types.

Updated endpoints

Endpoint
Description

Exporting custom entities

New endpoint for exporting custom entities.

Importing custom entities

New endpoint for importing custom entities.

Known problems

There are no known problems.

improvement

Emporix SDK - Availability Service Q-param support, total count header and search improvements

Overview

A new 1.2.5 version of the Emporix SDK has been released with the following changes:

  • support for the X-Total-Count response header on availability search endpoints

  • support for the standard q query parameter on the site-specific availability endpoint

  • support for the q request body attribute on the availability search endpoint

  • support for the standard sort parameter on both availability retrieval and search endpoints

Updated methods

Method
Description

AvailabilityClient.getAvailabilitiesForSite

The response now includes the X-Total-Count header. Added support for the standard q query parameter and sort parameter.

AvailabilityClient.searchAvailability

The response now includes the X-Total-Count header. Added support for the standard q request body attribute as an alternative filtering method and sort parameter.

New types

Type
Description

SearchDto

Request body for the availability search endpoint. Accepts either a set of productIds for filtering by specific products, or a q string for query-based filtering. The two fields are mutually exclusive.

Known problems

There are no known problems.

new feature

Emporix SDK - Multi-tenant support

Overview

A new 1.2.4 version of the Emporix SDK has been released with multi-tenant support.

The SDK now supports running multiple Emporix tenants within a single JVM. This is useful when your application needs to communicate with different Emporix environments (e.g., QA, staging, production) or different tenant accounts simultaneously.

When additional tenants are configured, the SDK automatically creates a full bean stack for each tenant — including EmporixProperties, EmporixClientFactory, EmporixTokenService, and all API clients. These beans are injected using Spring's @Qualifier annotation with the tenant key as the qualifier value.

New features

Feature
Description

Multi-tenant configuration

Define additional tenants under emporix.tenants.<key> in application.yml. Each <key> becomes the @Qualifier value for injection.

Property inheritance

Each tenant inherits shared settings (timeouts, cache) from the default configuration. Only differing properties need to be specified.

Custom credentials per tenant

Custom OAuth2 credentials can be defined per tenant, with fallback to the default custom credentials.

Startup validation

The SDK validates multi-tenant configuration at startup and fails fast with descriptive error messages if rules are violated.

Non-intrusive design

Tenant-specific beans are non-default candidates, so they never interfere with unqualified injection or user-provided @Primary overrides.

new feature

Availability Service - Q-param support, total count header and search improvements

Overview

The Availability Service has been updated with support for the standard Q-param query parameter on the site-specific endpoint, a Q-param request body option for the search endpoint, and X-Total-Count response header on search endpoints.

Updated endpoints

Endpoint
Description

The response now includes the X-Total-Count header. Added support for the standard q query parameter.

The response now includes the X-Total-Count header. Added support for the standard q request body attribute as an alternative filtering method.

Known problems

There are no known problems.

improvement

Product Service – dynamic variant product type and recalculation

Overview

A new product type DYNAMIC_VARIANT has been introduced, enabling flexible multi-level variant hierarchies of up to 4 levels.

Unlike PARENT_VARIANT products, which use a fixed attribute template, DYNAMIC_VARIANT products form a tree where each variant stores its own ownVariantAttributes - these are the attributes that distinguish it from its parent. The root product maintains a denormalized flat map of all descendants in its variants field, with accumulated attributes.

Key features of DYNAMIC_VARIANT products:

  • Variants can be created in any order — a child variant may exist before its parent, simplifying bulk data imports.

  • Each variant stores only delta attributes, which are the attributes introduced at its own level. The accumulated, fully merged, attributes are computed by the API at response time by following the parentVariantId chain.

  • Variant responses expose ownVariantAttributes (modifiable, stored in the database) and inheritedVariantAttributes (read-only, inherited from ancestors).

  • Every variant carries a parentVariantPath array (ancestor IDs, direct-parent-first) enabling efficient tree traversal without database graph lookups.

  • A dynamicVariantType label (for example: H1_L1, H1_L2) identifies the variant's level in the hierarchy.

  • The sellable flag indicates whether a variant can be sold directly.

For single product writes, the variant tree on ancestor products is updated synchronously and inline. For bulk imports, a dedicated asynchronous recalculation mechanism is provided by the new /recalculate endpoints.

See the tutorial section How to work with dynamic variant products.

New endpoints

Endpoint
Description

Accepts up to 1000 product IDs at any hierarchy level and triggers asynchronous recalculation of the variant tree. The system resolves the root for each submitted ID and creates one recalculation job per unique root product. Returns 202 Accepted with the list of created jobs. If a job for a given root is already PENDING or PROCESSING, the affected IDs are returned in skippedProductIds. Intended to be called after a full batch import, not per individual product write.

Retrieves all dynamic variant recalculation jobs for the tenant. Supports optional filtering by job status (PENDING, PROCESSING, FINISHED, FAILED, FAILED_PERMANENT). Jobs are retained for approximately 30 days after reaching a terminal state and then automatically removed.

Retrieves the current status and details of a specific recalculation job by its ID. Use this endpoint to poll for job completion. Returns 404 if the job does not exist or has been removed after 30 days.

Modified endpoints

Endpoint
Description

Creating a new product

Now accepts DYNAMIC_VARIANT as a valid productType. New fields: parentVariantId, dynamicVariantType, sellable, ownVariantAttributes.

Upserting a product

Now accepts DYNAMIC_VARIANT product creation and update payloads.

Now accepts partial updates for DYNAMIC_VARIANT products.

Now accepts DYNAMIC_VARIANT products in bulk creation payloads.

Now accepts DYNAMIC_VARIANT products in bulk upsert payloads.

Retrieving a product

Response now includes DYNAMIC_VARIANT-specific fields: variants (root product, accumulated attributes), ownVariantAttributes, inheritedVariantAttributes, parentVariantId, parentVariantPath, dynamicVariantType, sellable, and extended metadata with hierarchy integrity information.

New schemas

Schema
Description

dynamicVariantProductBase

Base schema for DYNAMIC_VARIANT products. Includes parentVariantId, parentVariantPath, dynamicVariantType, sellable, ownVariantAttributes, and inheritedVariantAttributes.

dynamicVariantProductCreation

Schema for creating DYNAMIC_VARIANT products.

dynamicVariantProductsArray

Schema for arrays of DYNAMIC_VARIANT products (used in bulk endpoints).

dynamicVariantProductUpdate

Schema for updating DYNAMIC_VARIANT products.

dynamicVariantProductBulkUpdate

Schema for bulk-updating DYNAMIC_VARIANT products.

variantAttribute

Structured variant attribute object with localized name, value.type (STRING, BOOLEAN, NUMBER, DECIMAL), value.qualifier (canonical matching value), value.name (localized display label), and optional value.unit (unit code).

dynamicVariantRecalculationRequest

Request body for the recalculation endpoint. Contains a productIds array (up to 1000 IDs).

dynamicVariantRecalculationResponse

Response from the recalculation endpoint. Contains a jobs array and a skippedProductIds array.

dynamicVariantRecalculationJobResponse

Represents a single recalculation job with id, parentRoot, requestedByIds, status, createdAt, processingStartedAt, finishedAt, error, and attempts.

dynamicVariantRecalculationJobStatus

Enum of job statuses: PENDING, PROCESSING, FINISHED, FAILED, FAILED_PERMANENT.

Known problems

There are no known problems.