import type { VariationAttribute } from './VariationAttribute'; import type { ShippingMethod } from './ShippingMethod'; import type { VariationGroup } from './VariationGroup'; import type { ProductType } from './ProductType'; import type { ProductPriceTable } from './ProductPriceTable'; import type { Recommendation } from './Recommendation'; import type { PriceRange } from './PriceRange'; import type { ProductPromotion } from './ProductPromotion'; import type { Master } from './Master'; import type { Variant } from './Variant'; import type { PageMetaTag } from './PageMetaTag'; import type { ProductLink } from './ProductLink'; import type { Option } from './Option'; import type { ImageGroup } from './ImageGroup'; import type { Inventory } from './Inventory'; import type { BundledProduct } from './BundledProduct'; /** * @type Product: Any product that is sold, shown alone, and does not have variations such as different sizes or colors. A product has no reliance on any other product for inheritance. *A product has a SKU and can have a product option, which has a different SKU*. * * @property brand: The product\'s brand. * * @property bundledProducts: The array of all bundled products of this product. * * @property currency: A three letter uppercase currency code conforming to the [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) standard, or the string `N/A` indicating that a currency is not applicable. * - **Pattern:** /^([A-Z][A-Z][A-Z]|N\/A)$/ * * @property ean: The European Article Number of the product. * * @property fetchDate: * * @property id: The id (SKU) of the product. * - **Min Length:** 1 * - **Max Length:** 100 * * @property imageGroups: The array of product image groups. * * @property inventories: The array of product inventories explicitly requested via the \'inventory_ids\' query parameter. This property is only returned in context of the \'availability\' expansion. * * @property inventory: The site default inventory information. This property is only returned in context of the \'availability\' expansion. * * @property longDescription: The localized product\'s long description. * * @property manufacturerName: The product\'s manufacturer name. * * @property manufacturerSku: The product\'s manufacturer SKU. * * @property master: The master product information, only for types: master, variation group, and variant. * * @property minOrderQuantity: The minimum order quantity for this product. * * @property name: The localized product name. * * @property options: The array of product options, only for type option. This array can be empty. * * @property pageDescription: The localized product\'s page description. * * @property pageKeywords: The localized product\'s page description. * * @property pageTitle: The localized product\'s page title. * * @property pageMetaTags: Page Meta tags associated with the given product. * * @property price: The sales price of the product. In case of complex products, like master or set, this is the minimum price of related child products. * * @property pricePerUnit: The price per unit if defined for the product * * @property pricePerUnitMax: The max price per unit typically for a master product\'s variant. * * @property priceMax: The maximum sales of related child products in complex products like master or set. * * @property priceRanges: Array of one or more price range objects representing one or more Pricebooks in context for the site. * * @property prices: The prices map with pricebook IDs and their values. * * @property primaryCategoryId: The ID of the products primary category. * * @property productLinks: The array of source and target product links information. * * @property productPromotions: An array of active customer product promotions for this product, sorted by promotion priority using SORT_BY_EXCLUSIVITY ordering (exclusivity → rank → promotion class → discount type → best discount → ID). This array can be empty. Coupon promotions are not returned in this array. See [PromotionPlan.SORT_BY_EXCLUSIVITY](https://salesforcecommercecloud.github.io/b2c-dev-doc/docs/current/scriptapi/html/index.html?target=class_dw_campaign_PromotionPlan.html) for more details. * * @property recommendations: Returns a list of recommendations. * * @property setProducts: The array of set products of this product. * * @property shortDescription: The localized product short description. * * @property slugUrl: The complete link to this product\'s storefront page. * * @property stepQuantity: The steps in which the order amount of the product can be increased. * * @property tieredPrices: The document represents list of tiered prices if the product is a variant * * @property type: The product type information. Can be one or more of the following values: item, master, variation_group, variant, bundle, and set. * * @property unit: The sales unit of the product. * * @property upc: The Universal Product Code (UPC). * * @property validFrom: The time a product is valid from. * * @property validTo: The time a product is valid to. * * @property variants: The array of actual variants. Only for master, variation group, and variant types. This array can be empty. * * @property variationAttributes: Sorted array of variation attributes information. Only for master, variation group, and variant types. This array can be empty. * * @property variationGroups: The array of actual variation groups. Only for master, variation group, and variant types. This array can be empty. * * @property variationValues: The actual variation attribute ID - value pairs. Only for variant and variation group types. * * @property shippingMethods: The array of applicable shipping methods for this product. This array can be empty. This property is only returned in context of the \'shipping_methods\' expansion. * */ export type Product = { brand?: string; bundledProducts?: Array; currency?: string; ean?: string; fetchDate?: number; id: string; imageGroups?: Array; inventories?: Array; inventory?: Inventory; longDescription?: string; manufacturerName?: string; manufacturerSku?: string; master?: Master; minOrderQuantity?: number; name?: string; options?: Array