Catalog product sub-handlers
Handlers for product cross-sells, availability, and pricing that support the main product API.
GET Cross-Sell Collection
HTTP Verb – N/A (internal service, called as part of product retrieval)
Description – Get cross-sell products for a product or website
Base – HandlerBase\<GetCrossSellCollectionParameter, GetCrossSellCollectionResult\>
Handlers –
| Order | Handler | Description |
|---|---|---|
| 500 | ValidateContext | Retrieves product settings. Returns error if settings retrieval fails. Returns Forbidden if the user cannot see products. |
| 600 | GetWebsiteCrossSellQuery | If WebCrossSell parameter is true, retrieves active website-level cross-sell products for the current website. Enables brand settings in the per-request cache. |
| 700 | GetProductCrossSellQuery | If WebCrossSell parameter is false, validates the product exists (returns NotFound if not). Retrieves active cross-sell products for the specified ProductId. |
| 800 | CreateCrossSellProductDtos | Gets product settings. If the OverrideProductV1 performance setting is enabled, retrieves cross-sell products via GetProductCollection. Otherwise, executes the cross-sell query and creates ProductDto objects for each cross-sell product using the catalog pipeline. |
| 900 | CopyCustomPropertiesToResult | If OverrideProductV1 is enabled, bypasses handler. Retrieves viewable custom properties for the Product entity definition and loads custom property values for the cross-sell products. Copies custom properties to each ProductDto. |
GET Product Availability
HTTP Verb – N/A (internal service, called as part of product retrieval)
Description – Get product availability/inventory information
Base – HandlerBase\<GetProductAvailabilityParameter, GetProductAvailabilityResult\>
Handlers –
| Order | Handler | Description |
|---|---|---|
| 500 | GetQtyOnHand | Retrieves the Product entity by Id. Returns NotFound if not found. Calls the inventory pipeline to get quantity on hand, respecting warehouse pickup settings (uses pickup warehouse when fulfillment method is PickUp). Handles configured product inventory with configuration options. |
| 600 | GetProductSettings | Retrieves product settings via the ProductService. Returns error if settings retrieval fails. Sets the settings on the result for use by subsequent handlers. |
| 700 | GetAvailability | Calls the catalog pipeline's PopulateAvailabilities to compute product availability based on the quantity on hand, product settings, and current site context. Sets the availability DTO on the result. |
GET Product Price Collection
HTTP Verb – N/A (internal service, called as part of product retrieval)
Description – Get pricing for one or more products
Base – HandlerBase\<GetProductPriceCollectionParameter, GetProductPriceCollectionResult\>
Handlers –
| Order | Handler | Description |
|---|---|---|
| 500 | ValidateContext | Retrieves product settings. Returns Forbidden if the user cannot see products or prices. For each product in the request, validates the product exists and checks via the catalog pipeline whether the price can be shown. Returns Forbidden if price display is not allowed. |
| 600 | CreatePricingServiceParameters | For each product, creates PricingServiceParameter objects with the product, unit of measure, quantity ordered, and configuration data set (for configured products). |
| 700 | GetProductPricing | Calls the pricing pipeline's GetProductPricing with the prepared pricing service parameters. Returns error if the pricing call fails. |
| 800 | CreateProductPriceDtos | For each product, creates a ProductPriceDto. If the product requires a quote, returns an empty price DTO with only the ProductId. Otherwise, returns the full pricing information from the pricing pipeline result. |
Updated about 19 hours ago
