This is page 41 of 43. Use http://codebase.md/taurgis/sfcc-dev-mcp?page={x} to view the full context. # Directory Structure ``` ├── .DS_Store ├── .github │ ├── dependabot.yml │ ├── instructions │ │ ├── mcp-node-tests.instructions.md │ │ └── mcp-yml-tests.instructions.md │ ├── ISSUE_TEMPLATE │ │ ├── bug_report.yml │ │ ├── config.yml │ │ ├── documentation.yml │ │ ├── feature_request.yml │ │ └── question.yml │ ├── PULL_REQUEST_TEMPLATE │ │ ├── bug_fix.md │ │ ├── documentation.md │ │ └── new_tool.md │ ├── pull_request_template.md │ └── workflows │ ├── ci.yml │ ├── deploy-pages.yml │ ├── publish.yml │ └── update-docs.yml ├── .gitignore ├── .husky │ └── pre-commit ├── aegis.config.docs-only.json ├── aegis.config.json ├── aegis.config.with-dw.json ├── AGENTS.md ├── ai-instructions │ ├── claude-desktop │ │ └── claude_custom_instructions.md │ ├── cursor │ │ └── .cursor │ │ └── rules │ │ ├── debugging-workflows.mdc │ │ ├── hooks-development.mdc │ │ ├── isml-templates.mdc │ │ ├── job-framework.mdc │ │ ├── performance-optimization.mdc │ │ ├── scapi-endpoints.mdc │ │ ├── security-patterns.mdc │ │ ├── sfcc-development.mdc │ │ ├── sfra-controllers.mdc │ │ ├── sfra-models.mdc │ │ ├── system-objects.mdc │ │ └── testing-patterns.mdc │ └── github-copilot │ └── copilot-instructions.md ├── CHANGELOG.md ├── CONTRIBUTING.md ├── docs │ ├── best-practices │ │ ├── cartridge_creation.md │ │ ├── isml_templates.md │ │ ├── job_framework.md │ │ ├── localserviceregistry.md │ │ ├── ocapi_hooks.md │ │ ├── performance.md │ │ ├── scapi_custom_endpoint.md │ │ ├── scapi_hooks.md │ │ ├── security.md │ │ ├── sfra_client_side_js.md │ │ ├── sfra_controllers.md │ │ ├── sfra_models.md │ │ └── sfra_scss.md │ ├── dw_campaign │ │ ├── ABTest.md │ │ ├── ABTestMgr.md │ │ ├── ABTestSegment.md │ │ ├── AmountDiscount.md │ │ ├── ApproachingDiscount.md │ │ ├── BonusChoiceDiscount.md │ │ ├── BonusDiscount.md │ │ ├── Campaign.md │ │ ├── CampaignMgr.md │ │ ├── CampaignStatusCodes.md │ │ ├── Coupon.md │ │ ├── CouponMgr.md │ │ ├── CouponRedemption.md │ │ ├── CouponStatusCodes.md │ │ ├── Discount.md │ │ ├── DiscountPlan.md │ │ ├── FixedPriceDiscount.md │ │ ├── FixedPriceShippingDiscount.md │ │ ├── FreeDiscount.md │ │ ├── FreeShippingDiscount.md │ │ ├── PercentageDiscount.md │ │ ├── PercentageOptionDiscount.md │ │ ├── PriceBookPriceDiscount.md │ │ ├── Promotion.md │ │ ├── PromotionMgr.md │ │ ├── PromotionPlan.md │ │ ├── SlotContent.md │ │ ├── SourceCodeGroup.md │ │ ├── SourceCodeInfo.md │ │ ├── SourceCodeStatusCodes.md │ │ └── TotalFixedPriceDiscount.md │ ├── dw_catalog │ │ ├── Catalog.md │ │ ├── CatalogMgr.md │ │ ├── Category.md │ │ ├── CategoryAssignment.md │ │ ├── CategoryLink.md │ │ ├── PriceBook.md │ │ ├── PriceBookMgr.md │ │ ├── Product.md │ │ ├── ProductActiveData.md │ │ ├── ProductAttributeModel.md │ │ ├── ProductAvailabilityLevels.md │ │ ├── ProductAvailabilityModel.md │ │ ├── ProductInventoryList.md │ │ ├── ProductInventoryMgr.md │ │ ├── ProductInventoryRecord.md │ │ ├── ProductLink.md │ │ ├── ProductMgr.md │ │ ├── ProductOption.md │ │ ├── ProductOptionModel.md │ │ ├── ProductOptionValue.md │ │ ├── ProductPriceInfo.md │ │ ├── ProductPriceModel.md │ │ ├── ProductPriceTable.md │ │ ├── ProductSearchHit.md │ │ ├── ProductSearchModel.md │ │ ├── ProductSearchRefinementDefinition.md │ │ ├── ProductSearchRefinements.md │ │ ├── ProductSearchRefinementValue.md │ │ ├── ProductVariationAttribute.md │ │ ├── ProductVariationAttributeValue.md │ │ ├── ProductVariationModel.md │ │ ├── Recommendation.md │ │ ├── SearchModel.md │ │ ├── SearchRefinementDefinition.md │ │ ├── SearchRefinements.md │ │ ├── SearchRefinementValue.md │ │ ├── SortingOption.md │ │ ├── SortingRule.md │ │ ├── Store.md │ │ ├── StoreGroup.md │ │ ├── StoreInventoryFilter.md │ │ ├── StoreInventoryFilterValue.md │ │ ├── StoreMgr.md │ │ ├── Variant.md │ │ └── VariationGroup.md │ ├── dw_content │ │ ├── Content.md │ │ ├── ContentMgr.md │ │ ├── ContentSearchModel.md │ │ ├── ContentSearchRefinementDefinition.md │ │ ├── ContentSearchRefinements.md │ │ ├── ContentSearchRefinementValue.md │ │ ├── Folder.md │ │ ├── Library.md │ │ ├── MarkupText.md │ │ └── MediaFile.md │ ├── dw_crypto │ │ ├── CertificateRef.md │ │ ├── CertificateUtils.md │ │ ├── Cipher.md │ │ ├── Encoding.md │ │ ├── JWE.md │ │ ├── JWEHeader.md │ │ ├── JWS.md │ │ ├── JWSHeader.md │ │ ├── KeyRef.md │ │ ├── Mac.md │ │ ├── MessageDigest.md │ │ ├── SecureRandom.md │ │ ├── Signature.md │ │ ├── WeakCipher.md │ │ ├── WeakMac.md │ │ ├── WeakMessageDigest.md │ │ ├── WeakSignature.md │ │ └── X509Certificate.md │ ├── dw_customer │ │ ├── AddressBook.md │ │ ├── AgentUserMgr.md │ │ ├── AgentUserStatusCodes.md │ │ ├── AuthenticationStatus.md │ │ ├── Credentials.md │ │ ├── Customer.md │ │ ├── CustomerActiveData.md │ │ ├── CustomerAddress.md │ │ ├── CustomerCDPData.md │ │ ├── CustomerContextMgr.md │ │ ├── CustomerGroup.md │ │ ├── CustomerList.md │ │ ├── CustomerMgr.md │ │ ├── CustomerPasswordConstraints.md │ │ ├── CustomerPaymentInstrument.md │ │ ├── CustomerStatusCodes.md │ │ ├── EncryptedObject.md │ │ ├── ExternalProfile.md │ │ ├── OrderHistory.md │ │ ├── ProductList.md │ │ ├── ProductListItem.md │ │ ├── ProductListItemPurchase.md │ │ ├── ProductListMgr.md │ │ ├── ProductListRegistrant.md │ │ ├── Profile.md │ │ └── Wallet.md │ ├── dw_extensions.applepay │ │ ├── ApplePayHookResult.md │ │ └── ApplePayHooks.md │ ├── dw_extensions.facebook │ │ ├── FacebookFeedHooks.md │ │ └── FacebookProduct.md │ ├── dw_extensions.paymentrequest │ │ ├── PaymentRequestHookResult.md │ │ └── PaymentRequestHooks.md │ ├── dw_extensions.payments │ │ ├── SalesforceBancontactPaymentDetails.md │ │ ├── SalesforceCardPaymentDetails.md │ │ ├── SalesforceEpsPaymentDetails.md │ │ ├── SalesforceIdealPaymentDetails.md │ │ ├── SalesforceKlarnaPaymentDetails.md │ │ ├── SalesforcePaymentDetails.md │ │ ├── SalesforcePaymentIntent.md │ │ ├── SalesforcePaymentMethod.md │ │ ├── SalesforcePaymentRequest.md │ │ ├── SalesforcePaymentsHooks.md │ │ ├── SalesforcePaymentsMgr.md │ │ ├── SalesforcePaymentsSiteConfiguration.md │ │ ├── SalesforcePayPalOrder.md │ │ ├── SalesforcePayPalOrderAddress.md │ │ ├── SalesforcePayPalOrderPayer.md │ │ ├── SalesforcePayPalPaymentDetails.md │ │ ├── SalesforceSepaDebitPaymentDetails.md │ │ └── SalesforceVenmoPaymentDetails.md │ ├── dw_extensions.pinterest │ │ ├── PinterestAvailability.md │ │ ├── PinterestFeedHooks.md │ │ ├── PinterestOrder.md │ │ ├── PinterestOrderHooks.md │ │ └── PinterestProduct.md │ ├── dw_io │ │ ├── CSVStreamReader.md │ │ ├── CSVStreamWriter.md │ │ ├── File.md │ │ ├── FileReader.md │ │ ├── FileWriter.md │ │ ├── InputStream.md │ │ ├── OutputStream.md │ │ ├── PrintWriter.md │ │ ├── RandomAccessFileReader.md │ │ ├── Reader.md │ │ ├── StringWriter.md │ │ ├── Writer.md │ │ ├── XMLIndentingStreamWriter.md │ │ ├── XMLStreamConstants.md │ │ ├── XMLStreamReader.md │ │ └── XMLStreamWriter.md │ ├── dw_job │ │ ├── JobExecution.md │ │ └── JobStepExecution.md │ ├── dw_net │ │ ├── FTPClient.md │ │ ├── FTPFileInfo.md │ │ ├── HTTPClient.md │ │ ├── HTTPRequestPart.md │ │ ├── Mail.md │ │ ├── SFTPClient.md │ │ ├── SFTPFileInfo.md │ │ ├── WebDAVClient.md │ │ └── WebDAVFileInfo.md │ ├── dw_object │ │ ├── ActiveData.md │ │ ├── CustomAttributes.md │ │ ├── CustomObject.md │ │ ├── CustomObjectMgr.md │ │ ├── Extensible.md │ │ ├── ExtensibleObject.md │ │ ├── Note.md │ │ ├── ObjectAttributeDefinition.md │ │ ├── ObjectAttributeGroup.md │ │ ├── ObjectAttributeValueDefinition.md │ │ ├── ObjectTypeDefinition.md │ │ ├── PersistentObject.md │ │ ├── SimpleExtensible.md │ │ └── SystemObjectMgr.md │ ├── dw_order │ │ ├── AbstractItem.md │ │ ├── AbstractItemCtnr.md │ │ ├── Appeasement.md │ │ ├── AppeasementItem.md │ │ ├── Basket.md │ │ ├── BasketMgr.md │ │ ├── BonusDiscountLineItem.md │ │ ├── CouponLineItem.md │ │ ├── CreateAgentBasketLimitExceededException.md │ │ ├── CreateBasketFromOrderException.md │ │ ├── CreateCouponLineItemException.md │ │ ├── CreateOrderException.md │ │ ├── CreateTemporaryBasketLimitExceededException.md │ │ ├── GiftCertificate.md │ │ ├── GiftCertificateLineItem.md │ │ ├── GiftCertificateMgr.md │ │ ├── GiftCertificateStatusCodes.md │ │ ├── Invoice.md │ │ ├── InvoiceItem.md │ │ ├── LineItem.md │ │ ├── LineItemCtnr.md │ │ ├── Order.md │ │ ├── OrderAddress.md │ │ ├── OrderItem.md │ │ ├── OrderMgr.md │ │ ├── OrderPaymentInstrument.md │ │ ├── OrderProcessStatusCodes.md │ │ ├── PaymentCard.md │ │ ├── PaymentInstrument.md │ │ ├── PaymentMethod.md │ │ ├── PaymentMgr.md │ │ ├── PaymentProcessor.md │ │ ├── PaymentStatusCodes.md │ │ ├── PaymentTransaction.md │ │ ├── PriceAdjustment.md │ │ ├── PriceAdjustmentLimitTypes.md │ │ ├── ProductLineItem.md │ │ ├── ProductShippingCost.md │ │ ├── ProductShippingLineItem.md │ │ ├── ProductShippingModel.md │ │ ├── Return.md │ │ ├── ReturnCase.md │ │ ├── ReturnCaseItem.md │ │ ├── ReturnItem.md │ │ ├── Shipment.md │ │ ├── ShipmentShippingCost.md │ │ ├── ShipmentShippingModel.md │ │ ├── ShippingLineItem.md │ │ ├── ShippingLocation.md │ │ ├── ShippingMethod.md │ │ ├── ShippingMgr.md │ │ ├── ShippingOrder.md │ │ ├── ShippingOrderItem.md │ │ ├── SumItem.md │ │ ├── TaxGroup.md │ │ ├── TaxItem.md │ │ ├── TaxMgr.md │ │ ├── TrackingInfo.md │ │ └── TrackingRef.md │ ├── dw_order.hooks │ │ ├── CalculateHooks.md │ │ ├── OrderHooks.md │ │ ├── PaymentHooks.md │ │ ├── ReturnHooks.md │ │ └── ShippingOrderHooks.md │ ├── dw_rpc │ │ ├── SOAPUtil.md │ │ ├── Stub.md │ │ └── WebReference.md │ ├── dw_suggest │ │ ├── BrandSuggestions.md │ │ ├── CategorySuggestions.md │ │ ├── ContentSuggestions.md │ │ ├── CustomSuggestions.md │ │ ├── ProductSuggestions.md │ │ ├── SearchPhraseSuggestions.md │ │ ├── SuggestedCategory.md │ │ ├── SuggestedContent.md │ │ ├── SuggestedPhrase.md │ │ ├── SuggestedProduct.md │ │ ├── SuggestedTerm.md │ │ ├── SuggestedTerms.md │ │ ├── Suggestions.md │ │ └── SuggestModel.md │ ├── dw_svc │ │ ├── FTPService.md │ │ ├── FTPServiceDefinition.md │ │ ├── HTTPFormService.md │ │ ├── HTTPFormServiceDefinition.md │ │ ├── HTTPService.md │ │ ├── HTTPServiceDefinition.md │ │ ├── LocalServiceRegistry.md │ │ ├── Result.md │ │ ├── Service.md │ │ ├── ServiceCallback.md │ │ ├── ServiceConfig.md │ │ ├── ServiceCredential.md │ │ ├── ServiceDefinition.md │ │ ├── ServiceProfile.md │ │ ├── ServiceRegistry.md │ │ ├── SOAPService.md │ │ └── SOAPServiceDefinition.md │ ├── dw_system │ │ ├── AgentUserStatusCodes.md │ │ ├── Cache.md │ │ ├── CacheMgr.md │ │ ├── HookMgr.md │ │ ├── InternalObject.md │ │ ├── JobProcessMonitor.md │ │ ├── Log.md │ │ ├── Logger.md │ │ ├── LogNDC.md │ │ ├── OrganizationPreferences.md │ │ ├── Pipeline.md │ │ ├── PipelineDictionary.md │ │ ├── RemoteInclude.md │ │ ├── Request.md │ │ ├── RequestHooks.md │ │ ├── Response.md │ │ ├── RESTErrorResponse.md │ │ ├── RESTResponseMgr.md │ │ ├── RESTSuccessResponse.md │ │ ├── SearchStatus.md │ │ ├── Session.md │ │ ├── Site.md │ │ ├── SitePreferences.md │ │ ├── Status.md │ │ ├── StatusItem.md │ │ ├── System.md │ │ └── Transaction.md │ ├── dw_util │ │ ├── ArrayList.md │ │ ├── Assert.md │ │ ├── BigInteger.md │ │ ├── Bytes.md │ │ ├── Calendar.md │ │ ├── Collection.md │ │ ├── Currency.md │ │ ├── DateUtils.md │ │ ├── Decimal.md │ │ ├── FilteringCollection.md │ │ ├── Geolocation.md │ │ ├── HashMap.md │ │ ├── HashSet.md │ │ ├── Iterator.md │ │ ├── LinkedHashMap.md │ │ ├── LinkedHashSet.md │ │ ├── List.md │ │ ├── Locale.md │ │ ├── Map.md │ │ ├── MapEntry.md │ │ ├── MappingKey.md │ │ ├── MappingMgr.md │ │ ├── PropertyComparator.md │ │ ├── SecureEncoder.md │ │ ├── SecureFilter.md │ │ ├── SeekableIterator.md │ │ ├── Set.md │ │ ├── SortedMap.md │ │ ├── SortedSet.md │ │ ├── StringUtils.md │ │ ├── Template.md │ │ └── UUIDUtils.md │ ├── dw_value │ │ ├── EnumValue.md │ │ ├── MimeEncodedText.md │ │ ├── Money.md │ │ └── Quantity.md │ ├── dw_web │ │ ├── ClickStream.md │ │ ├── ClickStreamEntry.md │ │ ├── Cookie.md │ │ ├── Cookies.md │ │ ├── CSRFProtection.md │ │ ├── Form.md │ │ ├── FormAction.md │ │ ├── FormElement.md │ │ ├── FormElementValidationResult.md │ │ ├── FormField.md │ │ ├── FormFieldOption.md │ │ ├── FormFieldOptions.md │ │ ├── FormGroup.md │ │ ├── FormList.md │ │ ├── FormListItem.md │ │ ├── Forms.md │ │ ├── HttpParameter.md │ │ ├── HttpParameterMap.md │ │ ├── LoopIterator.md │ │ ├── PageMetaData.md │ │ ├── PageMetaTag.md │ │ ├── PagingModel.md │ │ ├── Resource.md │ │ ├── URL.md │ │ ├── URLAction.md │ │ ├── URLParameter.md │ │ ├── URLRedirect.md │ │ ├── URLRedirectMgr.md │ │ └── URLUtils.md │ ├── sfra │ │ ├── account.md │ │ ├── address.md │ │ ├── billing.md │ │ ├── cart.md │ │ ├── categories.md │ │ ├── content.md │ │ ├── locale.md │ │ ├── order.md │ │ ├── payment.md │ │ ├── price-default.md │ │ ├── price-range.md │ │ ├── price-tiered.md │ │ ├── product-bundle.md │ │ ├── product-full.md │ │ ├── product-line-items.md │ │ ├── product-search.md │ │ ├── product-tile.md │ │ ├── querystring.md │ │ ├── render.md │ │ ├── request.md │ │ ├── response.md │ │ ├── server.md │ │ ├── shipping.md │ │ ├── store.md │ │ ├── stores.md │ │ └── totals.md │ └── TopLevel │ ├── APIException.md │ ├── arguments.md │ ├── Array.md │ ├── ArrayBuffer.md │ ├── BigInt.md │ ├── Boolean.md │ ├── ConversionError.md │ ├── DataView.md │ ├── Date.md │ ├── Error.md │ ├── ES6Iterator.md │ ├── EvalError.md │ ├── Fault.md │ ├── Float32Array.md │ ├── Float64Array.md │ ├── Function.md │ ├── Generator.md │ ├── global.md │ ├── Int16Array.md │ ├── Int32Array.md │ ├── Int8Array.md │ ├── InternalError.md │ ├── IOError.md │ ├── Iterable.md │ ├── Iterator.md │ ├── JSON.md │ ├── Map.md │ ├── Math.md │ ├── Module.md │ ├── Namespace.md │ ├── Number.md │ ├── Object.md │ ├── QName.md │ ├── RangeError.md │ ├── ReferenceError.md │ ├── RegExp.md │ ├── Set.md │ ├── StopIteration.md │ ├── String.md │ ├── Symbol.md │ ├── SyntaxError.md │ ├── SystemError.md │ ├── TypeError.md │ ├── Uint16Array.md │ ├── Uint32Array.md │ ├── Uint8Array.md │ ├── Uint8ClampedArray.md │ ├── URIError.md │ ├── WeakMap.md │ ├── WeakSet.md │ ├── XML.md │ ├── XMLList.md │ └── XMLStreamError.md ├── docs-site │ ├── .gitignore │ ├── App.tsx │ ├── components │ │ ├── Badge.tsx │ │ ├── BreadcrumbSchema.tsx │ │ ├── CodeBlock.tsx │ │ ├── Collapsible.tsx │ │ ├── ConfigBuilder.tsx │ │ ├── ConfigHero.tsx │ │ ├── ConfigModeTabs.tsx │ │ ├── icons.tsx │ │ ├── Layout.tsx │ │ ├── LightCodeContainer.tsx │ │ ├── NewcomerCTA.tsx │ │ ├── NextStepsStrip.tsx │ │ ├── OnThisPage.tsx │ │ ├── Search.tsx │ │ ├── SEO.tsx │ │ ├── Sidebar.tsx │ │ ├── StructuredData.tsx │ │ ├── ToolCard.tsx │ │ ├── ToolFilters.tsx │ │ ├── Typography.tsx │ │ └── VersionBadge.tsx │ ├── constants.tsx │ ├── index.html │ ├── main.tsx │ ├── metadata.json │ ├── package-lock.json │ ├── package.json │ ├── pages │ │ ├── AIInterfacesPage.tsx │ │ ├── ConfigurationPage.tsx │ │ ├── DevelopmentPage.tsx │ │ ├── ExamplesPage.tsx │ │ ├── FeaturesPage.tsx │ │ ├── HomePage.tsx │ │ ├── SecurityPage.tsx │ │ ├── ToolsPage.tsx │ │ └── TroubleshootingPage.tsx │ ├── postcss.config.js │ ├── public │ │ ├── .well-known │ │ │ └── security.txt │ │ ├── 404.html │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon.png │ │ ├── explain-product-pricing-methods-no-mcp.png │ │ ├── explain-product-pricing-methods.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon.ico │ │ ├── llms.txt │ │ ├── robots.txt │ │ ├── site.webmanifest │ │ └── sitemap.xml │ ├── README.md │ ├── scripts │ │ ├── generate-search-index.js │ │ ├── generate-sitemap.js │ │ └── search-dev.js │ ├── src │ │ └── styles │ │ ├── input.css │ │ └── prism-theme.css │ ├── tailwind.config.js │ ├── tsconfig.json │ ├── types.ts │ ├── utils │ │ ├── search.ts │ │ └── toolsData.ts │ └── vite.config.ts ├── eslint.config.js ├── jest.config.js ├── LICENSE ├── package-lock.json ├── package.json ├── README.md ├── scripts │ └── convert-docs.js ├── SECURITY.md ├── server.json ├── src │ ├── clients │ │ ├── base │ │ │ ├── http-client.ts │ │ │ ├── oauth-token.ts │ │ │ └── ocapi-auth-client.ts │ │ ├── best-practices-client.ts │ │ ├── cartridge-generation-client.ts │ │ ├── docs │ │ │ ├── class-content-parser.ts │ │ │ ├── class-name-resolver.ts │ │ │ ├── documentation-scanner.ts │ │ │ ├── index.ts │ │ │ └── referenced-types-extractor.ts │ │ ├── docs-client.ts │ │ ├── log-client.ts │ │ ├── logs │ │ │ ├── index.ts │ │ │ ├── log-analyzer.ts │ │ │ ├── log-client.ts │ │ │ ├── log-constants.ts │ │ │ ├── log-file-discovery.ts │ │ │ ├── log-file-reader.ts │ │ │ ├── log-formatter.ts │ │ │ ├── log-processor.ts │ │ │ ├── log-types.ts │ │ │ └── webdav-client-manager.ts │ │ ├── ocapi │ │ │ ├── code-versions-client.ts │ │ │ ├── site-preferences-client.ts │ │ │ └── system-objects-client.ts │ │ ├── ocapi-client.ts │ │ └── sfra-client.ts │ ├── config │ │ ├── configuration-factory.ts │ │ └── dw-json-loader.ts │ ├── core │ │ ├── handlers │ │ │ ├── abstract-log-tool-handler.ts │ │ │ ├── base-handler.ts │ │ │ ├── best-practices-handler.ts │ │ │ ├── cartridge-handler.ts │ │ │ ├── client-factory.ts │ │ │ ├── code-version-handler.ts │ │ │ ├── docs-handler.ts │ │ │ ├── job-log-handler.ts │ │ │ ├── job-log-tool-config.ts │ │ │ ├── log-handler.ts │ │ │ ├── log-tool-config.ts │ │ │ ├── sfra-handler.ts │ │ │ ├── system-object-handler.ts │ │ │ └── validation-helpers.ts │ │ ├── server.ts │ │ └── tool-definitions.ts │ ├── index.ts │ ├── main.ts │ ├── services │ │ ├── file-system-service.ts │ │ ├── index.ts │ │ └── path-service.ts │ ├── tool-configs │ │ ├── best-practices-tool-config.ts │ │ ├── cartridge-tool-config.ts │ │ ├── code-version-tool-config.ts │ │ ├── docs-tool-config.ts │ │ ├── job-log-tool-config.ts │ │ ├── log-tool-config.ts │ │ ├── sfra-tool-config.ts │ │ └── system-object-tool-config.ts │ ├── types │ │ └── types.ts │ └── utils │ ├── cache.ts │ ├── job-log-tool-config.ts │ ├── job-log-utils.ts │ ├── log-cache.ts │ ├── log-tool-config.ts │ ├── log-tool-constants.ts │ ├── log-tool-utils.ts │ ├── logger.ts │ ├── ocapi-url-builder.ts │ ├── path-resolver.ts │ ├── query-builder.ts │ ├── utils.ts │ └── validator.ts ├── tests │ ├── __mocks__ │ │ ├── docs-client.ts │ │ ├── src │ │ │ └── clients │ │ │ └── base │ │ │ └── http-client.js │ │ └── webdav.js │ ├── base-handler.test.ts │ ├── base-http-client.test.ts │ ├── best-practices-handler.test.ts │ ├── cache.test.ts │ ├── cartridge-handler.test.ts │ ├── class-content-parser.test.ts │ ├── class-name-resolver.test.ts │ ├── client-factory.test.ts │ ├── code-version-handler.test.ts │ ├── code-versions-client.test.ts │ ├── config.test.ts │ ├── configuration-factory.test.ts │ ├── docs-handler.test.ts │ ├── documentation-scanner.test.ts │ ├── file-system-service.test.ts │ ├── job-log-handler.test.ts │ ├── job-log-utils.test.ts │ ├── log-client.test.ts │ ├── log-handler.test.ts │ ├── log-processor.test.ts │ ├── logger.test.ts │ ├── mcp │ │ ├── AGENTS.md │ │ ├── node │ │ │ ├── activate-code-version-advanced.full-mode.programmatic.test.js │ │ │ ├── code-versions.full-mode.programmatic.test.js │ │ │ ├── generate-cartridge-structure.docs-only.programmatic.test.js │ │ │ ├── get-available-best-practice-guides.docs-only.programmatic.test.js │ │ │ ├── get-available-sfra-documents.programmatic.test.js │ │ │ ├── get-best-practice-guide.docs-only.programmatic.test.js │ │ │ ├── get-hook-reference.docs-only.programmatic.test.js │ │ │ ├── get-job-execution-summary.full-mode.programmatic.test.js │ │ │ ├── get-job-log-entries.full-mode.programmatic.test.js │ │ │ ├── get-latest-debug.full-mode.programmatic.test.js │ │ │ ├── get-latest-error.full-mode.programmatic.test.js │ │ │ ├── get-latest-info.full-mode.programmatic.test.js │ │ │ ├── get-latest-job-log-files.full-mode.programmatic.test.js │ │ │ ├── get-latest-warn.full-mode.programmatic.test.js │ │ │ ├── get-log-file-contents.full-mode.programmatic.test.js │ │ │ ├── get-sfcc-class-documentation.docs-only.programmatic.test.js │ │ │ ├── get-sfcc-class-info.docs-only.programmatic.test.js │ │ │ ├── get-sfra-categories.docs-only.programmatic.test.js │ │ │ ├── get-sfra-document.programmatic.test.js │ │ │ ├── get-sfra-documents-by-category.docs-only.programmatic.test.js │ │ │ ├── get-system-object-definition.full-mode.programmatic.test.js │ │ │ ├── get-system-object-definitions.docs-only.programmatic.test.js │ │ │ ├── get-system-object-definitions.full-mode.programmatic.test.js │ │ │ ├── list-log-files.full-mode.programmatic.test.js │ │ │ ├── list-sfcc-classes.docs-only.programmatic.test.js │ │ │ ├── search-best-practices.docs-only.programmatic.test.js │ │ │ ├── search-custom-object-attribute-definitions.full-mode.programmatic.test.js │ │ │ ├── search-job-logs-by-name.full-mode.programmatic.test.js │ │ │ ├── search-job-logs.full-mode.programmatic.test.js │ │ │ ├── search-logs.full-mode.programmatic.test.js │ │ │ ├── search-sfcc-classes.docs-only.programmatic.test.js │ │ │ ├── search-sfcc-methods.docs-only.programmatic.test.js │ │ │ ├── search-sfra-documentation.docs-only.programmatic.test.js │ │ │ ├── search-site-preferences.full-mode.programmatic.test.js │ │ │ ├── search-system-object-attribute-definitions.full-mode.programmatic.test.js │ │ │ ├── search-system-object-attribute-groups.full-mode.programmatic.test.js │ │ │ ├── summarize-logs.full-mode.programmatic.test.js │ │ │ ├── tools.docs-only.programmatic.test.js │ │ │ └── tools.full-mode.programmatic.test.js │ │ ├── README.md │ │ ├── test-fixtures │ │ │ └── dw.json │ │ └── yaml │ │ ├── activate-code-version.docs-only.test.mcp.yml │ │ ├── activate-code-version.full-mode.test.mcp.yml │ │ ├── get_latest_error.test.mcp.yml │ │ ├── get-available-best-practice-guides.docs-only.test.mcp.yml │ │ ├── get-available-best-practice-guides.full-mode.test.mcp.yml │ │ ├── get-available-sfra-documents.docs-only.test.mcp.yml │ │ ├── get-available-sfra-documents.full-mode.test.mcp.yml │ │ ├── get-best-practice-guide.docs-only.test.mcp.yml │ │ ├── get-best-practice-guide.full-mode.test.mcp.yml │ │ ├── get-code-versions.docs-only.test.mcp.yml │ │ ├── get-code-versions.full-mode.test.mcp.yml │ │ ├── get-hook-reference.docs-only.test.mcp.yml │ │ ├── get-hook-reference.full-mode.test.mcp.yml │ │ ├── get-job-execution-summary.full-mode.test.mcp.yml │ │ ├── get-job-log-entries.full-mode.test.mcp.yml │ │ ├── get-latest-debug.full-mode.test.mcp.yml │ │ ├── get-latest-error.full-mode.test.mcp.yml │ │ ├── get-latest-info.full-mode.test.mcp.yml │ │ ├── get-latest-job-log-files.full-mode.test.mcp.yml │ │ ├── get-latest-warn.full-mode.test.mcp.yml │ │ ├── get-log-file-contents.full-mode.test.mcp.yml │ │ ├── get-sfcc-class-documentation.docs-only.test.mcp.yml │ │ ├── get-sfcc-class-documentation.full-mode.test.mcp.yml │ │ ├── get-sfcc-class-info.docs-only.test.mcp.yml │ │ ├── get-sfcc-class-info.full-mode.test.mcp.yml │ │ ├── get-sfra-categories.docs-only.test.mcp.yml │ │ ├── get-sfra-categories.full-mode.test.mcp.yml │ │ ├── get-sfra-document.docs-only.test.mcp.yml │ │ ├── get-sfra-document.full-mode.test.mcp.yml │ │ ├── get-sfra-documents-by-category.docs-only.test.mcp.yml │ │ ├── get-sfra-documents-by-category.full-mode.test.mcp.yml │ │ ├── get-system-object-definition.docs-only.test.mcp.yml │ │ ├── get-system-object-definition.full-mode.test.mcp.yml │ │ ├── get-system-object-definitions.docs-only.test.mcp.yml │ │ ├── get-system-object-definitions.full-mode.test.mcp.yml │ │ ├── list-log-files.full-mode.test.mcp.yml │ │ ├── list-sfcc-classes.docs-only.test.mcp.yml │ │ ├── list-sfcc-classes.full-mode.test.mcp.yml │ │ ├── search-best-practices.docs-only.test.mcp.yml │ │ ├── search-best-practices.full-mode.test.mcp.yml │ │ ├── search-custom-object-attribute-definitions.docs-only.test.mcp.yml │ │ ├── search-custom-object-attribute-definitions.test.mcp.yml │ │ ├── search-job-logs-by-name.full-mode.test.mcp.yml │ │ ├── search-job-logs.full-mode.test.mcp.yml │ │ ├── search-logs.full-mode.test.mcp.yml │ │ ├── search-sfcc-classes.docs-only.test.mcp.yml │ │ ├── search-sfcc-classes.full-mode.test.mcp.yml │ │ ├── search-sfcc-methods.docs-only.test.mcp.yml │ │ ├── search-sfcc-methods.full-mode.test.mcp.yml │ │ ├── search-sfra-documentation.docs-only.test.mcp.yml │ │ ├── search-sfra-documentation.full-mode.test.mcp.yml │ │ ├── search-site-preferences.docs-only.test.mcp.yml │ │ ├── search-site-preferences.full-mode.test.mcp.yml │ │ ├── search-system-object-attribute-definitions.docs-only.test.mcp.yml │ │ ├── search-system-object-attribute-definitions.full-mode.test.mcp.yml │ │ ├── search-system-object-attribute-groups.docs-only.test.mcp.yml │ │ ├── search-system-object-attribute-groups.full-mode.test.mcp.yml │ │ ├── summarize-logs.full-mode.test.mcp.yml │ │ ├── tools.docs-only.test.mcp.yml │ │ └── tools.full-mode.test.mcp.yml │ ├── oauth-token.test.ts │ ├── ocapi-auth-client.test.ts │ ├── ocapi-client.test.ts │ ├── path-service.test.ts │ ├── query-builder.test.ts │ ├── referenced-types-extractor.test.ts │ ├── servers │ │ ├── sfcc-mock-server │ │ │ ├── mock-data │ │ │ │ └── ocapi │ │ │ │ ├── code-versions.json │ │ │ │ ├── custom-object-attributes-customapi.json │ │ │ │ ├── custom-object-attributes-globalsettings.json │ │ │ │ ├── custom-object-attributes-versionhistory.json │ │ │ │ ├── site-preferences-ccv.json │ │ │ │ ├── site-preferences-fastforward.json │ │ │ │ ├── site-preferences-sfra.json │ │ │ │ ├── site-preferences-storefront.json │ │ │ │ ├── site-preferences-system.json │ │ │ │ ├── system-object-attribute-groups-campaign.json │ │ │ │ ├── system-object-attribute-groups-category.json │ │ │ │ ├── system-object-attribute-groups-order.json │ │ │ │ ├── system-object-attribute-groups-product.json │ │ │ │ ├── system-object-attribute-groups-sitepreferences.json │ │ │ │ ├── system-object-attributes-customeraddress.json │ │ │ │ ├── system-object-attributes-product-expanded.json │ │ │ │ ├── system-object-attributes-product.json │ │ │ │ ├── system-object-definition-category.json │ │ │ │ ├── system-object-definition-customer.json │ │ │ │ ├── system-object-definition-customeraddress.json │ │ │ │ ├── system-object-definition-order.json │ │ │ │ ├── system-object-definition-product.json │ │ │ │ ├── system-object-definitions-old.json │ │ │ │ └── system-object-definitions.json │ │ │ ├── package-lock.json │ │ │ ├── package.json │ │ │ ├── README.md │ │ │ ├── scripts │ │ │ │ └── setup-logs.js │ │ │ ├── server.js │ │ │ └── src │ │ │ ├── app.js │ │ │ ├── config │ │ │ │ └── server-config.js │ │ │ ├── middleware │ │ │ │ ├── auth.js │ │ │ │ ├── cors.js │ │ │ │ └── logging.js │ │ │ ├── routes │ │ │ │ ├── ocapi │ │ │ │ │ ├── code-versions-handler.js │ │ │ │ │ ├── oauth-handler.js │ │ │ │ │ ├── ocapi-error-utils.js │ │ │ │ │ ├── ocapi-utils.js │ │ │ │ │ ├── site-preferences-handler.js │ │ │ │ │ └── system-objects-handler.js │ │ │ │ ├── ocapi.js │ │ │ │ └── webdav.js │ │ │ └── utils │ │ │ ├── mock-data-loader.js │ │ │ └── webdav-xml.js │ │ └── sfcc-mock-server-manager.ts │ ├── sfcc-mock-server.test.ts │ ├── site-preferences-client.test.ts │ ├── system-objects-client.test.ts │ ├── utils.test.ts │ ├── validation-helpers.test.ts │ └── validator.test.ts ├── tsconfig.json └── tsconfig.test.json ``` # Files -------------------------------------------------------------------------------- /tests/mcp/yaml/get-sfcc-class-documentation.docs-only.test.mcp.yml: -------------------------------------------------------------------------------- ```yaml # ================================================================================== # SFCC MCP Server - get_sfcc_class_documentation Tool YAML Tests # Comprehensive testing for SFCC class documentation retrieval functionality # Tests both successful responses and error handling scenarios # # Quick Test Commands: # aegis "tests/mcp/yaml/get-sfcc-class-documentation.docs-only.test.mcp.yml" --config "aegis.config.docs-only.json" --verbose # aegis "tests/mcp/yaml/get-sfcc-class-documentation.docs-only.test.mcp.yml" --config "aegis.config.docs-only.json" --debug --timing # aegis query get_sfcc_class_documentation '{"className": "dw.catalog.Product"}' --config "aegis.config.docs-only.json" # aegis query get_sfcc_class_documentation '{"className": "dw.order.Order"}' --config "aegis.config.docs-only.json" # ================================================================================== description: "SFCC MCP Server get_sfcc_class_documentation tool - comprehensive validation" # ================================================================================== # BASIC TOOL STRUCTURE VALIDATION # ================================================================================== tests: - it: "should list get_sfcc_class_documentation tool in available tools" request: jsonrpc: "2.0" id: "tool-available" method: "tools/list" params: {} expect: response: jsonrpc: "2.0" id: "tool-available" result: match:extractField: "tools.*.name" value: "match:arrayContains:get_sfcc_class_documentation" stderr: "toBeEmpty" - it: "should have get_sfcc_class_documentation in tools list with proper structure" request: jsonrpc: "2.0" id: "tool-metadata" method: "tools/list" params: {} expect: response: jsonrpc: "2.0" id: "tool-metadata" result: tools: "match:arrayContains:name:get_sfcc_class_documentation" stderr: "toBeEmpty" - it: "should have tool with meaningful description" request: jsonrpc: "2.0" id: "tool-description-quality" method: "tools/list" params: {} expect: response: jsonrpc: "2.0" id: "tool-description-quality" result: tools: match:arrayElements: match:partial: name: "match:type:string" description: "match:regex:.{20,}" # At least 20 characters stderr: "toBeEmpty" - it: "should have proper inputSchema structure for get_sfcc_class_documentation" request: jsonrpc: "2.0" id: "tool-schema-structure" method: "tools/list" params: {} expect: response: jsonrpc: "2.0" id: "tool-schema-structure" result: tools: match:arrayElements: match:partial: name: "match:type:string" inputSchema: type: "object" properties: "match:type:object" stderr: "toBeEmpty" # ================================================================================== # SUCCESSFUL EXECUTION TESTS - CORE CLASSES # ================================================================================== - it: "should execute with dw.catalog.Product class" request: jsonrpc: "2.0" id: "exec-product-basic" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Product" expect: response: jsonrpc: "2.0" id: "exec-product-basic" result: content: - type: "text" text: "match:contains:## Package: dw.catalog" isError: false stderr: "toBeEmpty" - it: "should return complete documentation for dw.catalog.Product" request: jsonrpc: "2.0" id: "exec-product-complete" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Product" expect: response: jsonrpc: "2.0" id: "exec-product-complete" result: content: - type: "text" text: "match:contains:# Class Product" isError: false stderr: "toBeEmpty" - it: "should include inheritance hierarchy in Product documentation" request: jsonrpc: "2.0" id: "exec-product-inheritance" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Product" expect: response: jsonrpc: "2.0" id: "exec-product-inheritance" result: content: - type: "text" text: "match:contains:## Inheritance Hierarchy" isError: false stderr: "toBeEmpty" - it: "should include properties section in Product documentation" request: jsonrpc: "2.0" id: "exec-product-properties" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Product" expect: response: jsonrpc: "2.0" id: "exec-product-properties" result: content: - type: "text" text: "match:contains:## Properties" isError: false stderr: "toBeEmpty" - it: "should include method summary in Product documentation" request: jsonrpc: "2.0" id: "exec-product-methods" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Product" expect: response: jsonrpc: "2.0" id: "exec-product-methods" result: content: - type: "text" text: "match:contains:## Method Summary" isError: false stderr: "toBeEmpty" - it: "should include method details in Product documentation" request: jsonrpc: "2.0" id: "exec-product-method-details" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Product" expect: response: jsonrpc: "2.0" id: "exec-product-method-details" result: content: - type: "text" text: "match:contains:## Method Details" isError: false stderr: "toBeEmpty" # ================================================================================== # CLASS NAME VARIATIONS TESTING # ================================================================================== - it: "should work with fully qualified class names" request: jsonrpc: "2.0" id: "exec-fqn" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Product" expect: response: jsonrpc: "2.0" id: "exec-fqn" result: content: - type: "text" text: "match:contains:dw.catalog.Product" isError: false stderr: "toBeEmpty" - it: "should work with dw.order.Order class" request: jsonrpc: "2.0" id: "exec-order-class" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.order.Order" expect: response: jsonrpc: "2.0" id: "exec-order-class" result: content: - type: "text" text: "match:contains:## Package: dw.order" isError: false stderr: "toBeEmpty" - it: "should work with dw.system.Site class" request: jsonrpc: "2.0" id: "exec-site-class" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.system.Site" expect: response: jsonrpc: "2.0" id: "exec-site-class" result: content: - type: "text" text: "match:contains:# Class Site" isError: false stderr: "toBeEmpty" - it: "should work with dw.customer.Customer class" request: jsonrpc: "2.0" id: "exec-customer-class" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.customer.Customer" expect: response: jsonrpc: "2.0" id: "exec-customer-class" result: content: - type: "text" text: "match:contains:dw.customer.Customer" isError: false stderr: "toBeEmpty" # ================================================================================== # CORE SFCC CLASSES VALIDATION - TOP 15 MOST IMPORTANT CLASSES # ================================================================================== - it: "should return documentation for dw.catalog.Catalog class" request: jsonrpc: "2.0" id: "core-catalog" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Catalog" expect: response: jsonrpc: "2.0" id: "core-catalog" result: content: - type: "text" text: "match:contains:# Class Catalog" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.catalog.Category class" request: jsonrpc: "2.0" id: "core-category" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Category" expect: response: jsonrpc: "2.0" id: "core-category" result: content: - type: "text" text: "match:contains:## Package: dw.catalog" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.order.Basket class" request: jsonrpc: "2.0" id: "core-basket" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.order.Basket" expect: response: jsonrpc: "2.0" id: "core-basket" result: content: - type: "text" text: "match:contains:# Class Basket" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.order.ProductLineItem class" request: jsonrpc: "2.0" id: "core-lineitem" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.order.ProductLineItem" expect: response: jsonrpc: "2.0" id: "core-lineitem" result: content: - type: "text" text: "match:contains:ProductLineItem" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.customer.CustomerMgr class" request: jsonrpc: "2.0" id: "core-customermgr" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.customer.CustomerMgr" expect: response: jsonrpc: "2.0" id: "core-customermgr" result: content: - type: "text" text: "match:contains:CustomerMgr" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.system.Session class" request: jsonrpc: "2.0" id: "core-session" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.system.Session" expect: response: jsonrpc: "2.0" id: "core-session" result: content: - type: "text" text: "match:contains:# Class Session" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.system.Request class" request: jsonrpc: "2.0" id: "core-request" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.system.Request" expect: response: jsonrpc: "2.0" id: "core-request" result: content: - type: "text" text: "match:contains:## Package: dw.system" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.system.Response class" request: jsonrpc: "2.0" id: "core-response" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.system.Response" expect: response: jsonrpc: "2.0" id: "core-response" result: content: - type: "text" text: "match:contains:# Class Response" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.web.URLUtils class" request: jsonrpc: "2.0" id: "core-urlutils" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.web.URLUtils" expect: response: jsonrpc: "2.0" id: "core-urlutils" result: content: - type: "text" text: "match:contains:URLUtils" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.catalog.ProductMgr class" request: jsonrpc: "2.0" id: "core-productmgr" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.ProductMgr" expect: response: jsonrpc: "2.0" id: "core-productmgr" result: content: - type: "text" text: "match:contains:ProductMgr" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.order.OrderMgr class" request: jsonrpc: "2.0" id: "core-ordermgr" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.order.OrderMgr" expect: response: jsonrpc: "2.0" id: "core-ordermgr" result: content: - type: "text" text: "match:contains:# Class OrderMgr" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.order.BasketMgr class" request: jsonrpc: "2.0" id: "core-basketmgr" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.order.BasketMgr" expect: response: jsonrpc: "2.0" id: "core-basketmgr" result: content: - type: "text" text: "match:contains:BasketMgr" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.util.ArrayList class" request: jsonrpc: "2.0" id: "core-arraylist" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.util.ArrayList" expect: response: jsonrpc: "2.0" id: "core-arraylist" result: content: - type: "text" text: "match:contains:ArrayList" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.util.HashMap class" request: jsonrpc: "2.0" id: "core-hashmap" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.util.HashMap" expect: response: jsonrpc: "2.0" id: "core-hashmap" result: content: - type: "text" text: "match:contains:# Class HashMap" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.value.Money class" request: jsonrpc: "2.0" id: "core-money" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.value.Money" expect: response: jsonrpc: "2.0" id: "core-money" result: content: - type: "text" text: "match:contains:## Package: dw.value" isError: false stderr: "toBeEmpty" # ================================================================================== # EXTENDED SFCC CLASSES VALIDATION - 30 ADDITIONAL IMPORTANT CLASSES # ================================================================================== - it: "should return documentation for dw.content.ContentMgr class" request: jsonrpc: "2.0" id: "ext-contentmgr" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.content.ContentMgr" expect: response: jsonrpc: "2.0" id: "ext-contentmgr" result: content: - type: "text" text: "match:contains:ContentMgr" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.content.Content class" request: jsonrpc: "2.0" id: "ext-content" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.content.Content" expect: response: jsonrpc: "2.0" id: "ext-content" result: content: - type: "text" text: "match:contains:# Class Content" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.catalog.ProductSearchModel class" request: jsonrpc: "2.0" id: "ext-productsearch" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.ProductSearchModel" expect: response: jsonrpc: "2.0" id: "ext-productsearch" result: content: - type: "text" text: "match:contains:ProductSearchModel" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.catalog.SearchModel class" request: jsonrpc: "2.0" id: "ext-searchmodel" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.SearchModel" expect: response: jsonrpc: "2.0" id: "ext-searchmodel" result: content: - type: "text" text: "match:contains:SearchModel" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.catalog.PriceBook class" request: jsonrpc: "2.0" id: "ext-pricebook" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.PriceBook" expect: response: jsonrpc: "2.0" id: "ext-pricebook" result: content: - type: "text" text: "match:contains:PriceBook" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.catalog.Variant class" request: jsonrpc: "2.0" id: "ext-variant" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Variant" expect: response: jsonrpc: "2.0" id: "ext-variant" result: content: - type: "text" text: "match:contains:# Class Variant" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.order.PaymentInstrument class" request: jsonrpc: "2.0" id: "ext-paymentinstrument" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.order.PaymentInstrument" expect: response: jsonrpc: "2.0" id: "ext-paymentinstrument" result: content: - type: "text" text: "match:contains:PaymentInstrument" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.order.Shipment class" request: jsonrpc: "2.0" id: "ext-shipment" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.order.Shipment" expect: response: jsonrpc: "2.0" id: "ext-shipment" result: content: - type: "text" text: "match:contains:# Class Shipment" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.order.ShippingMethod class" request: jsonrpc: "2.0" id: "ext-shippingmethod" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.order.ShippingMethod" expect: response: jsonrpc: "2.0" id: "ext-shippingmethod" result: content: - type: "text" text: "match:contains:ShippingMethod" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.customer.CustomerGroup class" request: jsonrpc: "2.0" id: "ext-customergroup" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.customer.CustomerGroup" expect: response: jsonrpc: "2.0" id: "ext-customergroup" result: content: - type: "text" text: "match:contains:CustomerGroup" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.customer.Profile class" request: jsonrpc: "2.0" id: "ext-profile" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.customer.Profile" expect: response: jsonrpc: "2.0" id: "ext-profile" result: content: - type: "text" text: "match:contains:# Class Profile" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.system.Logger class" request: jsonrpc: "2.0" id: "ext-logger" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.system.Logger" expect: response: jsonrpc: "2.0" id: "ext-logger" result: content: - type: "text" text: "match:contains:# Class Logger" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.system.Transaction class" request: jsonrpc: "2.0" id: "ext-transaction" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.system.Transaction" expect: response: jsonrpc: "2.0" id: "ext-transaction" result: content: - type: "text" text: "match:contains:Transaction" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.web.Cookie class" request: jsonrpc: "2.0" id: "ext-cookie" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.web.Cookie" expect: response: jsonrpc: "2.0" id: "ext-cookie" result: content: - type: "text" text: "match:contains:# Class Cookie" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.web.Resource class" request: jsonrpc: "2.0" id: "ext-resource" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.web.Resource" expect: response: jsonrpc: "2.0" id: "ext-resource" result: content: - type: "text" text: "match:contains:Resource" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.web.Form class" request: jsonrpc: "2.0" id: "ext-form" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.web.Form" expect: response: jsonrpc: "2.0" id: "ext-form" result: content: - type: "text" text: "match:contains:# Class Form" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.util.Collection class" request: jsonrpc: "2.0" id: "ext-collection" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.util.Collection" expect: response: jsonrpc: "2.0" id: "ext-collection" result: content: - type: "text" text: "match:contains:Collection" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.util.Iterator class" request: jsonrpc: "2.0" id: "ext-iterator" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.util.Iterator" expect: response: jsonrpc: "2.0" id: "ext-iterator" result: content: - type: "text" text: "match:contains:Iterator" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.util.Calendar class" request: jsonrpc: "2.0" id: "ext-calendar" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.util.Calendar" expect: response: jsonrpc: "2.0" id: "ext-calendar" result: content: - type: "text" text: "match:contains:# Class Calendar" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.value.Quantity class" request: jsonrpc: "2.0" id: "ext-quantity" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.value.Quantity" expect: response: jsonrpc: "2.0" id: "ext-quantity" result: content: - type: "text" text: "match:contains:Quantity" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.net.HTTPClient class" request: jsonrpc: "2.0" id: "ext-httpclient" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.net.HTTPClient" expect: response: jsonrpc: "2.0" id: "ext-httpclient" result: content: - type: "text" text: "match:contains:HTTPClient" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.net.Mail class" request: jsonrpc: "2.0" id: "ext-mail" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.net.Mail" expect: response: jsonrpc: "2.0" id: "ext-mail" result: content: - type: "text" text: "match:contains:# Class Mail" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.io.File class" request: jsonrpc: "2.0" id: "ext-file" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.io.File" expect: response: jsonrpc: "2.0" id: "ext-file" result: content: - type: "text" text: "match:contains:# Class File" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.io.Reader class" request: jsonrpc: "2.0" id: "ext-reader" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.io.Reader" expect: response: jsonrpc: "2.0" id: "ext-reader" result: content: - type: "text" text: "match:contains:Reader" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.svc.ServiceRegistry class" request: jsonrpc: "2.0" id: "ext-serviceregistry" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.svc.ServiceRegistry" expect: response: jsonrpc: "2.0" id: "ext-serviceregistry" result: content: - type: "text" text: "match:contains:ServiceRegistry" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.svc.HTTPService class" request: jsonrpc: "2.0" id: "ext-httpservice" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.svc.HTTPService" expect: response: jsonrpc: "2.0" id: "ext-httpservice" result: content: - type: "text" text: "match:contains:HTTPService" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.campaign.Campaign class" request: jsonrpc: "2.0" id: "ext-campaign" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.campaign.Campaign" expect: response: jsonrpc: "2.0" id: "ext-campaign" result: content: - type: "text" text: "match:contains:# Class Campaign" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.campaign.Promotion class" request: jsonrpc: "2.0" id: "ext-promotion" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.campaign.Promotion" expect: response: jsonrpc: "2.0" id: "ext-promotion" result: content: - type: "text" text: "match:contains:Promotion" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.object.CustomObject class" request: jsonrpc: "2.0" id: "ext-customobject" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.object.CustomObject" expect: response: jsonrpc: "2.0" id: "ext-customobject" result: content: - type: "text" text: "match:contains:CustomObject" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.object.CustomObjectMgr class" request: jsonrpc: "2.0" id: "ext-customobjectmgr" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.object.CustomObjectMgr" expect: response: jsonrpc: "2.0" id: "ext-customobjectmgr" result: content: - type: "text" text: "match:contains:CustomObjectMgr" isError: false stderr: "toBeEmpty" # ================================================================================== # ADVANCED SFCC CLASSES VALIDATION - 30 MORE SPECIALIZED CLASSES # ================================================================================== - it: "should return documentation for dw.catalog.CatalogMgr class" request: jsonrpc: "2.0" id: "adv-catalogmgr" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.CatalogMgr" expect: response: jsonrpc: "2.0" id: "adv-catalogmgr" result: content: - type: "text" text: "match:contains:CatalogMgr" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.catalog.ProductOption class" request: jsonrpc: "2.0" id: "adv-productoption" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.ProductOption" expect: response: jsonrpc: "2.0" id: "adv-productoption" result: content: - type: "text" text: "match:contains:ProductOption" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.catalog.ProductOptionModel class" request: jsonrpc: "2.0" id: "adv-productoptionmodel" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.ProductOptionModel" expect: response: jsonrpc: "2.0" id: "adv-productoptionmodel" result: content: - type: "text" text: "match:contains:ProductOptionModel" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.catalog.Recommendation class" request: jsonrpc: "2.0" id: "adv-recommendation" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Recommendation" expect: response: jsonrpc: "2.0" id: "adv-recommendation" result: content: - type: "text" text: "match:contains:# Class Recommendation" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.catalog.ProductAttributeModel class" request: jsonrpc: "2.0" id: "adv-productattributemodel" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.ProductAttributeModel" expect: response: jsonrpc: "2.0" id: "adv-productattributemodel" result: content: - type: "text" text: "match:contains:ProductAttributeModel" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.order.LineItem class" request: jsonrpc: "2.0" id: "adv-lineitem" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.order.LineItem" expect: response: jsonrpc: "2.0" id: "adv-lineitem" result: content: - type: "text" text: "match:contains:# Class LineItem" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.order.OrderAddress class" request: jsonrpc: "2.0" id: "adv-orderaddress" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.order.OrderAddress" expect: response: jsonrpc: "2.0" id: "adv-orderaddress" result: content: - type: "text" text: "match:contains:OrderAddress" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.order.PaymentMethod class" request: jsonrpc: "2.0" id: "adv-paymentmethod" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.order.PaymentMethod" expect: response: jsonrpc: "2.0" id: "adv-paymentmethod" result: content: - type: "text" text: "match:contains:PaymentMethod" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.order.PaymentMgr class" request: jsonrpc: "2.0" id: "adv-paymentmgr" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.order.PaymentMgr" expect: response: jsonrpc: "2.0" id: "adv-paymentmgr" result: content: - type: "text" text: "match:contains:PaymentMgr" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.order.ShippingMgr class" request: jsonrpc: "2.0" id: "adv-shippingmgr" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.order.ShippingMgr" expect: response: jsonrpc: "2.0" id: "adv-shippingmgr" result: content: - type: "text" text: "match:contains:ShippingMgr" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.customer.AddressBook class" request: jsonrpc: "2.0" id: "adv-addressbook" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.customer.AddressBook" expect: response: jsonrpc: "2.0" id: "adv-addressbook" result: content: - type: "text" text: "match:contains:AddressBook" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.customer.CustomerAddress class" request: jsonrpc: "2.0" id: "adv-customeraddress" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.customer.CustomerAddress" expect: response: jsonrpc: "2.0" id: "adv-customeraddress" result: content: - type: "text" text: "match:contains:CustomerAddress" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.customer.CustomerPaymentInstrument class" request: jsonrpc: "2.0" id: "adv-custpaymentinstrument" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.customer.CustomerPaymentInstrument" expect: response: jsonrpc: "2.0" id: "adv-custpaymentinstrument" result: content: - type: "text" text: "match:contains:CustomerPaymentInstrument" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.customer.Wallet class" request: jsonrpc: "2.0" id: "adv-wallet" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.customer.Wallet" expect: response: jsonrpc: "2.0" id: "adv-wallet" result: content: - type: "text" text: "match:contains:# Class Wallet" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.system.Pipeline class" request: jsonrpc: "2.0" id: "adv-pipeline" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.system.Pipeline" expect: response: jsonrpc: "2.0" id: "adv-pipeline" result: content: - type: "text" text: "match:contains:Pipeline" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.system.HookMgr class" request: jsonrpc: "2.0" id: "adv-hookmgr" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.system.HookMgr" expect: response: jsonrpc: "2.0" id: "adv-hookmgr" result: content: - type: "text" text: "match:contains:HookMgr" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.system.CacheMgr class" request: jsonrpc: "2.0" id: "adv-cachemgr" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.system.CacheMgr" expect: response: jsonrpc: "2.0" id: "adv-cachemgr" result: content: - type: "text" text: "match:contains:CacheMgr" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.web.Forms class" request: jsonrpc: "2.0" id: "adv-forms" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.web.Forms" expect: response: jsonrpc: "2.0" id: "adv-forms" result: content: - type: "text" text: "match:contains:# Class Forms" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.web.PageMetaData class" request: jsonrpc: "2.0" id: "adv-pagemetadata" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.web.PageMetaData" expect: response: jsonrpc: "2.0" id: "adv-pagemetadata" result: content: - type: "text" text: "match:contains:PageMetaData" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.web.PagingModel class" request: jsonrpc: "2.0" id: "adv-pagingmodel" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.web.PagingModel" expect: response: jsonrpc: "2.0" id: "adv-pagingmodel" result: content: - type: "text" text: "match:contains:PagingModel" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.util.StringUtils class" request: jsonrpc: "2.0" id: "adv-stringutils" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.util.StringUtils" expect: response: jsonrpc: "2.0" id: "adv-stringutils" result: content: - type: "text" text: "match:contains:StringUtils" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.util.Map class" request: jsonrpc: "2.0" id: "adv-map" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.util.Map" expect: response: jsonrpc: "2.0" id: "adv-map" result: content: - type: "text" text: "match:contains:# Class Map" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.util.Locale class" request: jsonrpc: "2.0" id: "adv-locale" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.util.Locale" expect: response: jsonrpc: "2.0" id: "adv-locale" result: content: - type: "text" text: "match:contains:# Class Locale" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.util.List class" request: jsonrpc: "2.0" id: "adv-list" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.util.List" expect: response: jsonrpc: "2.0" id: "adv-list" result: content: - type: "text" text: "match:contains:# Class List" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.value.EnumValue class" request: jsonrpc: "2.0" id: "adv-enumvalue" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.value.EnumValue" expect: response: jsonrpc: "2.0" id: "adv-enumvalue" result: content: - type: "text" text: "match:contains:EnumValue" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.net.FTPClient class" request: jsonrpc: "2.0" id: "adv-ftpclient" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.net.FTPClient" expect: response: jsonrpc: "2.0" id: "adv-ftpclient" result: content: - type: "text" text: "match:contains:FTPClient" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.net.SFTPClient class" request: jsonrpc: "2.0" id: "adv-sftpclient" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.net.SFTPClient" expect: response: jsonrpc: "2.0" id: "adv-sftpclient" result: content: - type: "text" text: "match:contains:SFTPClient" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.io.CSVStreamWriter class" request: jsonrpc: "2.0" id: "adv-csvstreamwriter" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.io.CSVStreamWriter" expect: response: jsonrpc: "2.0" id: "adv-csvstreamwriter" result: content: - type: "text" text: "match:contains:CSVStreamWriter" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.io.XMLStreamWriter class" request: jsonrpc: "2.0" id: "adv-xmlstreamwriter" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.io.XMLStreamWriter" expect: response: jsonrpc: "2.0" id: "adv-xmlstreamwriter" result: content: - type: "text" text: "match:contains:XMLStreamWriter" isError: false stderr: "toBeEmpty" - it: "should return documentation for dw.system.Status class" request: jsonrpc: "2.0" id: "adv-status" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.system.Status" expect: response: jsonrpc: "2.0" id: "adv-status" result: content: - type: "text" text: "match:contains:# Class Status" isError: false stderr: "toBeEmpty" # ================================================================================== # DOCUMENTATION CONTENT VALIDATION # ================================================================================== - it: "should include class description in Order documentation" request: jsonrpc: "2.0" id: "exec-order-description" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.order.Order" expect: response: jsonrpc: "2.0" id: "exec-order-description" result: content: - type: "text" text: "match:contains:## Description" isError: false stderr: "toBeEmpty" - it: "should include constants in Order documentation" request: jsonrpc: "2.0" id: "exec-order-constants" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.order.Order" expect: response: jsonrpc: "2.0" id: "exec-order-constants" result: content: - type: "text" text: "match:contains:## Constants" isError: false stderr: "toBeEmpty" - it: "should include constructor summary in Order documentation" request: jsonrpc: "2.0" id: "exec-order-constructors" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.order.Order" expect: response: jsonrpc: "2.0" id: "exec-order-constructors" result: content: - type: "text" text: "match:contains:## Constructor Summary" isError: false stderr: "toBeEmpty" - it: "should include method signatures in documentation" request: jsonrpc: "2.0" id: "exec-method-signatures" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Product" expect: response: jsonrpc: "2.0" id: "exec-method-signatures" result: content: - type: "text" text: "match:contains:**Signature:**" isError: false stderr: "toBeEmpty" - it: "should include property types in documentation" request: jsonrpc: "2.0" id: "exec-property-types" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Product" expect: response: jsonrpc: "2.0" id: "exec-property-types" result: content: - type: "text" text: "match:contains:**Type:**" isError: false stderr: "toBeEmpty" - it: "should include return valid markdown format" request: jsonrpc: "2.0" id: "exec-markdown-format" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Product" expect: response: jsonrpc: "2.0" id: "exec-markdown-format" result: content: - type: "text" text: "match:regex:[\\s\\S]*#{1,6}[\\s\\S]*" # Contains markdown headers isError: false stderr: "toBeEmpty" # ================================================================================== # ERROR HANDLING TESTS # ================================================================================== - it: "should handle invalid class names gracefully" request: jsonrpc: "2.0" id: "error-invalid-class" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "NonExistentClass" expect: response: jsonrpc: "2.0" id: "error-invalid-class" result: content: - type: "text" text: "match:contains:Error" isError: true stderr: "toBeEmpty" - it: "should handle invalid class with specific error message" request: jsonrpc: "2.0" id: "error-invalid-specific" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "InvalidClassName" expect: response: jsonrpc: "2.0" id: "error-invalid-specific" result: content: - type: "text" text: "match:contains:not found" isError: true stderr: "toBeEmpty" - it: "should handle empty class name" request: jsonrpc: "2.0" id: "error-empty-class" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "" expect: response: jsonrpc: "2.0" id: "error-empty-class" result: content: - type: "text" text: "match:contains:non-empty string" isError: true stderr: "toBeEmpty" - it: "should handle missing className parameter with error response" request: jsonrpc: "2.0" id: "error-missing-param" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: {} expect: response: jsonrpc: "2.0" id: "error-missing-param" result: content: - type: "text" text: "match:contains:non-empty string" isError: true stderr: "toBeEmpty" - it: "should handle null className gracefully" request: jsonrpc: "2.0" id: "error-null-class" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: null expect: response: jsonrpc: "2.0" id: "error-null-class" result: content: - type: "text" text: "match:contains:Error" isError: true stderr: "toBeEmpty" - it: "should handle numeric className gracefully" request: jsonrpc: "2.0" id: "error-numeric-class" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: 123 expect: response: jsonrpc: "2.0" id: "error-numeric-class" result: content: - type: "text" text: "match:contains:Error" isError: true stderr: "toBeEmpty" # ================================================================================== # EDGE CASE TESTING # ================================================================================== - it: "should handle whitespace-only className" request: jsonrpc: "2.0" id: "edge-whitespace" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: " " expect: response: jsonrpc: "2.0" id: "edge-whitespace" result: content: - type: "text" text: "match:contains:Error" isError: true stderr: "toBeEmpty" - it: "should handle class names with special characters" request: jsonrpc: "2.0" id: "edge-special-chars" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Product@#$" expect: response: jsonrpc: "2.0" id: "edge-special-chars" result: content: - type: "text" text: "match:contains:Error" isError: true stderr: "toBeEmpty" - it: "should handle very long invalid class names" request: jsonrpc: "2.0" id: "edge-long-invalid" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.very.long.nonexistent.package.that.does.not.exist.anywhere.InvalidClass" expect: response: jsonrpc: "2.0" id: "edge-long-invalid" result: content: - type: "text" text: "match:contains:Error" isError: true stderr: "toBeEmpty" # ================================================================================== # COMPREHENSIVE CONTENT VALIDATION # ================================================================================== - it: "should return substantial documentation content for Product class" request: jsonrpc: "2.0" id: "content-substantial" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Product" expect: response: jsonrpc: "2.0" id: "content-substantial" result: content: - type: "text" text: "match:regex:[\\s\\S]{5000,}" # At least 5000 characters isError: false stderr: "toBeEmpty" - it: "should include multiple sections in complete documentation" request: jsonrpc: "2.0" id: "content-multiple-sections" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Product" expect: response: jsonrpc: "2.0" id: "content-multiple-sections" result: content: - type: "text" text: "match:contains:## Properties" isError: false stderr: "toBeEmpty" - it: "should include detailed method information" request: jsonrpc: "2.0" id: "content-method-info" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Product" expect: response: jsonrpc: "2.0" id: "content-method-info" result: content: - type: "text" text: "match:contains:**Parameters:**" isError: false stderr: "toBeEmpty" - it: "should include return value information" request: jsonrpc: "2.0" id: "content-return-info" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Product" expect: response: jsonrpc: "2.0" id: "content-return-info" result: content: - type: "text" text: "match:contains:**Returns:**" isError: false stderr: "toBeEmpty" # ================================================================================== # PERFORMANCE AND CONSISTENCY VALIDATION # ================================================================================== - it: "should have consistent response structure across different classes" request: jsonrpc: "2.0" id: "consistency-structure" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.order.Order" expect: response: jsonrpc: "2.0" id: "consistency-structure" result: content: - type: "text" text: "match:type:string" isError: false stderr: "toBeEmpty" - it: "should not include isError field for successful responses" request: jsonrpc: "2.0" id: "success-no-error-flag" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Product" expect: response: jsonrpc: "2.0" id: "success-no-error-flag" result: content: "match:type:array" isError: false stderr: "toBeEmpty" # ================================================================================== # PERFORMANCE TIMING TESTS - CI-FRIENDLY # ================================================================================== - it: "should respond within reasonable time for Product class lookup" request: jsonrpc: "2.0" id: "perf-product-timing" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Product" expect: response: jsonrpc: "2.0" id: "perf-product-timing" result: content: - type: "text" text: "match:contains:dw.catalog.Product" isError: false performance: maxResponseTime: "500ms" # CI-friendly timeout for documentation lookup stderr: "toBeEmpty" - it: "should respond within reasonable time for Order class lookup" request: jsonrpc: "2.0" id: "perf-order-timing" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.order.Order" expect: response: jsonrpc: "2.0" id: "perf-order-timing" result: content: - type: "text" text: "match:contains:dw.order.Order" isError: false performance: maxResponseTime: "500ms" # CI-friendly timeout for documentation lookup stderr: "toBeEmpty" - it: "should respond within reasonable time for Customer class lookup" request: jsonrpc: "2.0" id: "perf-customer-timing" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.customer.Customer" expect: response: jsonrpc: "2.0" id: "perf-customer-timing" result: content: - type: "text" text: "match:contains:dw.customer.Customer" isError: false performance: maxResponseTime: "500ms" # CI-friendly timeout for documentation lookup stderr: "toBeEmpty" - it: "should handle error cases quickly" request: jsonrpc: "2.0" id: "perf-error-timing" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "NonExistentClass" expect: response: jsonrpc: "2.0" id: "perf-error-timing" result: content: - type: "text" text: "match:contains:Error" isError: true performance: maxResponseTime: "300ms" # Error handling should be faster stderr: "toBeEmpty" - it: "should handle validation errors very quickly" request: jsonrpc: "2.0" id: "perf-validation-timing" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "" expect: response: jsonrpc: "2.0" id: "perf-validation-timing" result: content: - type: "text" text: "match:contains:non-empty string" isError: true performance: maxResponseTime: "200ms" # Validation errors should be very fast stderr: "toBeEmpty" # ================================================================================== # RESPONSE FORMAT VALIDATION # ================================================================================== - it: "should return proper content array structure" request: jsonrpc: "2.0" id: "format-content-array" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Product" expect: response: jsonrpc: "2.0" id: "format-content-array" result: content: "match:arrayLength:1" isError: false stderr: "toBeEmpty" - it: "should return content with proper type field" request: jsonrpc: "2.0" id: "format-content-type" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "dw.catalog.Product" expect: response: jsonrpc: "2.0" id: "format-content-type" result: content: - type: "text" text: "match:type:string" isError: false stderr: "toBeEmpty" - it: "should maintain consistent error response format" request: jsonrpc: "2.0" id: "format-error-consistent" method: "tools/call" params: name: "get_sfcc_class_documentation" arguments: className: "InvalidClass" expect: response: jsonrpc: "2.0" id: "format-error-consistent" result: content: - type: "text" text: "match:type:string" isError: true stderr: "toBeEmpty" ``` -------------------------------------------------------------------------------- /docs/dw_catalog/Product.md: -------------------------------------------------------------------------------- ```markdown ## Package: dw.catalog # Class Product ## Inheritance Hierarchy - Object - dw.object.PersistentObject - dw.object.ExtensibleObject - dw.catalog.Product ## Description Represents a product in Commerce Cloud Digital. Products are identified by a unique product ID, sometimes called the SKU. There are several different types of product: Simple product Master products: This type of product defines a template for a set of related products which differ only by a set of defined "variation attributes", such as size or color. Master products are not orderable themselves. The variation information for a master product is available through its ProductVariationModel. Variant: Variants are the actual orderable products that are related to a master product. Each variant of a master product has a unique set of values for the defined variation attributes. Variants are said to be "mastered" by the corresponding master product. Option products: Option products define additional options, such as a warranty, which can be purchased for a defined price at the time the product is purchased. The option information for an option product is available through its ProductOptionModel. Product-sets: A product-set is a set of products which the merchant can sell as a collection in the storefront, for example an outfit of clothes. Product-sets are not orderable and therefore do not define prices. They exist only to group the products together in the storefront UI. Members of the set are called "product-set-products". Products bundles: A collection of products which can be ordered as a single unit and therefore can define its own price and inventory record. Product price and availability information are retrievable through getPriceModel() and getAvailabilityModel() respectively. Attribute information is retrievable through getAttributeModel(). Products may reference other products, either as recommendations or product links. This class provides the methods for retrieving these referenced products. Products belong to a catalog (the "owning" catalog) and are assigned to categories in other catalogs. Products assigned to categories in the site catalog are typically orderable on the site. Any API method which returns products will return an instance of a Variant for variant products. This subclass contains methods which are specific to this type of product. ## Properties ### activeData **Type:** ProductActiveData (Read Only) The active data for this product, for the current site. ### allCategories **Type:** Collection (Read Only) A collection of all categories to which this product is assigned. ### allCategoryAssignments **Type:** Collection (Read Only) All category assignments for this product in any catalog. ### allIncomingProductLinks **Type:** Collection (Read Only) All incoming ProductLinks. ### allProductLinks **Type:** Collection (Read Only) All outgoing ProductLinks. ### assignedToSiteCatalog **Type:** boolean (Read Only) Returns true if the product is assigned to the current site (via the site catalog), otherwise false is returned. In case of the product being a variant, the variant will be considered as assigned if its master, one of the variation groups it is in or itself is assigned to the site catalog. In case this is triggered for a variation group the variation group is considered as assigned if its master or itself is assigned. ### attributeModel **Type:** ProductAttributeModel (Read Only) Returns this product's ProductAttributeModel, which makes access to the product attribute information convenient. The model is calculated based on the product attributes assigned to this product's classification category (or any of it's ancestors) and the global attribute definitions for the system object type 'Product'. If this product has no classification category, the attribute model is calculated on the global attribute definitions only. If this product is a variant, then the attribute model is calculated based on the classification category of its corresponding master product. ### availabilityModel **Type:** ProductAvailabilityModel (Read Only) The availability model, which can be used to determine availability information for a product. ### available **Type:** boolean (Read Only) Identifies if the product is available. ### availableFlag **Type:** boolean Identifies if the product is available. ### brand **Type:** String (Read Only) The Brand of the product. ### bundle **Type:** boolean (Read Only) Identifies if this product instance is a product bundle. ### bundled **Type:** boolean (Read Only) Identifies if this product instance is bundled within at least one product bundle. ### bundledProducts **Type:** Collection (Read Only) A collection containing all products that participate in the product bundle. ### bundles **Type:** Collection (Read Only) A collection of all bundles in which this product is included. The method only returns bundles assigned to the current site. ### categories **Type:** Collection (Read Only) A collection of all categories to which this product is assigned and which are also available through the current site. ### categorized **Type:** boolean (Read Only) Identifies if this product is bound to at least one catalog category. ### categoryAssignments **Type:** Collection (Read Only) A collection of category assignments for this product in the current site catalog. ### classificationCategory **Type:** Category (Read Only) The classification category associated with this Product. A product has a single classification category which may or may not be in the site catalog. The classification category defines the attribute set of the product. See getAttributeModel() for how the classification category is used. ### EAN **Type:** String (Read Only) The European Article Number of the product. ### facebookEnabled **Type:** boolean (Read Only) Identifies if the product is Facebook enabled. ### ID **Type:** String (Read Only) The ID of the product. ### image **Type:** MediaFile (Read Only) The product's image. ### incomingProductLinks **Type:** Collection (Read Only) Returns incoming ProductLinks, where the source product is a site product. ### longDescription **Type:** MarkupText (Read Only) The product's long description in the current locale. ### manufacturerName **Type:** String (Read Only) The name of the product manufacturer. ### manufacturerSKU **Type:** String (Read Only) The value of the manufacturer's stock keeping unit. ### master **Type:** boolean (Read Only) Identifies if this product instance is a product master. ### minOrderQuantity **Type:** Quantity (Read Only) The minimum order quantity for this product. ### name **Type:** String (Read Only) The name of the product in the current locale. ### online **Type:** boolean (Read Only) The online status of the product. The online status is calculated from the online status flag and the onlineFrom onlineTo dates defined for the product. ### onlineCategories **Type:** Collection (Read Only) A collection of all currently online categories to which this product is assigned and which are also available through the current site. A category is currently online if its online flag equals true and the current site date is within the date range defined by the onlineFrom and onlineTo attributes. ### onlineFlag **Type:** boolean (Read Only) The online status flag of the product. ### onlineFrom **Type:** Date (Read Only) The date from which the product is online or valid. ### onlineTo **Type:** Date (Read Only) The date until which the product is online or valid. ### optionModel **Type:** ProductOptionModel (Read Only) The product's option model. The option values selections are initialized with the values defined for the product, or the default values defined for the option. ### optionProduct **Type:** boolean (Read Only) Identifies if the product has options. ### orderableRecommendations **Type:** Collection (Read Only) A list of outgoing recommendations for this product. This method behaves similarly to getRecommendations() but additionally filters out recommendations for which the target product is unorderable according to its product availability model. ### pageDescription **Type:** String (Read Only) Returns product's page description in the default locale. ### pageKeywords **Type:** String (Read Only) The product's page keywords in the default locale. ### pageMetaTags **Type:** Array (Read Only) All page meta tags, defined for this instance for which content can be generated. The meta tag content is generated based on the product detail page meta tag context and rules. The rules are obtained from the current product context or inherited from variation groups, master product, the primary category, up to the root category. ### pageTitle **Type:** String (Read Only) The product's page title in the default locale. ### pageURL **Type:** String (Read Only) The product's page URL in the default locale. ### pinterestEnabled **Type:** boolean (Read Only) Identifies if the product is Pinterest enabled. ### priceModel **Type:** ProductPriceModel (Read Only) The price model, which can be used to retrieve a price for this product. ### primaryCategory **Type:** Category (Read Only) The primary category of the product within the current site catalog. ### primaryCategoryAssignment **Type:** CategoryAssignment (Read Only) The category assignment to the primary category in the current site catalog or null if no primary category is defined within the current site catalog. ### product **Type:** boolean (Read Only) Returns 'true' if the instance represents a product. Returns 'false' if the instance represents a product set. ### productLinks **Type:** Collection (Read Only) All outgoing ProductLinks, where the target product is also available in the current site. The ProductLinks are unsorted. ### productSet **Type:** boolean (Read Only) Returns 'true' if the instance represents a product set, otherwise 'false'. ### productSetProduct **Type:** boolean (Read Only) Returns true if this product is part of any product set, otherwise false. ### productSetProducts **Type:** Collection (Read Only) A collection of all products which are assigned to this product and which are also available through the current site. If this product does not represent a product set then an empty collection will be returned. ### productSets **Type:** Collection (Read Only) A collection of all product sets in which this product is included. The method only returns product sets assigned to the current site. ### recommendations **Type:** Collection (Read Only) The outgoing recommendations for this product which belong to the site catalog. If this product is not assigned to the site catalog, or there is no site catalog, an empty collection is returned. Only recommendations for which the target product exists and is assigned to the site catalog are returned. The recommendations are sorted by their explicitly set order. ### retailSet **Type:** boolean (Read Only) Identifies if this product instance is part of a retail set. ### searchable **Type:** boolean (Read Only) Identifies if the product is searchable. ### searchableFlag **Type:** boolean (Read Only) Returns, whether the product is currently searchable. ### searchableIfUnavailableFlag **Type:** Product (Read Only) The searchable status of the Product if unavailable. Besides true or false, the return value null indicates that the value is not set. ### searchPlacement **Type:** Number (Read Only) The product's search placement classification. The higher the numeric product placement value, the more relevant is the product when sorting search results. The range of numeric placement values is defined in the meta data of object type 'Product' and can therefore be customized. ### searchRank **Type:** Number (Read Only) The product's search rank. The higher the numeric product rank, the more relevant is the product when sorting search results. The range of numeric rank values is defined in the meta data of object type 'Product' and can therefore be customized. ### shortDescription **Type:** MarkupText (Read Only) The product's short description in the current locale. ### siteMapChangeFrequency **Type:** String (Read Only) The product's change frequency needed for the sitemap creation. ### siteMapIncluded **Type:** Number (Read Only) The status if the product is included into the sitemap. ### siteMapPriority **Type:** Number (Read Only) The product's priority needed for the sitemap creation. ### siteProduct **Type:** boolean (Read Only) Returns 'true' if the product is assigned to the current site (via the site catalog), otherwise 'false' is returned. ### stepQuantity **Type:** Quantity (Read Only) The steps in which the order amount of the product can be increased. ### storeReceiptName **Type:** String (Read Only) The store receipt name of the product in the current locale. ### storeTaxClass **Type:** String (Read Only) The store tax class ID. This is an optional override for in-store tax calculation. ### taxClassID **Type:** String (Read Only) The ID of the product's tax class, by resolving the Global Preference setting selected. If the Localized Tax Class setting under Global Preferences -> Products is selected, the localizedTaxClassID attribute value will be returned, else the legacy taxClassID attribute value will be returned. ### template **Type:** String (Read Only) The name of the product's rendering template. ### thumbnail **Type:** MediaFile (Read Only) The product's thumbnail image. ### unit **Type:** String (Read Only) The product's sales unit. ### unitQuantity **Type:** Quantity (Read Only) The product's unit quantity. ### UPC **Type:** String (Read Only) The Universal Product Code of the product. ### variant **Type:** boolean (Read Only) Identifies if this product instance is mastered by a product master. ### variants **Type:** Collection (Read Only) A collection of all variants assigned to this variation master or variation group product. All variants are returned regardless of whether they are online or offline. If this product does not represent a variation master or variation group product then an empty collection is returned. ### variationGroup **Type:** boolean (Read Only) Identifies if this product instance is a variation group product. ### variationGroups **Type:** Collection (Read Only) A collection of all variation groups assigned to this variation master product. All variation groups are returned regardless of whether they are online or offline. If this product does not represent a variation master product then an empty collection is returned. ### variationModel **Type:** ProductVariationModel (Read Only) The variation model of this product. If this product is a master product, then the returned model will encapsulate all the information about its variation attributes and variants. If this product is a variant product, then the returned model will encapsulate all the same information, but additionally pre-select all the variation attribute values of this variant. (See ProductVariationModel for details on what "selected" means.) If this product is neither a master product or a variation product, then a model will be returned but will be essentially empty and not useful for any particular purpose. ## Constructor Summary ## Method Summary ### assignedToCategory **Signature:** `assignedToCategory(category : Category) : boolean` Identifies if this product is bound to the specified catalog category. ### getActiveData **Signature:** `getActiveData() : ProductActiveData` Returns the active data for this product, for the current site. ### getAllCategories **Signature:** `getAllCategories() : Collection` Returns a collection of all categories to which this product is assigned. ### getAllCategoryAssignments **Signature:** `getAllCategoryAssignments() : Collection` Returns all category assignments for this product in any catalog. ### getAllIncomingProductLinks **Signature:** `getAllIncomingProductLinks() : Collection` Returns all incoming ProductLinks. ### getAllIncomingProductLinks **Signature:** `getAllIncomingProductLinks(type : Number) : Collection` Returns all incoming ProductLinks of a specific type. ### getAllProductLinks **Signature:** `getAllProductLinks() : Collection` Returns all outgoing ProductLinks. ### getAllProductLinks **Signature:** `getAllProductLinks(type : Number) : Collection` Returns all outgoing ProductLinks of a specific type. ### getAllRecommendations **Signature:** `getAllRecommendations(catalog : Catalog) : Collection` Returns the outgoing recommendations for this product which belong to the specified catalog. ### getAllRecommendations **Signature:** `getAllRecommendations(catalog : Catalog, type : Number) : Collection` Returns the outgoing recommendations for this product which are of the specified type and which belong to the specified catalog. ### getAttributeModel **Signature:** `getAttributeModel() : ProductAttributeModel` Returns this product's ProductAttributeModel, which makes access to the product attribute information convenient. ### getAvailabilityModel **Signature:** `getAvailabilityModel() : ProductAvailabilityModel` Returns the availability model, which can be used to determine availability information for a product. ### getAvailabilityModel **Signature:** `getAvailabilityModel(list : ProductInventoryList) : ProductAvailabilityModel` Returns the availability model of the given inventory list, which can be used to determine availability information for a product. ### getAvailableFlag **Signature:** `getAvailableFlag() : boolean` Identifies if the product is available. ### getBrand **Signature:** `getBrand() : String` Returns the Brand of the product. ### getBundledProductQuantity **Signature:** `getBundledProductQuantity(aProduct : Product) : Quantity` Returns the quantity of the specified product within the bundle. ### getBundledProducts **Signature:** `getBundledProducts() : Collection` Returns a collection containing all products that participate in the product bundle. ### getBundles **Signature:** `getBundles() : Collection` Returns a collection of all bundles in which this product is included. ### getCategories **Signature:** `getCategories() : Collection` Returns a collection of all categories to which this product is assigned and which are also available through the current site. ### getCategoryAssignment **Signature:** `getCategoryAssignment(category : Category) : CategoryAssignment` Returns the category assignment for a specific category. ### getCategoryAssignments **Signature:** `getCategoryAssignments() : Collection` Returns a collection of category assignments for this product in the current site catalog. ### getClassificationCategory **Signature:** `getClassificationCategory() : Category` Returns the classification category associated with this Product. ### getEAN **Signature:** `getEAN() : String` Returns the European Article Number of the product. ### getID **Signature:** `getID() : String` Returns the ID of the product. ### getImage **Signature:** `getImage() : MediaFile` Returns the product's image. ### getImage **Signature:** `getImage(viewtype : String, index : Number) : MediaFile` The method calls getImages(String) and returns the image at the specific index. ### getImage **Signature:** `getImage(viewtype : String) : MediaFile` The method calls getImages(String) and returns the first image. ### getImages **Signature:** `getImages(viewtype : String) : List` Returns all images assigned to this product for a specific view type, e.g. ### getIncomingProductLinks **Signature:** `getIncomingProductLinks() : Collection` Returns incoming ProductLinks, where the source product is a site product. ### getIncomingProductLinks **Signature:** `getIncomingProductLinks(type : Number) : Collection` Returns incoming ProductLinks, where the source product is a site product of a specific type. ### getLongDescription **Signature:** `getLongDescription() : MarkupText` Returns the product's long description in the current locale. ### getManufacturerName **Signature:** `getManufacturerName() : String` Returns the name of the product manufacturer. ### getManufacturerSKU **Signature:** `getManufacturerSKU() : String` Returns the value of the manufacturer's stock keeping unit. ### getMinOrderQuantity **Signature:** `getMinOrderQuantity() : Quantity` Returns the minimum order quantity for this product. ### getName **Signature:** `getName() : String` Returns the name of the product in the current locale. ### getOnlineCategories **Signature:** `getOnlineCategories() : Collection` Returns a collection of all currently online categories to which this product is assigned and which are also available through the current site. ### getOnlineFlag **Signature:** `getOnlineFlag() : boolean` Returns the online status flag of the product. ### getOnlineFrom **Signature:** `getOnlineFrom() : Date` Returns the date from which the product is online or valid. ### getOnlineTo **Signature:** `getOnlineTo() : Date` Returns the date until which the product is online or valid. ### getOptionModel **Signature:** `getOptionModel() : ProductOptionModel` Returns the product's option model. ### getOrderableRecommendations **Signature:** `getOrderableRecommendations() : Collection` Returns a list of outgoing recommendations for this product. ### getOrderableRecommendations **Signature:** `getOrderableRecommendations(type : Number) : Collection` Returns a list of outgoing recommendations for this product. ### getPageDescription **Signature:** `getPageDescription() : String` Returns product's page description in the default locale. ### getPageKeywords **Signature:** `getPageKeywords() : String` Returns the product's page keywords in the default locale. ### getPageMetaTag **Signature:** `getPageMetaTag(id : String) : PageMetaTag` Returns the page meta tag for the specified id. ### getPageMetaTags **Signature:** `getPageMetaTags() : Array` Returns all page meta tags, defined for this instance for which content can be generated. ### getPageTitle **Signature:** `getPageTitle() : String` Returns the product's page title in the default locale. ### getPageURL **Signature:** `getPageURL() : String` Returns the product's page URL in the default locale. ### getPriceModel **Signature:** `getPriceModel() : ProductPriceModel` Returns the price model, which can be used to retrieve a price for this product. ### getPriceModel **Signature:** `getPriceModel(optionModel : ProductOptionModel) : ProductPriceModel` Returns the price model based on the specified optionModel. ### getPrimaryCategory **Signature:** `getPrimaryCategory() : Category` Returns the primary category of the product within the current site catalog. ### getPrimaryCategoryAssignment **Signature:** `getPrimaryCategoryAssignment() : CategoryAssignment` Returns the category assignment to the primary category in the current site catalog or null if no primary category is defined within the current site catalog. ### getProductLinks **Signature:** `getProductLinks() : Collection` Returns all outgoing ProductLinks, where the target product is also available in the current site. ### getProductLinks **Signature:** `getProductLinks(type : Number) : Collection` Returns all outgoing ProductLinks of a specific type, where the target product is also available in the current site. ### getProductSetProducts **Signature:** `getProductSetProducts() : Collection` Returns a collection of all products which are assigned to this product and which are also available through the current site. ### getProductSets **Signature:** `getProductSets() : Collection` Returns a collection of all product sets in which this product is included. ### getRecommendations **Signature:** `getRecommendations() : Collection` Returns the outgoing recommendations for this product which belong to the site catalog. ### getRecommendations **Signature:** `getRecommendations(type : Number) : Collection` Returns the outgoing recommendations for this product which are of the specified type and which belong to the site catalog. ### getSearchableFlag **Signature:** `getSearchableFlag() : boolean` Returns, whether the product is currently searchable. ### getSearchableIfUnavailableFlag **Signature:** `getSearchableIfUnavailableFlag() : boolean` Returns the searchable status of the Product if unavailable. ### getSearchPlacement **Signature:** `getSearchPlacement() : Number` Returns the product's search placement classification. ### getSearchRank **Signature:** `getSearchRank() : Number` Returns the product's search rank. ### getShortDescription **Signature:** `getShortDescription() : MarkupText` Returns the product's short description in the current locale. ### getSiteMapChangeFrequency **Signature:** `getSiteMapChangeFrequency() : String` Returns the product's change frequency needed for the sitemap creation. ### getSiteMapIncluded **Signature:** `getSiteMapIncluded() : Number` Returns the status if the product is included into the sitemap. ### getSiteMapPriority **Signature:** `getSiteMapPriority() : Number` Returns the product's priority needed for the sitemap creation. ### getStepQuantity **Signature:** `getStepQuantity() : Quantity` Returns the steps in which the order amount of the product can be increased. ### getStoreReceiptName **Signature:** `getStoreReceiptName() : String` Returns the store receipt name of the product in the current locale. ### getStoreTaxClass **Signature:** `getStoreTaxClass() : String` Returns the store tax class ID. ### getTaxClassID **Signature:** `getTaxClassID() : String` Returns the ID of the product's tax class, by resolving the Global Preference setting selected. ### getTemplate **Signature:** `getTemplate() : String` Returns the name of the product's rendering template. ### getThumbnail **Signature:** `getThumbnail() : MediaFile` Returns the product's thumbnail image. ### getUnit **Signature:** `getUnit() : String` Returns the product's sales unit. ### getUnitQuantity **Signature:** `getUnitQuantity() : Quantity` Returns the product's unit quantity. ### getUPC **Signature:** `getUPC() : String` Returns the Universal Product Code of the product. ### getVariants **Signature:** `getVariants() : Collection` Returns a collection of all variants assigned to this variation master or variation group product. ### getVariationGroups **Signature:** `getVariationGroups() : Collection` Returns a collection of all variation groups assigned to this variation master product. ### getVariationModel **Signature:** `getVariationModel() : ProductVariationModel` Returns the variation model of this product. ### includedInBundle **Signature:** `includedInBundle(product : Product) : boolean` Identifies if the specified product participates in this product bundle. ### isAssignedToCategory **Signature:** `isAssignedToCategory(category : Category) : boolean` Returns 'true' if item is assigned to the specified category. ### isAssignedToSiteCatalog **Signature:** `isAssignedToSiteCatalog() : boolean` Returns true if the product is assigned to the current site (via the site catalog), otherwise false is returned. ### isAvailable **Signature:** `isAvailable() : boolean` Identifies if the product is available. ### isBundle **Signature:** `isBundle() : boolean` Identifies if this product instance is a product bundle. ### isBundled **Signature:** `isBundled() : boolean` Identifies if this product instance is bundled within at least one product bundle. ### isCategorized **Signature:** `isCategorized() : boolean` Identifies if this product is bound to at least one catalog category. ### isFacebookEnabled **Signature:** `isFacebookEnabled() : boolean` Identifies if the product is Facebook enabled. ### isMaster **Signature:** `isMaster() : boolean` Identifies if this product instance is a product master. ### isOnline **Signature:** `isOnline() : boolean` Returns the online status of the product. ### isOptionProduct **Signature:** `isOptionProduct() : boolean` Identifies if the product has options. ### isPinterestEnabled **Signature:** `isPinterestEnabled() : boolean` Identifies if the product is Pinterest enabled. ### isProduct **Signature:** `isProduct() : boolean` Returns 'true' if the instance represents a product. ### isProductSet **Signature:** `isProductSet() : boolean` Returns 'true' if the instance represents a product set, otherwise 'false'. ### isProductSetProduct **Signature:** `isProductSetProduct() : boolean` Returns true if this product is part of any product set, otherwise false. ### isRetailSet **Signature:** `isRetailSet() : boolean` Identifies if this product instance is part of a retail set. ### isSearchable **Signature:** `isSearchable() : boolean` Identifies if the product is searchable. ### isSiteProduct **Signature:** `isSiteProduct() : boolean` Returns 'true' if the product is assigned to the current site (via the site catalog), otherwise 'false' is returned. ### isVariant **Signature:** `isVariant() : boolean` Identifies if this product instance is mastered by a product master. ### isVariationGroup **Signature:** `isVariationGroup() : boolean` Identifies if this product instance is a variation group product. ### setAvailableFlag **Signature:** `setAvailableFlag(available : boolean) : void` Set the availability status flag of the product. ### setOnlineFlag **Signature:** `setOnlineFlag(online : boolean) : void` Set the online status flag of the product for the current site. ### setSearchableFlag **Signature:** `setSearchableFlag(searchable : boolean) : void` Set the flag indicating whether the product is searchable or not in context of the current site. ### setSearchPlacement **Signature:** `setSearchPlacement(placement : Number) : void` Set the product's search placement classification in context of the current site. ### setSearchRank **Signature:** `setSearchRank(rank : Number) : void` Set the product's search rank in context of the current site. ## Method Detail ## Method Details ### assignedToCategory **Signature:** `assignedToCategory(category : Category) : boolean` **Description:** Identifies if this product is bound to the specified catalog category. **Deprecated:** Use isAssignedToCategory(Category) **Parameters:** - `category`: the CatalogCategory to check. **Returns:** true if the product is bound to the CatalogCategory, false otherwise. --- ### getActiveData **Signature:** `getActiveData() : ProductActiveData` **Description:** Returns the active data for this product, for the current site. **Returns:** the active data for this product for the current site. --- ### getAllCategories **Signature:** `getAllCategories() : Collection` **Description:** Returns a collection of all categories to which this product is assigned. **Returns:** Collection of categories. --- ### getAllCategoryAssignments **Signature:** `getAllCategoryAssignments() : Collection` **Description:** Returns all category assignments for this product in any catalog. **Returns:** Collection of category assignments of the product in any catalog. --- ### getAllIncomingProductLinks **Signature:** `getAllIncomingProductLinks() : Collection` **Description:** Returns all incoming ProductLinks. **Returns:** a collection of all incoming ProductLinks. --- ### getAllIncomingProductLinks **Signature:** `getAllIncomingProductLinks(type : Number) : Collection` **Description:** Returns all incoming ProductLinks of a specific type. **Parameters:** - `type`: the type of ProductLinks to use. **Returns:** a collection of all incoming ProductLinks of a specific type. --- ### getAllProductLinks **Signature:** `getAllProductLinks() : Collection` **Description:** Returns all outgoing ProductLinks. **Returns:** a collection of all outgoing ProductLinks. --- ### getAllProductLinks **Signature:** `getAllProductLinks(type : Number) : Collection` **Description:** Returns all outgoing ProductLinks of a specific type. **Parameters:** - `type`: the type of ProductLinks to fetch. **Returns:** a collection of all outgoing ProductLinks of a specific type. --- ### getAllRecommendations **Signature:** `getAllRecommendations(catalog : Catalog) : Collection` **Description:** Returns the outgoing recommendations for this product which belong to the specified catalog. The recommendations are sorted by their explicitly set order. **Parameters:** - `catalog`: the catalog containing the recommendations. **Returns:** the sorted collection of recommendations, never null but possibly empty. --- ### getAllRecommendations **Signature:** `getAllRecommendations(catalog : Catalog, type : Number) : Collection` **Description:** Returns the outgoing recommendations for this product which are of the specified type and which belong to the specified catalog. The recommendations are sorted by their explicitly set order. **Parameters:** - `catalog`: the catalog containing the recommendations. - `type`: the recommendation type. **Returns:** the sorted collection of recommendations, never null but possibly empty. --- ### getAttributeModel **Signature:** `getAttributeModel() : ProductAttributeModel` **Description:** Returns this product's ProductAttributeModel, which makes access to the product attribute information convenient. The model is calculated based on the product attributes assigned to this product's classification category (or any of it's ancestors) and the global attribute definitions for the system object type 'Product'. If this product has no classification category, the attribute model is calculated on the global attribute definitions only. If this product is a variant, then the attribute model is calculated based on the classification category of its corresponding master product. **Returns:** the ProductAttributeModel for this product. --- ### getAvailabilityModel **Signature:** `getAvailabilityModel() : ProductAvailabilityModel` **Description:** Returns the availability model, which can be used to determine availability information for a product. **Returns:** the availability model for a product. --- ### getAvailabilityModel **Signature:** `getAvailabilityModel(list : ProductInventoryList) : ProductAvailabilityModel` **Description:** Returns the availability model of the given inventory list, which can be used to determine availability information for a product. **Parameters:** - `list`: The inventory list to get the availability model for. Must not be null or an exception will be raised. **Returns:** the availability model of the given inventory list for a product. --- ### getAvailableFlag **Signature:** `getAvailableFlag() : boolean` **Description:** Identifies if the product is available. **Deprecated:** Use getAvailabilityModel() instead. **Returns:** the availability status flag of the product. --- ### getBrand **Signature:** `getBrand() : String` **Description:** Returns the Brand of the product. **Returns:** the Brand of the product. --- ### getBundledProductQuantity **Signature:** `getBundledProductQuantity(aProduct : Product) : Quantity` **Description:** Returns the quantity of the specified product within the bundle. If the specified product is not part of the bundle, a 0 quantity is returned. **Parameters:** - `aProduct`: The product to determine the quantity for. **Returns:** The quantity of the product within the bundle or 0 if the product is not part of the bundle. --- ### getBundledProducts **Signature:** `getBundledProducts() : Collection` **Description:** Returns a collection containing all products that participate in the product bundle. **Returns:** A collection containing all products of the product bundle. --- ### getBundles **Signature:** `getBundles() : Collection` **Description:** Returns a collection of all bundles in which this product is included. The method only returns bundles assigned to the current site. **Returns:** Collection of bundles in which this product is included, possibly empty. --- ### getCategories **Signature:** `getCategories() : Collection` **Description:** Returns a collection of all categories to which this product is assigned and which are also available through the current site. **Returns:** Collection of categories to which this product is assigned and which are also available through the current site. --- ### getCategoryAssignment **Signature:** `getCategoryAssignment(category : Category) : CategoryAssignment` **Description:** Returns the category assignment for a specific category. **Parameters:** - `category`: the category to use when fetching assignments. **Returns:** The category assignment for a specific category. --- ### getCategoryAssignments **Signature:** `getCategoryAssignments() : Collection` **Description:** Returns a collection of category assignments for this product in the current site catalog. **Returns:** Collection of category assignments. --- ### getClassificationCategory **Signature:** `getClassificationCategory() : Category` **Description:** Returns the classification category associated with this Product. A product has a single classification category which may or may not be in the site catalog. The classification category defines the attribute set of the product. See getAttributeModel() for how the classification category is used. **Returns:** the associated classification Category, or null if none is associated. --- ### getEAN **Signature:** `getEAN() : String` **Description:** Returns the European Article Number of the product. **Returns:** the European Article Number of the product. --- ### getID **Signature:** `getID() : String` **Description:** Returns the ID of the product. **Returns:** ID of the product. --- ### getImage **Signature:** `getImage() : MediaFile` **Description:** Returns the product's image. **Deprecated:** Commerce Cloud Digital introduces a new more powerful product image management. It allows to group product images by self-defined view types (e.g. 'large', 'thumbnail', 'swatch') and variation values (e.g. for attribute color 'red', 'blue'). Images can be annotated with pattern based title and alt. Product images can be accessed from Digital locations or external storage locations. Please use the new product image management. Therefore you have to set up the common product image settings like view types, image location, default image alt and title for your catalogs first. After that you can group your product images by the previously defined view types in context of a product. Finally use getImages(String) and getImage(String, Number) to access your images. **Returns:** the product's image. --- ### getImage **Signature:** `getImage(viewtype : String, index : Number) : MediaFile` **Description:** The method calls getImages(String) and returns the image at the specific index. If no image for specified index is available the method returns null. **Parameters:** - `viewtype`: the view type annotated to image - `index`: the index number of the image within image list **Returns:** the MediaFile or null **Throws:** NullArgumentException - if viewtype is null --- ### getImage **Signature:** `getImage(viewtype : String) : MediaFile` **Description:** The method calls getImages(String) and returns the first image. If no image is available the method returns null. When called for a variant with defined images for specified view type the method returns the first image. When called for a variant without defined images for specified view type the method returns the first master product image. If no master product images are defined, the method returns null. **Parameters:** - `viewtype`: the view type annotated to image **Returns:** the MediaFile or null **Throws:** NullArgumentException - if viewtype is null --- ### getImages **Signature:** `getImages(viewtype : String) : List` **Description:** Returns all images assigned to this product for a specific view type, e.g. all 'thumbnail' images. The images are returned in the order of their index number ascending. When called for a master the method returns the images specific to the master, which are typically the fall back images. **Parameters:** - `viewtype`: the view type annotated to images **Returns:** a list of MediaFile objects, possibly empty **Throws:** NullArgumentException - if viewtype is null --- ### getIncomingProductLinks **Signature:** `getIncomingProductLinks() : Collection` **Description:** Returns incoming ProductLinks, where the source product is a site product. **Returns:** a collection of incoming ProductLinks, where the source product is a site product. --- ### getIncomingProductLinks **Signature:** `getIncomingProductLinks(type : Number) : Collection` **Description:** Returns incoming ProductLinks, where the source product is a site product of a specific type. **Parameters:** - `type`: the type of ProductLinks to fetch. **Returns:** a collection of incoming ProductLinks, where the source product is a site product of a specific type. --- ### getLongDescription **Signature:** `getLongDescription() : MarkupText` **Description:** Returns the product's long description in the current locale. **Returns:** The product's long description in the current locale, or null if it wasn't found. --- ### getManufacturerName **Signature:** `getManufacturerName() : String` **Description:** Returns the name of the product manufacturer. **Returns:** the name of the product manufacturer. --- ### getManufacturerSKU **Signature:** `getManufacturerSKU() : String` **Description:** Returns the value of the manufacturer's stock keeping unit. **Returns:** the value of the manufacturer's stock keeping unit. --- ### getMinOrderQuantity **Signature:** `getMinOrderQuantity() : Quantity` **Description:** Returns the minimum order quantity for this product. **Returns:** the minimum order quantity of the product. --- ### getName **Signature:** `getName() : String` **Description:** Returns the name of the product in the current locale. **Returns:** The name of the product for the current locale, or null if it wasn't found. --- ### getOnlineCategories **Signature:** `getOnlineCategories() : Collection` **Description:** Returns a collection of all currently online categories to which this product is assigned and which are also available through the current site. A category is currently online if its online flag equals true and the current site date is within the date range defined by the onlineFrom and onlineTo attributes. **Returns:** Collection of currently online categories to which this product is assigned and which are also available through the current site. --- ### getOnlineFlag **Signature:** `getOnlineFlag() : boolean` **Description:** Returns the online status flag of the product. **Returns:** the online status flag of the product. --- ### getOnlineFrom **Signature:** `getOnlineFrom() : Date` **Description:** Returns the date from which the product is online or valid. **Returns:** the date from which the product is online or valid. --- ### getOnlineTo **Signature:** `getOnlineTo() : Date` **Description:** Returns the date until which the product is online or valid. **Returns:** the date until which the product is online or valid. --- ### getOptionModel **Signature:** `getOptionModel() : ProductOptionModel` **Description:** Returns the product's option model. The option values selections are initialized with the values defined for the product, or the default values defined for the option. **Returns:** the products option model. --- ### getOrderableRecommendations **Signature:** `getOrderableRecommendations() : Collection` **Description:** Returns a list of outgoing recommendations for this product. This method behaves similarly to getRecommendations() but additionally filters out recommendations for which the target product is unorderable according to its product availability model. **Returns:** the sorted collection of recommendations, never null but possibly empty. **See Also:** ProductAvailabilityModel.isOrderable() --- ### getOrderableRecommendations **Signature:** `getOrderableRecommendations(type : Number) : Collection` **Description:** Returns a list of outgoing recommendations for this product. This method behaves similarly to getRecommendations(Number) but additionally filters out recommendations for which the target product is unorderable according to its product availability model. **Parameters:** - `type`: the recommendation type. **Returns:** the sorted collection of recommendations, never null but possibly empty. **See Also:** ProductAvailabilityModel.isOrderable() --- ### getPageDescription **Signature:** `getPageDescription() : String` **Description:** Returns product's page description in the default locale. **Returns:** The product's page description in the default locale, or null if it wasn't found. --- ### getPageKeywords **Signature:** `getPageKeywords() : String` **Description:** Returns the product's page keywords in the default locale. **Returns:** The product's page keywords in the default locale, or null if it wasn't found. --- ### getPageMetaTag **Signature:** `getPageMetaTag(id : String) : PageMetaTag` **Description:** Returns the page meta tag for the specified id. The meta tag content is generated based on the product detail page meta tag context and rule. The rule is obtained from the current product context or inherited from variation groups, master product, the primary category, up to the root category. Null will be returned if the meta tag is undefined on the current instance, or if no rule can be found for the current context, or if the rule resolves to an empty string. **Parameters:** - `id`: the ID to get the page meta tag for **Returns:** page meta tag containing content generated based on rules --- ### getPageMetaTags **Signature:** `getPageMetaTags() : Array` **Description:** Returns all page meta tags, defined for this instance for which content can be generated. The meta tag content is generated based on the product detail page meta tag context and rules. The rules are obtained from the current product context or inherited from variation groups, master product, the primary category, up to the root category. **Returns:** page meta tags defined for this instance, containing content generated based on rules --- ### getPageTitle **Signature:** `getPageTitle() : String` **Description:** Returns the product's page title in the default locale. **Returns:** The product's page title in the default locale, or null if it wasn't found. --- ### getPageURL **Signature:** `getPageURL() : String` **Description:** Returns the product's page URL in the default locale. **Returns:** The product's page URL in the default locale, or null if it wasn't found. --- ### getPriceModel **Signature:** `getPriceModel() : ProductPriceModel` **Description:** Returns the price model, which can be used to retrieve a price for this product. **Returns:** the price model, which can be used to retrieve a price for this product. --- ### getPriceModel **Signature:** `getPriceModel(optionModel : ProductOptionModel) : ProductPriceModel` **Description:** Returns the price model based on the specified optionModel. The price model can be used to retrieve a price for this product. Prices are calculated based on the option values selected in the specified option model. **Parameters:** - `optionModel`: the option model to use when fetching the price model. **Returns:** the price model based on the specified optionModel. --- ### getPrimaryCategory **Signature:** `getPrimaryCategory() : Category` **Description:** Returns the primary category of the product within the current site catalog. **Returns:** The product's primary category or null. --- ### getPrimaryCategoryAssignment **Signature:** `getPrimaryCategoryAssignment() : CategoryAssignment` **Description:** Returns the category assignment to the primary category in the current site catalog or null if no primary category is defined within the current site catalog. **Returns:** The category assignment to the primary category or null. --- ### getProductLinks **Signature:** `getProductLinks() : Collection` **Description:** Returns all outgoing ProductLinks, where the target product is also available in the current site. The ProductLinks are unsorted. **Returns:** a collection of outgoing ProductLinks where the target product is also available in the current site. --- ### getProductLinks **Signature:** `getProductLinks(type : Number) : Collection` **Description:** Returns all outgoing ProductLinks of a specific type, where the target product is also available in the current site. The ProductLinks are sorted. **Parameters:** - `type`: the type of ProductLinks to fetch. **Returns:** a collection of outgoing ProductLinks where the target product is also available in the current site. --- ### getProductSetProducts **Signature:** `getProductSetProducts() : Collection` **Description:** Returns a collection of all products which are assigned to this product and which are also available through the current site. If this product does not represent a product set then an empty collection will be returned. **Returns:** Collection of products which are assigned to this product and which are also available through the current site. --- ### getProductSets **Signature:** `getProductSets() : Collection` **Description:** Returns a collection of all product sets in which this product is included. The method only returns product sets assigned to the current site. **Returns:** Collection of product sets in which this product is included, possibly empty. --- ### getRecommendations **Signature:** `getRecommendations() : Collection` **Description:** Returns the outgoing recommendations for this product which belong to the site catalog. If this product is not assigned to the site catalog, or there is no site catalog, an empty collection is returned. Only recommendations for which the target product exists and is assigned to the site catalog are returned. The recommendations are sorted by their explicitly set order. **Returns:** the sorted collection of recommendations, never null but possibly empty. --- ### getRecommendations **Signature:** `getRecommendations(type : Number) : Collection` **Description:** Returns the outgoing recommendations for this product which are of the specified type and which belong to the site catalog. Behaves the same as getRecommendations() but additionally filters by recommendation type. **Parameters:** - `type`: the recommendation type. **Returns:** the sorted collection of recommendations, never null but possibly empty. --- ### getSearchableFlag **Signature:** `getSearchableFlag() : boolean` **Description:** Returns, whether the product is currently searchable. **Returns:** the searchable status flag of the product. --- ### getSearchableIfUnavailableFlag **Signature:** `getSearchableIfUnavailableFlag() : boolean` **Description:** Returns the searchable status of the Product if unavailable. Besides true or false, the return value null indicates that the value is not set. **Returns:** The searchable status of the product if unavailable or null if not set. --- ### getSearchPlacement **Signature:** `getSearchPlacement() : Number` **Description:** Returns the product's search placement classification. The higher the numeric product placement value, the more relevant is the product when sorting search results. The range of numeric placement values is defined in the meta data of object type 'Product' and can therefore be customized. **Returns:** The product's search placement classification. --- ### getSearchRank **Signature:** `getSearchRank() : Number` **Description:** Returns the product's search rank. The higher the numeric product rank, the more relevant is the product when sorting search results. The range of numeric rank values is defined in the meta data of object type 'Product' and can therefore be customized. **Returns:** The product's search rank. --- ### getShortDescription **Signature:** `getShortDescription() : MarkupText` **Description:** Returns the product's short description in the current locale. **Returns:** the product's short description in the current locale, or null if it wasn't found. --- ### getSiteMapChangeFrequency **Signature:** `getSiteMapChangeFrequency() : String` **Description:** Returns the product's change frequency needed for the sitemap creation. **Returns:** The product's sitemap change frequency. --- ### getSiteMapIncluded **Signature:** `getSiteMapIncluded() : Number` **Description:** Returns the status if the product is included into the sitemap. **Returns:** the value of the attribute 'siteMapIncluded'. --- ### getSiteMapPriority **Signature:** `getSiteMapPriority() : Number` **Description:** Returns the product's priority needed for the sitemap creation. **Returns:** The product's sitemap priority. --- ### getStepQuantity **Signature:** `getStepQuantity() : Quantity` **Description:** Returns the steps in which the order amount of the product can be increased. **Returns:** the order amount by which the product can be increased. --- ### getStoreReceiptName **Signature:** `getStoreReceiptName() : String` **Description:** Returns the store receipt name of the product in the current locale. **Returns:** The store receipt name of the product for the current locale, or null if it wasn't found. --- ### getStoreTaxClass **Signature:** `getStoreTaxClass() : String` **Description:** Returns the store tax class ID. This is an optional override for in-store tax calculation. **Returns:** the store tax class id. --- ### getTaxClassID **Signature:** `getTaxClassID() : String` **Description:** Returns the ID of the product's tax class, by resolving the Global Preference setting selected. If the Localized Tax Class setting under Global Preferences -> Products is selected, the localizedTaxClassID attribute value will be returned, else the legacy taxClassID attribute value will be returned. **Returns:** the ID of the product's tax class depending on the Global Preference setting selected for Products. --- ### getTemplate **Signature:** `getTemplate() : String` **Description:** Returns the name of the product's rendering template. **Returns:** the name of the product's rendering template. --- ### getThumbnail **Signature:** `getThumbnail() : MediaFile` **Description:** Returns the product's thumbnail image. **Deprecated:** Commerce Cloud Digital introduces a new more powerful product image management. It allows to group product images by self-defined view types (e.g. 'large', 'thumbnail', 'swatch') and variation values (e.g. for attribute color 'red', 'blue'). Images can be annotated with pattern based title and alt. Product images can be accessed from Digital locations or external storage locations. Please use the new product image management. Therefore you have to set up the common product image settings like view types, image location, default image alt and title for your catalogs first. After that you can group your product images by the previously defined view types in context of a product. Finally use getImages(String) and getImage(String, Number) to access your images. **Returns:** the product's thumbnail image. --- ### getUnit **Signature:** `getUnit() : String` **Description:** Returns the product's sales unit. **Returns:** the products sales unit. --- ### getUnitQuantity **Signature:** `getUnitQuantity() : Quantity` **Description:** Returns the product's unit quantity. **Returns:** the products unit quantity. --- ### getUPC **Signature:** `getUPC() : String` **Description:** Returns the Universal Product Code of the product. **Returns:** the Universal Product Code of the product. --- ### getVariants **Signature:** `getVariants() : Collection` **Description:** Returns a collection of all variants assigned to this variation master or variation group product. All variants are returned regardless of whether they are online or offline. If this product does not represent a variation master or variation group product then an empty collection is returned. **Returns:** Collection of variants associated with this variation master or variation group product. --- ### getVariationGroups **Signature:** `getVariationGroups() : Collection` **Description:** Returns a collection of all variation groups assigned to this variation master product. All variation groups are returned regardless of whether they are online or offline. If this product does not represent a variation master product then an empty collection is returned. **Returns:** Collection of variation groups associated with this variation master product. --- ### getVariationModel **Signature:** `getVariationModel() : ProductVariationModel` **Description:** Returns the variation model of this product. If this product is a master product, then the returned model will encapsulate all the information about its variation attributes and variants. If this product is a variant product, then the returned model will encapsulate all the same information, but additionally pre-select all the variation attribute values of this variant. (See ProductVariationModel for details on what "selected" means.) If this product is neither a master product or a variation product, then a model will be returned but will be essentially empty and not useful for any particular purpose. **Returns:** the variation model of the product. --- ### includedInBundle **Signature:** `includedInBundle(product : Product) : boolean` **Description:** Identifies if the specified product participates in this product bundle. If this product does not represent a bundle at all, then false will always be returned. **Parameters:** - `product`: the product to check for participation. **Returns:** true if the product participates in the bundle, false otherwise. --- ### isAssignedToCategory **Signature:** `isAssignedToCategory(category : Category) : boolean` **Description:** Returns 'true' if item is assigned to the specified category. **Parameters:** - `category`: the category to check. **Returns:** true if item is assigned to category. --- ### isAssignedToSiteCatalog **Signature:** `isAssignedToSiteCatalog() : boolean` **Description:** Returns true if the product is assigned to the current site (via the site catalog), otherwise false is returned. In case of the product being a variant, the variant will be considered as assigned if its master, one of the variation groups it is in or itself is assigned to the site catalog. In case this is triggered for a variation group the variation group is considered as assigned if its master or itself is assigned. **Returns:** 'true' if product assigned to the site catalog --- ### isAvailable **Signature:** `isAvailable() : boolean` **Description:** Identifies if the product is available. **Deprecated:** Use getAvailabilityModel().isInStock() instead **Returns:** the value of the attribute 'available'. --- ### isBundle **Signature:** `isBundle() : boolean` **Description:** Identifies if this product instance is a product bundle. **Returns:** true if the product is a bundle, false otherwise. --- ### isBundled **Signature:** `isBundled() : boolean` **Description:** Identifies if this product instance is bundled within at least one product bundle. **Returns:** true if the product is bundled, false otherwise. --- ### isCategorized **Signature:** `isCategorized() : boolean` **Description:** Identifies if this product is bound to at least one catalog category. **Returns:** true if the product is bound to at least one catalog category, false otherwise. --- ### isFacebookEnabled **Signature:** `isFacebookEnabled() : boolean` **Description:** Identifies if the product is Facebook enabled. **Returns:** the value of the attribute 'facebookEnabled'. --- ### isMaster **Signature:** `isMaster() : boolean` **Description:** Identifies if this product instance is a product master. **Returns:** true if the product is a master, false otherwise. --- ### isOnline **Signature:** `isOnline() : boolean` **Description:** Returns the online status of the product. The online status is calculated from the online status flag and the onlineFrom onlineTo dates defined for the product. **Returns:** the online status of the product. --- ### isOptionProduct **Signature:** `isOptionProduct() : boolean` **Description:** Identifies if the product has options. **Returns:** true if product has options, false otherwise. --- ### isPinterestEnabled **Signature:** `isPinterestEnabled() : boolean` **Description:** Identifies if the product is Pinterest enabled. **Returns:** the value of the attribute 'pinterestEnabled'. --- ### isProduct **Signature:** `isProduct() : boolean` **Description:** Returns 'true' if the instance represents a product. Returns 'false' if the instance represents a product set. **Returns:** true if the instance is a product, false otherwise. **See Also:** isProductSet() --- ### isProductSet **Signature:** `isProductSet() : boolean` **Description:** Returns 'true' if the instance represents a product set, otherwise 'false'. **Returns:** true if the instance is a product set, false otherwise. **See Also:** isProduct() --- ### isProductSetProduct **Signature:** `isProductSetProduct() : boolean` **Description:** Returns true if this product is part of any product set, otherwise false. **Returns:** true if the product is part of any product set, false otherwise. --- ### isRetailSet **Signature:** `isRetailSet() : boolean` **Description:** Identifies if this product instance is part of a retail set. **Deprecated:** Use isProductSet() instead **Returns:** true if the product is part of a retail set, false otherwise. --- ### isSearchable **Signature:** `isSearchable() : boolean` **Description:** Identifies if the product is searchable. **Returns:** the value of the attribute 'searchable'. --- ### isSiteProduct **Signature:** `isSiteProduct() : boolean` **Description:** Returns 'true' if the product is assigned to the current site (via the site catalog), otherwise 'false' is returned. **Deprecated:** Use isAssignedToSiteCatalog() instead **Returns:** 'true' if product assigned to site. --- ### isVariant **Signature:** `isVariant() : boolean` **Description:** Identifies if this product instance is mastered by a product master. **Returns:** true if the product is mastered, false otherwise. --- ### isVariationGroup **Signature:** `isVariationGroup() : boolean` **Description:** Identifies if this product instance is a variation group product. **Returns:** true if the product is a variation group, false otherwise. --- ### setAvailableFlag **Signature:** `setAvailableFlag(available : boolean) : void` **Description:** Set the availability status flag of the product. **Deprecated:** Don't use this method anymore. **Parameters:** - `available`: Availability status flag. --- ### setOnlineFlag **Signature:** `setOnlineFlag(online : boolean) : void` **Description:** Set the online status flag of the product for the current site. If current site is not available (i.e. in case this method is called by a job that runs on organization level) the online status flag is set global, which can affect all sites. In previous versions this method set the online status flag global, instead of site specific. **API Versioned:** From version 10.6. In prior versions this method set the online status flag global, instead of site specific. **Parameters:** - `online`: Online status flag. --- ### setSearchableFlag **Signature:** `setSearchableFlag(searchable : boolean) : void` **Description:** Set the flag indicating whether the product is searchable or not in context of the current site. If current site is not available (i.e. in case this method is called by a job that runs on organization level) the searchable flag is set global, which can affect all sites. In previous versions this method set the searchable flag global, instead of site specific. **API Versioned:** From version 10.6. In prior versions this method set the searchable flag global, instead of site specific. **Parameters:** - `searchable`: The value of the attribute 'searchable'. --- ### setSearchPlacement **Signature:** `setSearchPlacement(placement : Number) : void` **Description:** Set the product's search placement classification in context of the current site. If current site is not available (i.e. in case this method is called by a job that runs on organization level) the search placement is set global, which can affect all sites. In previous versions this method set the search placement classification global, instead of site specific. **API Versioned:** From version 10.6. In prior versions this method set the search placement classification global, instead of site specific. **Parameters:** - `placement`: The product's search placement classification. --- ### setSearchRank **Signature:** `setSearchRank(rank : Number) : void` **Description:** Set the product's search rank in context of the current site. If current site is not available (i.e. in case this method is called by a job that runs on organization level) the search rank is set global, which can affect all sites. In previous versions this method set the search rank global, instead of site specific. **API Versioned:** From version 10.6. In prior versions this method set the search rank global, instead of site specific. **Parameters:** - `rank`: The product's search rank. --- ```