Dev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubDev CommunityOptimizely AcademySubmit a ticketLog In
Dev Guide

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

BaseHandlerBase\<GetCrossSellCollectionParameter, GetCrossSellCollectionResult\>

Handlers

OrderHandlerDescription
500ValidateContextRetrieves product settings. Returns error if settings retrieval fails. Returns Forbidden if the user cannot see products.
600GetWebsiteCrossSellQueryIf WebCrossSell parameter is true, retrieves active website-level cross-sell products for the current website. Enables brand settings in the per-request cache.
700GetProductCrossSellQueryIf WebCrossSell parameter is false, validates the product exists (returns NotFound if not). Retrieves active cross-sell products for the specified ProductId.
800CreateCrossSellProductDtosGets 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.
900CopyCustomPropertiesToResultIf 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

BaseHandlerBase\<GetProductAvailabilityParameter, GetProductAvailabilityResult\>

Handlers

OrderHandlerDescription
500GetQtyOnHandRetrieves 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.
600GetProductSettingsRetrieves product settings via the ProductService. Returns error if settings retrieval fails. Sets the settings on the result for use by subsequent handlers.
700GetAvailabilityCalls 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

BaseHandlerBase\<GetProductPriceCollectionParameter, GetProductPriceCollectionResult\>

Handlers

OrderHandlerDescription
500ValidateContextRetrieves 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.
600CreatePricingServiceParametersFor each product, creates PricingServiceParameter objects with the product, unit of measure, quantity ordered, and configuration data set (for configured products).
700GetProductPricingCalls the pricing pipeline's GetProductPricing with the prepared pricing service parameters. Returns error if the pricing call fails.
800CreateProductPriceDtosFor 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.