@wix/auto_sdk_suppliers-hub_products 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/build/cjs/index.d.ts +175 -0
  2. package/build/cjs/index.js +1670 -0
  3. package/build/cjs/index.js.map +1 -0
  4. package/build/cjs/index.typings.d.ts +25 -0
  5. package/build/cjs/index.typings.js +1420 -0
  6. package/build/cjs/index.typings.js.map +1 -0
  7. package/build/cjs/meta.d.ts +1915 -0
  8. package/build/cjs/meta.js +1120 -0
  9. package/build/cjs/meta.js.map +1 -0
  10. package/build/cjs/suppliershub-marketplace-product-v1-product-products.universal-DInaBID7.d.ts +2721 -0
  11. package/build/es/index.d.mts +175 -0
  12. package/build/es/index.mjs +1611 -0
  13. package/build/es/index.mjs.map +1 -0
  14. package/build/es/index.typings.d.mts +25 -0
  15. package/build/es/index.typings.mjs +1364 -0
  16. package/build/es/index.typings.mjs.map +1 -0
  17. package/build/es/meta.d.mts +1915 -0
  18. package/build/es/meta.mjs +1063 -0
  19. package/build/es/meta.mjs.map +1 -0
  20. package/build/es/package.json +3 -0
  21. package/build/es/suppliershub-marketplace-product-v1-product-products.universal-DInaBID7.d.mts +2721 -0
  22. package/build/internal/cjs/index.d.ts +175 -0
  23. package/build/internal/cjs/index.js +1670 -0
  24. package/build/internal/cjs/index.js.map +1 -0
  25. package/build/internal/cjs/index.typings.d.ts +25 -0
  26. package/build/internal/cjs/index.typings.js +1420 -0
  27. package/build/internal/cjs/index.typings.js.map +1 -0
  28. package/build/internal/cjs/meta.d.ts +1915 -0
  29. package/build/internal/cjs/meta.js +1120 -0
  30. package/build/internal/cjs/meta.js.map +1 -0
  31. package/build/internal/cjs/suppliershub-marketplace-product-v1-product-products.universal-DInaBID7.d.ts +2721 -0
  32. package/build/internal/es/index.d.mts +175 -0
  33. package/build/internal/es/index.mjs +1611 -0
  34. package/build/internal/es/index.mjs.map +1 -0
  35. package/build/internal/es/index.typings.d.mts +25 -0
  36. package/build/internal/es/index.typings.mjs +1364 -0
  37. package/build/internal/es/index.typings.mjs.map +1 -0
  38. package/build/internal/es/meta.d.mts +1915 -0
  39. package/build/internal/es/meta.mjs +1063 -0
  40. package/build/internal/es/meta.mjs.map +1 -0
  41. package/build/internal/es/suppliershub-marketplace-product-v1-product-products.universal-DInaBID7.d.mts +2721 -0
  42. package/meta/package.json +3 -0
  43. package/package.json +54 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../index.ts","../../src/suppliershub-marketplace-product-v1-product-products.public.ts","../../src/suppliershub-marketplace-product-v1-product-products.universal.ts","../../src/suppliershub-marketplace-product-v1-product-products.http.ts","../../src/suppliershub-marketplace-product-v1-product-products.context.ts"],"sourcesContent":["export * from './src/suppliershub-marketplace-product-v1-product-products.context.js';\n","import { renameKeysFromRESTResponseToSDKResponse } from '@wix/sdk-runtime/rename-all-nested-keys';\nimport { transformRESTImageToSDKImage } from '@wix/sdk-runtime/transformations/image';\nimport { transformRESTTimestampToSDKTimestamp } from '@wix/sdk-runtime/transformations/timestamp';\nimport { transformPaths } from '@wix/sdk-runtime/transformations/transform-paths';\nimport { EventDefinition, HttpClient, NonNullablePaths } from '@wix/sdk-types';\nimport {\n BulkCreateProductsOptions,\n BulkCreateProductsResponse,\n BulkDeleteProductsResponse,\n BulkUpdateProductTagsApplicationErrors,\n BulkUpdateProductTagsByFilterApplicationErrors,\n BulkUpdateProductTagsByFilterOptions,\n BulkUpdateProductTagsByFilterResponse,\n BulkUpdateProductTagsOptions,\n BulkUpdateProductTagsResponse,\n BulkUpdateProductsOptions,\n BulkUpdateProductsResponse,\n MaskedProduct,\n Product,\n ProductCreatedEnvelope,\n ProductDeletedEnvelope,\n ProductQuery,\n ProductSearch,\n ProductTagsModifiedEnvelope,\n ProductUpdatedEnvelope,\n ProductsQueryBuilder,\n QueryCategoriesOptions,\n QueryCategoriesResponse,\n QueryProductsResponse,\n SearchProductsResponse,\n UpdateProduct,\n bulkCreateProducts as universalBulkCreateProducts,\n bulkDeleteProducts as universalBulkDeleteProducts,\n bulkUpdateProductTags as universalBulkUpdateProductTags,\n bulkUpdateProductTagsByFilter as universalBulkUpdateProductTagsByFilter,\n bulkUpdateProducts as universalBulkUpdateProducts,\n createProduct as universalCreateProduct,\n deleteProduct as universalDeleteProduct,\n getProduct as universalGetProduct,\n queryCategories as universalQueryCategories,\n queryProducts as universalQueryProducts,\n searchProducts as universalSearchProducts,\n typedQueryProducts as universalTypedQueryProducts,\n updateProduct as universalUpdateProduct,\n} from './suppliershub-marketplace-product-v1-product-products.universal.js';\n\nexport const __metadata = { PACKAGE_NAME: '@wix/suppliers-hub' };\n\nexport function createProduct(httpClient: HttpClient): CreateProductSignature {\n return (\n product: NonNullablePaths<\n Product,\n | `directCategories.${number}._id`\n | `directCategories.${number}.namespace`\n | `media`\n | `minimumPrice`\n | `name`\n | `options.${number}.name`\n | `options.${number}.values`\n | `providerInfo`\n | `providerInfo.productId`\n | `shippingDestinations.${number}.minimumShippingCost`\n | `types`\n | `wholesaleOptions.priceTiers.${number}.countFrom`\n | `wholesaleOptions.priceTiers.${number}.priceFrom`,\n 5\n >\n ) =>\n universalCreateProduct(\n product,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface CreateProductSignature {\n /**\n * Creates a product in the Marketplace.\n *\n * Products must include all required fields for the specified types.\n * The first image in `media.items` becomes the main image.\n * @param - Product to create. Must include all required fields for the specified product types.\n * @returns Created product with assigned ID and read-only fields populated.\n */\n (\n product: NonNullablePaths<\n Product,\n | `directCategories.${number}._id`\n | `directCategories.${number}.namespace`\n | `media`\n | `minimumPrice`\n | `name`\n | `options.${number}.name`\n | `options.${number}.values`\n | `providerInfo`\n | `providerInfo.productId`\n | `shippingDestinations.${number}.minimumShippingCost`\n | `types`\n | `wholesaleOptions.priceTiers.${number}.countFrom`\n | `wholesaleOptions.priceTiers.${number}.priceFrom`,\n 5\n >\n ): Promise<\n NonNullablePaths<\n Product,\n | `media.items`\n | `types`\n | `options`\n | `options.${number}.name`\n | `orderProcessingTime.min.value`\n | `orderProcessingTime.min.unit`\n | `shippingDestinations`\n | `shippingDestinations.${number}.countrySelections`\n | `shippingDestinations.${number}.minimumShippingCost`\n | `directCategories`\n | `directCategories.${number}._id`\n | `directCategories.${number}.namespace`\n | `allCategories`\n | `wholesaleOptions.priceTiers`\n | `wholesaleOptions.priceTiers.${number}.priceFrom`\n | `supplierInfo.verified`\n | `printOnDemandOptions.printTechnologies`\n | `sizeGuides`\n | `sizeGuides.${number}.measurementUnit`\n | `tags.privateTags.tagIds`,\n 5\n >\n >;\n}\n\nexport function getProduct(httpClient: HttpClient): GetProductSignature {\n return (productId: string) =>\n universalGetProduct(\n productId,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface GetProductSignature {\n /**\n * Retrieves a product by ID.\n * @param - Product ID.\n * @returns Retrieved product.\n */\n (productId: string): Promise<\n NonNullablePaths<\n Product,\n | `media.items`\n | `types`\n | `options`\n | `options.${number}.name`\n | `orderProcessingTime.min.value`\n | `orderProcessingTime.min.unit`\n | `shippingDestinations`\n | `shippingDestinations.${number}.countrySelections`\n | `shippingDestinations.${number}.minimumShippingCost`\n | `directCategories`\n | `directCategories.${number}._id`\n | `directCategories.${number}.namespace`\n | `allCategories`\n | `wholesaleOptions.priceTiers`\n | `wholesaleOptions.priceTiers.${number}.priceFrom`\n | `supplierInfo.verified`\n | `printOnDemandOptions.printTechnologies`\n | `sizeGuides`\n | `sizeGuides.${number}.measurementUnit`\n | `tags.privateTags.tagIds`,\n 5\n >\n >;\n}\n\nexport function updateProduct(httpClient: HttpClient): UpdateProductSignature {\n return (\n _id: string,\n product: NonNullablePaths<\n UpdateProduct,\n `directCategories.${number}._id` | `directCategories.${number}.namespace`,\n 4\n >\n ) =>\n universalUpdateProduct(\n _id,\n product,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface UpdateProductSignature {\n /**\n * Updates a product. Supports partial updates.\n *\n * Provider info fields (`providerInfo.productId` and `providerInfo.productCreatedDate`) are immutable and cannot be\n * changed after creation.\n * @param - Product ID.\n * @returns Updated product.\n */\n (\n _id: string,\n product: NonNullablePaths<\n UpdateProduct,\n `directCategories.${number}._id` | `directCategories.${number}.namespace`,\n 4\n >\n ): Promise<\n NonNullablePaths<\n Product,\n | `media.items`\n | `types`\n | `options`\n | `options.${number}.name`\n | `orderProcessingTime.min.value`\n | `orderProcessingTime.min.unit`\n | `shippingDestinations`\n | `shippingDestinations.${number}.countrySelections`\n | `shippingDestinations.${number}.minimumShippingCost`\n | `directCategories`\n | `directCategories.${number}._id`\n | `directCategories.${number}.namespace`\n | `allCategories`\n | `wholesaleOptions.priceTiers`\n | `wholesaleOptions.priceTiers.${number}.priceFrom`\n | `supplierInfo.verified`\n | `printOnDemandOptions.printTechnologies`\n | `sizeGuides`\n | `sizeGuides.${number}.measurementUnit`\n | `tags.privateTags.tagIds`,\n 5\n >\n >;\n}\n\nexport function deleteProduct(httpClient: HttpClient): DeleteProductSignature {\n return (productId: string) =>\n universalDeleteProduct(\n productId,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface DeleteProductSignature {\n /**\n * Deletes a product permanently from the Marketplace.\n *\n * This action cannot be undone. The product will no longer be available for store owners to add to their stores.\n * @param - Product ID.\n */\n (productId: string): Promise<void>;\n}\n\nexport function bulkCreateProducts(\n httpClient: HttpClient\n): BulkCreateProductsSignature {\n return (\n products: NonNullablePaths<\n Product,\n | `directCategories.${number}._id`\n | `directCategories.${number}.namespace`\n | `media`\n | `minimumPrice`\n | `name`\n | `options.${number}.name`\n | `options.${number}.values`\n | `providerInfo`\n | `providerInfo.productId`\n | `shippingDestinations.${number}.minimumShippingCost`\n | `types`\n | `wholesaleOptions.priceTiers.${number}.countFrom`\n | `wholesaleOptions.priceTiers.${number}.priceFrom`,\n 5\n >[],\n options?: BulkCreateProductsOptions\n ) =>\n universalBulkCreateProducts(\n products,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface BulkCreateProductsSignature {\n /**\n * Creates multiple products in a single request.\n *\n * Supports partial success - some products may be created successfully while others fail.\n * Each result includes an `itemMetadata` object indicating success or failure with error details.\n *\n * When handling failures, distinguish between validation errors which shouldn't be retried,\n * and transient errors which can be retried. Only retry failed items, not the entire batch.\n * @param - Products to create. Each must include all required fields for the specified product types.\n */\n (\n products: NonNullablePaths<\n Product,\n | `directCategories.${number}._id`\n | `directCategories.${number}.namespace`\n | `media`\n | `minimumPrice`\n | `name`\n | `options.${number}.name`\n | `options.${number}.values`\n | `providerInfo`\n | `providerInfo.productId`\n | `shippingDestinations.${number}.minimumShippingCost`\n | `types`\n | `wholesaleOptions.priceTiers.${number}.countFrom`\n | `wholesaleOptions.priceTiers.${number}.priceFrom`,\n 5\n >[],\n options?: BulkCreateProductsOptions\n ): Promise<\n NonNullablePaths<\n BulkCreateProductsResponse,\n | `results`\n | `results.${number}.itemMetadata.originalIndex`\n | `results.${number}.itemMetadata.success`\n | `results.${number}.itemMetadata.error.code`\n | `results.${number}.itemMetadata.error.description`\n | `results.${number}.item.supplierInfo.verified`\n | `bulkActionMetadata.totalSuccesses`\n | `bulkActionMetadata.totalFailures`\n | `bulkActionMetadata.undetailedFailures`,\n 6\n >\n >;\n}\n\nexport function bulkUpdateProducts(\n httpClient: HttpClient\n): BulkUpdateProductsSignature {\n return (\n products: NonNullablePaths<\n MaskedProduct,\n | `product._id`\n | `product.directCategories.${number}._id`\n | `product.directCategories.${number}.namespace`,\n 5\n >[],\n options?: BulkUpdateProductsOptions\n ) =>\n universalBulkUpdateProducts(\n products,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface BulkUpdateProductsSignature {\n /**\n * Updates multiple products in a single request.\n *\n * Supports partial success and partial field updates. Each result includes an `itemMetadata` object indicating success or failure with error details.\n *\n * When handling failures, distinguish between validation errors which shouldn't be retried,\n * and transient errors which can be retried. Only retry failed items, not the entire batch.\n * @param - Products to update. Each can be partial based on its field mask.\n */\n (\n products: NonNullablePaths<\n MaskedProduct,\n | `product._id`\n | `product.directCategories.${number}._id`\n | `product.directCategories.${number}.namespace`,\n 5\n >[],\n options?: BulkUpdateProductsOptions\n ): Promise<\n NonNullablePaths<\n BulkUpdateProductsResponse,\n | `results`\n | `results.${number}.itemMetadata.originalIndex`\n | `results.${number}.itemMetadata.success`\n | `results.${number}.itemMetadata.error.code`\n | `results.${number}.itemMetadata.error.description`\n | `results.${number}.item.supplierInfo.verified`\n | `bulkActionMetadata.totalSuccesses`\n | `bulkActionMetadata.totalFailures`\n | `bulkActionMetadata.undetailedFailures`,\n 6\n >\n >;\n}\n\nexport function bulkDeleteProducts(\n httpClient: HttpClient\n): BulkDeleteProductsSignature {\n return (productIds: string[]) =>\n universalBulkDeleteProducts(\n productIds,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface BulkDeleteProductsSignature {\n /**\n * Deletes multiple products permanently in a single request. Supports partial success.\n *\n * Each result includes an `itemMetadata` object indicating success or failure with error details.\n * When handling failures, distinguish between validation errors which shouldn't be retried,\n * and transient errors which can be retried. Only retry failed items, not the entire batch.\n * @param - Product IDs to delete.\n */\n (productIds: string[]): Promise<\n NonNullablePaths<\n BulkDeleteProductsResponse,\n | `results`\n | `results.${number}.itemMetadata.originalIndex`\n | `results.${number}.itemMetadata.success`\n | `results.${number}.itemMetadata.error.code`\n | `results.${number}.itemMetadata.error.description`\n | `bulkActionMetadata.totalSuccesses`\n | `bulkActionMetadata.totalFailures`\n | `bulkActionMetadata.undetailedFailures`,\n 6\n >\n >;\n}\n\nexport function queryProducts(httpClient: HttpClient): QueryProductsSignature {\n return () =>\n universalQueryProducts(\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface QueryProductsSignature {\n /**\n * Retrieves a list of products with filtering, sorting, and cursor-based pagination.\n *\n * Provides real-time, strongly consistent results with filtering, sorting, and pagination.\n *\n * Use Query Products when you need accurate, up-to-date data such as for operational tasks or inventory checks.\n * For product discovery and browsing with full-text search capabilities, use [Search Products](https://dev.wix.com/docs/api-reference/business-solutions/suppliers-hub/products/search-products) instead.\n */\n (): ProductsQueryBuilder;\n}\n\nexport function typedQueryProducts(\n httpClient: HttpClient\n): TypedQueryProductsSignature {\n return (query: ProductQuery) =>\n universalTypedQueryProducts(\n query,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface TypedQueryProductsSignature {\n /** */\n (query: ProductQuery): Promise<\n NonNullablePaths<\n QueryProductsResponse,\n | `products`\n | `products.${number}.orderProcessingTime.min.value`\n | `products.${number}.orderProcessingTime.min.unit`\n | `products.${number}.supplierInfo.verified`,\n 6\n >\n >;\n}\n\nexport function searchProducts(\n httpClient: HttpClient\n): SearchProductsSignature {\n return (search: ProductSearch) =>\n universalSearchProducts(\n search,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface SearchProductsSignature {\n /**\n * Retrieves a list of products, given the provided filtering, search expression, sorting, and cursor paging.\n *\n * Provides eventually consistent results optimized for product discovery and browsing.\n * Search supports full-text queries, filters, sorting, and aggregations for faceted search.\n *\n * Use Search Products for user-facing product catalogs and discovery features.\n * For real-time accuracy in operational tasks, use [Query Products](https://dev.wix.com/docs/api-reference/business-solutions/suppliers-hub/products/query-products) instead.\n * @param - Search parameters including filter, sort, full-text search, and aggregations.\n */\n (search: ProductSearch): Promise<\n NonNullablePaths<\n SearchProductsResponse,\n | `products`\n | `products.${number}.orderProcessingTime.min.value`\n | `products.${number}.orderProcessingTime.min.unit`\n | `products.${number}.supplierInfo.verified`\n | `aggregationData.results`\n | `aggregationData.results.${number}.scalar.type`\n | `aggregationData.results.${number}.scalar.value`\n | `aggregationData.results.${number}.name`\n | `aggregationData.results.${number}.type`\n | `aggregationData.results.${number}.fieldPath`,\n 6\n >\n >;\n}\n\nexport function bulkUpdateProductTags(\n httpClient: HttpClient\n): BulkUpdateProductTagsSignature {\n return (productIds: string[], options?: BulkUpdateProductTagsOptions) =>\n universalBulkUpdateProductTags(\n productIds,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface BulkUpdateProductTagsSignature {\n /**\n * Updates tags on multiple products by product IDs.\n *\n * A tag that appears both in the list of assign and unassign tags, will be assigned\n * @param - Product IDs to update tags for.\n */\n (productIds: string[], options?: BulkUpdateProductTagsOptions): Promise<\n NonNullablePaths<\n BulkUpdateProductTagsResponse,\n | `results`\n | `results.${number}.itemMetadata.originalIndex`\n | `results.${number}.itemMetadata.success`\n | `results.${number}.itemMetadata.error.code`\n | `results.${number}.itemMetadata.error.description`\n | `bulkActionMetadata.totalSuccesses`\n | `bulkActionMetadata.totalFailures`\n | `bulkActionMetadata.undetailedFailures`,\n 6\n > & {\n __applicationErrorsType?: BulkUpdateProductTagsApplicationErrors;\n }\n >;\n}\n\nexport function bulkUpdateProductTagsByFilter(\n httpClient: HttpClient\n): BulkUpdateProductTagsByFilterSignature {\n return (\n filter: Record<string, any>,\n options?: BulkUpdateProductTagsByFilterOptions\n ) =>\n universalBulkUpdateProductTagsByFilter(\n filter,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface BulkUpdateProductTagsByFilterSignature {\n /**\n * Updates tags on multiple products matching a filter.\n *\n * This operation runs asynchronously because it can potentially affect thousands of products.\n * The response includes a `jobId` for tracking the operation's progress.\n *\n * An empty filter updates all products. If a tag appears in both assign and unassign lists, it will be assigned.\n * @param - Filter to select products for tag updates. Empty filter updates all products.\n */\n (\n filter: Record<string, any>,\n options?: BulkUpdateProductTagsByFilterOptions\n ): Promise<\n NonNullablePaths<BulkUpdateProductTagsByFilterResponse, `jobId`, 2> & {\n __applicationErrorsType?: BulkUpdateProductTagsByFilterApplicationErrors;\n }\n >;\n}\n\nexport function queryCategories(\n httpClient: HttpClient\n): QueryCategoriesSignature {\n return (options?: NonNullablePaths<QueryCategoriesOptions, `namespace`, 2>) =>\n universalQueryCategories(\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface QueryCategoriesSignature {\n /**\n * Queries categories using [WQL - Wix Query Language](https://dev.wix.com/api/rest/getting-started/api-query-language).\n *\n * Supports filtering, sorting, and pagination.\n */\n (options?: NonNullablePaths<QueryCategoriesOptions, `namespace`, 2>): Promise<\n NonNullablePaths<\n QueryCategoriesResponse,\n `categories` | `categories.${number}.itemCount`,\n 4\n >\n >;\n}\n\nexport const onProductCreated = EventDefinition(\n 'wix.suppliershub.marketplace_product.v1.product_created',\n true,\n (event: ProductCreatedEnvelope) =>\n renameKeysFromRESTResponseToSDKResponse(\n transformPaths(event, [\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [\n { path: 'entity.createdDate' },\n { path: 'entity.updatedDate' },\n { path: 'entity.providerInfo.productCreatedDate' },\n { path: 'metadata.eventTime' },\n ],\n },\n {\n transformFn: transformRESTImageToSDKImage,\n paths: [\n { path: 'entity.media.main' },\n { path: 'entity.media.items', isRepeated: true },\n { path: 'entity.printOnDemandOptions.mockupImage' },\n ],\n },\n ])\n )\n)<ProductCreatedEnvelope>();\nexport const onProductDeleted = EventDefinition(\n 'wix.suppliershub.marketplace_product.v1.product_deleted',\n true,\n (event: ProductDeletedEnvelope) =>\n renameKeysFromRESTResponseToSDKResponse(\n transformPaths(event, [\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [\n { path: 'entity.createdDate' },\n { path: 'entity.updatedDate' },\n { path: 'entity.providerInfo.productCreatedDate' },\n { path: 'metadata.eventTime' },\n ],\n },\n {\n transformFn: transformRESTImageToSDKImage,\n paths: [\n { path: 'entity.media.main' },\n { path: 'entity.media.items', isRepeated: true },\n { path: 'entity.printOnDemandOptions.mockupImage' },\n ],\n },\n ])\n )\n)<ProductDeletedEnvelope>();\nexport const onProductTagsModified = EventDefinition(\n 'wix.suppliershub.marketplace_product.v1.product_tags_modified',\n true,\n (event: ProductTagsModifiedEnvelope) =>\n renameKeysFromRESTResponseToSDKResponse(\n transformPaths(event, [\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [\n { path: 'data.product.createdDate' },\n { path: 'data.product.updatedDate' },\n { path: 'data.product.providerInfo.productCreatedDate' },\n { path: 'metadata.eventTime' },\n ],\n },\n {\n transformFn: transformRESTImageToSDKImage,\n paths: [\n { path: 'data.product.media.main' },\n { path: 'data.product.media.items', isRepeated: true },\n { path: 'data.product.printOnDemandOptions.mockupImage' },\n ],\n },\n ])\n )\n)<ProductTagsModifiedEnvelope>();\nexport const onProductUpdated = EventDefinition(\n 'wix.suppliershub.marketplace_product.v1.product_updated',\n true,\n (event: ProductUpdatedEnvelope) =>\n renameKeysFromRESTResponseToSDKResponse(\n transformPaths(event, [\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [\n { path: 'entity.createdDate' },\n { path: 'entity.updatedDate' },\n { path: 'entity.providerInfo.productCreatedDate' },\n { path: 'metadata.eventTime' },\n { path: 'modifiedFields.createdDate' },\n { path: 'modifiedFields.updatedDate' },\n { path: 'modifiedFields.providerInfo.productCreatedDate' },\n ],\n },\n {\n transformFn: transformRESTImageToSDKImage,\n paths: [\n { path: 'entity.media.main' },\n { path: 'entity.media.items', isRepeated: true },\n { path: 'entity.printOnDemandOptions.mockupImage' },\n { path: 'modifiedFields.media.main' },\n { path: 'modifiedFields.media.items', isRepeated: true },\n { path: 'modifiedFields.printOnDemandOptions.mockupImage' },\n ],\n },\n ])\n )\n)<ProductUpdatedEnvelope>();\n\nexport {\n AccountInfo,\n AccountInfoMetadata,\n ActionEvent,\n Aggregation,\n AggregationData,\n AggregationKindOneOf,\n AggregationResults,\n AggregationResultsResultOneOf,\n AggregationResultsScalarResult,\n AggregationType,\n ApplicationError,\n BaseEventMetadata,\n Breadcrumb,\n BulkActionMetadata,\n BulkAddProductToStoreResult,\n BulkAddProductsToStoreRequest,\n BulkAddProductsToStoreResponse,\n BulkCreateProductsOptions,\n BulkCreateProductsRequest,\n BulkCreateProductsResponse,\n BulkDeleteProductsRequest,\n BulkDeleteProductsResponse,\n BulkDeleteProductsResponseBulkProductResult,\n BulkProductResult,\n BulkUpdateProductTagsByFilterOptions,\n BulkUpdateProductTagsByFilterRequest,\n BulkUpdateProductTagsByFilterResponse,\n BulkUpdateProductTagsOptions,\n BulkUpdateProductTagsRequest,\n BulkUpdateProductTagsResponse,\n BulkUpdateProductTagsResult,\n BulkUpdateProductsOptions,\n BulkUpdateProductsRequest,\n BulkUpdateProductsResponse,\n BulkUpdateProductsResponseBulkProductResult,\n Category,\n CategoryNamespace,\n ColorOption,\n CommonCursorPaging,\n CommonCursorPagingMetadata,\n CommonCursorQuery,\n CommonCursorQueryPagingMethodOneOf,\n CommonCursors,\n CommonSortOrder,\n CommonSorting,\n Countries,\n CountrySelections,\n CreateProductRequest,\n CreateProductResponse,\n CursorPaging,\n CursorPagingMetadata,\n CursorQuery,\n CursorQueryPagingMethodOneOf,\n CursorSearch,\n CursorSearchPagingMethodOneOf,\n Cursors,\n DateHistogramAggregation,\n DateHistogramResult,\n DateHistogramResults,\n DeleteProductRequest,\n DeleteProductResponse,\n DomainEvent,\n DomainEventBodyOneOf,\n Empty,\n EntityCreatedEvent,\n EntityDeletedEvent,\n EntityUpdatedEvent,\n EventMetadata,\n FocalPoint,\n GetProductRequest,\n GetProductResponse,\n GroupByValueResults,\n IdentificationData,\n IdentificationDataIdOneOf,\n IncludeMissingValuesOptions,\n Interval,\n Inventory,\n InventoryTier,\n ItemMetadata,\n MaskedProduct,\n Measurement,\n MeasurementUnit,\n MeasurementValueOneOf,\n MeasurementValueRange,\n Media,\n MessageEnvelope,\n MissingValues,\n Mode,\n NestedAggregation,\n NestedAggregationItem,\n NestedAggregationItemKindOneOf,\n NestedAggregationResults,\n NestedAggregationResultsResultOneOf,\n NestedAggregationType,\n NestedResultValue,\n NestedResultValueResultOneOf,\n NestedResults,\n NestedValueAggregationResult,\n OptionValue,\n OptionValueValueOneOf,\n ParentCategory,\n PriceTier,\n PrintOnDemandOptions,\n PrintTechnology,\n Product,\n ProductCategory,\n ProductCreatedEnvelope,\n ProductDeletedEnvelope,\n ProductOption,\n ProductQuerySpec,\n ProductReference,\n ProductSearchSpec,\n ProductTagsModifiedEnvelope,\n ProductType,\n ProductUpdatedEnvelope,\n ProductsQueryBuilder,\n ProductsQueryResult,\n ProviderInfo,\n QueryCategoriesOptions,\n QueryCategoriesRequest,\n QueryCategoriesResponse,\n QueryProductsRequest,\n QueryProductsResponse,\n RangeAggregation,\n RangeAggregationResult,\n RangeBucket,\n RangeResult,\n RangeResults,\n RequestedField,\n RestoreInfo,\n Results,\n ScalarAggregation,\n ScalarResult,\n ScalarType,\n SearchDetails,\n SearchProductsRequest,\n SearchProductsResponse,\n ShippingDestination,\n ShippingDestinationCountriesOptionsOneOf,\n SizeGuide,\n SortDirection,\n SortOrder,\n SortType,\n Sorting,\n Specification,\n SupplierInfo,\n TagList,\n Tags,\n TagsModified,\n TimeInterval,\n TimeUnit,\n TimeValue,\n UpdateProduct,\n UpdateProductRequest,\n UpdateProductResponse,\n ValueAggregation,\n ValueAggregationOptionsOneOf,\n ValueAggregationResult,\n ValueResult,\n ValueResults,\n WebhookIdentityType,\n WholesaleOptions,\n utils,\n} from './suppliershub-marketplace-product-v1-product-products.universal.js';\n","import { transformError as sdkTransformError } from '@wix/sdk-runtime/transform-error';\nimport { queryBuilder } from '@wix/sdk-runtime/query-builder';\nimport {\n renameKeysFromSDKRequestToRESTRequest,\n renameKeysFromRESTResponseToSDKResponse,\n} from '@wix/sdk-runtime/rename-all-nested-keys';\nimport {\n HttpClient,\n HttpResponse,\n Search as SearchSdkType,\n NonNullablePaths,\n QuerySpec,\n Query as QuerySdkType,\n SearchSpec,\n} from '@wix/sdk-types';\nimport * as ambassadorWixSuppliershubMarketplaceProductV1Product from './suppliershub-marketplace-product-v1-product-products.http.js';\n// @ts-ignore\nimport { transformSDKImageToRESTImage } from '@wix/sdk-runtime/transformations/image';\nimport { transformRESTImageToSDKImage } from '@wix/sdk-runtime/transformations/image';\nimport { transformPaths } from '@wix/sdk-runtime/transformations/transform-paths';\nimport { createQueryUtils } from '@wix/sdk-runtime/query-builder-utils';\nimport { createSearchUtils } from '@wix/sdk-runtime/search-builder-utils';\n\n/**\n * A product provided by a business partner and displayed in the Wix Marketplace.\n *\n * Products can be of type DROPSHIPPING, WHOLESALE, or both.\n * Wix users can discover and add these products to their stores.\n */\nexport interface Product {\n /**\n * Product ID.\n * @format GUID\n * @readonly\n */\n _id?: string | null;\n /**\n * Date and time the product was created.\n * @readonly\n */\n _createdDate?: Date | null;\n /**\n * Date and time the product was updated.\n * @readonly\n */\n _updatedDate?: Date | null;\n /** Information about the business partner providing this product. */\n providerInfo?: ProviderInfo;\n /**\n * Product name.\n * @minLength 1\n * @maxLength 100\n */\n name?: string | null;\n /**\n * Product description.\n * @maxLength 64000\n */\n description?: string | null;\n /**\n * Whether the product is visible in the Marketplace.\n *\n * Default: `true`\n */\n visible?: boolean | null;\n /** Product media. */\n media?: Media;\n /**\n * Business model types this product supports.\n * @minSize 1\n * @maxSize 2\n */\n types?: ProductTypeWithLiterals[];\n /**\n * Product options that customers can choose from.\n *\n * Options display available product variations like size and color to help buyers make purchase decisions.\n * Currently, options are informational only and don't create separate inventory items or variants.\n *\n * There are 2 predefined option types you can use:\n * - `color`: Color choices for the product. Values should be standard color names. For example, `\"Black\"`, `\"White\"`, `\"Yellow\"`.\n * - `size`: Size choices for the product. Values should be standard size labels. For example, `\"S\"`, `\"M\"`, `\"L\"`, `\"XL\"`.\n * @maxSize 6\n */\n options?: ProductOption[];\n /**\n * Promotional ribbon text displayed on the product.\n *\n * For example, `\"New Arrival\"` or `\"Bestseller\"`.\n * @minLength 1\n * @maxLength 30\n */\n ribbonName?: string | null;\n /**\n * Brand name.\n * @minLength 1\n * @maxLength 50\n */\n brand?: string | null;\n /** Time required to process orders before shipping. */\n orderProcessingTime?: TimeInterval;\n /**\n * Countries and regions where this product can be shipped, with location-specific pricing and timing.\n * @maxSize 100\n */\n shippingDestinations?: ShippingDestination[];\n /**\n * Minimum price, in USD.\n * @decimalValue options { gte:0, lte:999999999, maxScale:2 }\n */\n minimumPrice?: string | null;\n /**\n * Country where the product is manufactured or originates from, in [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.\n * @format COUNTRY\n */\n productOrigin?: string | null;\n /**\n * List of categories that directly contain this product.\n *\n * Each category's namespace must match at least one of the product's types.\n * For example, if a product has type `DROPSHIPPING`, its categories must use `DROPSHIPPING_NAMESPACE`.\n * Products with both `DROPSHIPPING` and `WHOLESALE` types can have categories from both namespaces.\n * @maxSize 50\n */\n directCategories?: ProductCategory[];\n /**\n * List of categories that directly contain this product, as well as their parent categories.\n * @readonly\n * @maxSize 2000\n */\n allCategories?: ProductCategory[];\n /**\n * Wholesale-specific configuration including tiered pricing and minimum order quantities.\n *\n * Required when `types` includes `WHOLESALE`.\n */\n wholesaleOptions?: WholesaleOptions;\n /** Information about the supplier including name, rating, and trust status. */\n supplierInfo?: SupplierInfo;\n /**\n * Print-on-demand-specific configuration including supported print technologies and mockup assets.\n *\n * Required when `types` include `PRINT_ON_DEMAND`.\n */\n printOnDemandOptions?: PrintOnDemandOptions;\n /**\n * Information about the product sizing\n * @maxSize 5\n */\n sizeGuides?: SizeGuide[];\n /** Product tags for organization and filtering. */\n tags?: Tags;\n}\n\n/**\n * Information about the business partner providing the product.\n *\n * Provider information is immutable after product creation.\n */\nexport interface ProviderInfo {\n /**\n * Provider application ID.\n * @format GUID\n * @readonly\n */\n appId?: string | null;\n /**\n * Unique product identifier on the provider's platform.\n *\n * This field serves as the external system's primary key for synchronization and prevents\n * duplicate products from being created. Once set, you can't change this field.\n * @minLength 1\n * @maxLength 36\n * @immutable\n */\n productId?: string | null;\n /**\n * Date and time the product was created on the provider's platform.\n *\n * This field helps maintain the connection to the original product source.\n * Once set, you can't change this field.\n * @immutable\n */\n productCreatedDate?: Date | null;\n /**\n * Product URL on the provider's platform.\n * @format WEB_URL\n */\n url?: string | null;\n}\n\n/**\n * Product media.\n *\n * The first image in the `items` array becomes the main image.\n */\nexport interface Media {\n /**\n * Primary product image, automatically set from the first item in the `items` array.\n * @readonly\n */\n main?: string;\n /**\n * Product images. The first image becomes the main image.\n * @maxSize 15\n */\n items?: string[];\n}\n\nexport interface FocalPoint {\n /** X-coordinate of the focal point. */\n x?: number;\n /** Y-coordinate of the focal point. */\n y?: number;\n /** crop by height */\n height?: number | null;\n /** crop by width */\n width?: number | null;\n}\n\n/** Business model types that products can support. */\nexport enum ProductType {\n /** Product is fulfilled by the supplier without inventory management by the store owner. */\n DROPSHIPPING = 'DROPSHIPPING',\n /** Product is sold in bulk quantities with tiered pricing. */\n WHOLESALE = 'WHOLESALE',\n /** Product is manufactured after purchase; no pre‑held inventory. */\n PRINT_ON_DEMAND = 'PRINT_ON_DEMAND',\n}\n\n/** @enumType */\nexport type ProductTypeWithLiterals =\n | ProductType\n | 'DROPSHIPPING'\n | 'WHOLESALE'\n | 'PRINT_ON_DEMAND';\n\n/**\n * Product option like size, color, or material.\n *\n * Each option can have multiple values that customers can choose from.\n */\nexport interface ProductOption {\n /**\n * Option name.\n *\n * There are 2 predefined options you can use:\n * - `color`: Represents color choices for the product. Values should be standard color names. For example, `\"Black\"`, `\"White\"`, `\"Yellow\"`.\n * - `size`: Represents size choices for the product. Values should be standard size labels. For example, `\"S\"`, `\"M\"`, `\"L\"`, `\"XL\"`.\n * @minLength 1\n * @maxLength 50\n */\n name?: string;\n /**\n * Optional description explaining the option.\n * @maxLength 200\n */\n description?: string | null;\n /**\n * Available values for this option.\n * @maxSize 100\n */\n values?: OptionValue[];\n}\n\n/** A single value for a product option. */\nexport interface OptionValue extends OptionValueValueOneOf {\n /**\n * Simple text value.\n *\n * For example, `\"L\"` for size or `\"Cotton\"` for material.\n * @minLength 1\n * @maxLength 50\n */\n simpleValue?: string;\n /** Color option with name and hex code. */\n color?: ColorOption;\n}\n\n/** @oneof */\nexport interface OptionValueValueOneOf {\n /**\n * Simple text value.\n *\n * For example, `\"L\"` for size or `\"Cotton\"` for material.\n * @minLength 1\n * @maxLength 50\n */\n simpleValue?: string;\n /** Color option with name and hex code. */\n color?: ColorOption;\n}\n\n/** Color option with display name and hex color code. */\nexport interface ColorOption {\n /**\n * Color name.\n *\n * For example, `\"Black\"` or `\"Navy Blue\"`.\n * Use 'Multicolor' for mixed colors. When using 'Multicolor', do not provide a hex value.\n * @minLength 1\n * @maxLength 50\n */\n name?: string;\n /**\n * Hex color code.\n *\n * For example, `\"#000000\"` for black. Omit for 'Multicolor'.\n * @format COLOR_HEX\n */\n hex?: string | null;\n}\n\n/**\n * Time range with minimum and maximum values.\n *\n * Used for processing times, shipping times, and other duration ranges.\n */\nexport interface TimeInterval {\n /** Minimum time in the range. */\n min?: TimeValue;\n /** Maximum time in the range. */\n max?: TimeValue;\n}\n\n/** Time duration with numeric value and unit. */\nexport interface TimeValue {\n /**\n * Numeric time value. For example, `2` for \"2 days\".\n * @min 1\n */\n value?: number;\n /** Time unit for the value. */\n unit?: TimeUnitWithLiterals;\n}\n\n/** Units of time for duration values. */\nexport enum TimeUnit {\n /** Days. */\n DAY = 'DAY',\n /** Weeks. */\n WEEK = 'WEEK',\n /** Months. */\n MONTH = 'MONTH',\n}\n\n/** @enumType */\nexport type TimeUnitWithLiterals = TimeUnit | 'DAY' | 'WEEK' | 'MONTH';\n\n/**\n * Shipping information for a specific destination or region.\n *\n * Defines where a product can be shipped and the associated costs and timing.\n */\nexport interface ShippingDestination\n extends ShippingDestinationCountriesOptionsOneOf {\n /**\n * Specific countries.\n *\n * Used when `countrySelections` is `SPECIFIC_COUNTRY`.\n */\n specificCountrySelections?: Countries;\n /** Indicates if shipping applies to selected countries or to all other regions. */\n countrySelections?: CountrySelectionsWithLiterals;\n /**\n * Minimum shipping cost to this destination in USD.\n * @decimalValue options { gte:0, lte:999999999, maxScale:3 }\n */\n minimumShippingCost?: string;\n /** Expected shipping time to this destination. */\n shippingTime?: TimeInterval;\n /**\n * Minimum Product Cost to the Shipping Location\n * @decimalValue options { gte:0, lte:999999999, maxScale:3 }\n */\n minimumProductCost?: string | null;\n}\n\n/** @oneof */\nexport interface ShippingDestinationCountriesOptionsOneOf {\n /**\n * Specific countries.\n *\n * Used when `countrySelections` is `SPECIFIC_COUNTRY`.\n */\n specificCountrySelections?: Countries;\n}\n\n/** Shipping destination selection type. */\nexport enum CountrySelections {\n /** All countries not specifically listed elsewhere. */\n REST_OF_THE_WORLD = 'REST_OF_THE_WORLD',\n /** Specific countries listed in the `countries` field. */\n SPECIFIC_COUNTRY = 'SPECIFIC_COUNTRY',\n}\n\n/** @enumType */\nexport type CountrySelectionsWithLiterals =\n | CountrySelections\n | 'REST_OF_THE_WORLD'\n | 'SPECIFIC_COUNTRY';\n\nexport interface Countries {\n /**\n * Country codes, in [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1) format.\n * @format COUNTRY\n * @minSize 1\n * @maxSize 100\n */\n countries?: string[] | null;\n}\n\n/** Inventory information for a product including count tier and quantity. */\nexport interface Inventory {\n /**\n * Abstracted inventory level calculated from quantity.\n * @readonly\n */\n tier?: InventoryTierWithLiterals;\n /**\n * Exact inventory quantity.\n *\n * Always returned when tier is `LOW` for [Get Product](https://dev.wix.com/docs/api-reference/business-solutions/suppliers-hub/products/get-product).\n * Returned as request parameter when tier is not `LOW` for [Get Product](https://dev.wix.com/docs/api-reference/business-solutions/suppliers-hub/products/get-product).\n * Not returned for [Search Products](https://dev.wix.com/docs/api-reference/business-solutions/suppliers-hub/products/search-products).\n */\n quantity?: number | null;\n}\n\n/** Abstracted inventory levels. */\nexport enum InventoryTier {\n /** No inventory available. */\n EMPTY = 'EMPTY',\n /** Low inventory level. */\n LOW = 'LOW',\n /** Medium inventory level. */\n MEDIUM = 'MEDIUM',\n /** High inventory level. */\n HIGH = 'HIGH',\n}\n\n/** @enumType */\nexport type InventoryTierWithLiterals =\n | InventoryTier\n | 'EMPTY'\n | 'LOW'\n | 'MEDIUM'\n | 'HIGH';\n\n/** Category assignment information for a product. */\nexport interface ProductCategory {\n /**\n * Category ID.\n * @format GUID\n */\n _id?: string;\n /**\n * Product's position within this category.\n * @max 200\n * @readonly\n */\n index?: number | null;\n /** The namespace of the category tree this assignment belongs to. */\n namespace?: CategoryNamespaceWithLiterals;\n}\n\n/** Defines the available category trees namespaces. */\nexport enum CategoryNamespace {\n /** Namespace for the dropshipping category tree. */\n DROPSHIPPING_NAMESPACE = 'DROPSHIPPING_NAMESPACE',\n /** Namespace for the wholesale category tree. */\n WHOLESALE_NAMESPACE = 'WHOLESALE_NAMESPACE',\n /** Namespace for the print on demand category tree. */\n PRINT_ON_DEMAND_NAMESPACE = 'PRINT_ON_DEMAND_NAMESPACE',\n}\n\n/** @enumType */\nexport type CategoryNamespaceWithLiterals =\n | CategoryNamespace\n | 'DROPSHIPPING_NAMESPACE'\n | 'WHOLESALE_NAMESPACE'\n | 'PRINT_ON_DEMAND_NAMESPACE';\n\n/**\n * Configuration for wholesale products including tiered pricing.\n *\n * Required when product types include `WHOLESALE`.\n */\nexport interface WholesaleOptions {\n /**\n * Tiered pricing based on order quantity ranges.\n *\n * Price tiers must be continuous with no gaps in quantity ranges.\n * For example, if tier 1 covers quantities 1-100, tier 2 must start at 101.\n * The system validates tier continuity when creating or updating products.\n * @maxSize 5\n */\n priceTiers?: PriceTier[];\n /**\n * Minimum quantity required for wholesale orders.\n * @min 1\n */\n minimumOrderQuantity?: number | null;\n}\n\n/**\n * Price tier with quantity range and corresponding pricing.\n *\n * Defines pricing for a specific quantity range in wholesale orders.\n */\nexport interface PriceTier {\n /**\n * Minimum price for this quantity tier in USD.\n *\n * If `priceTo` isn't specified, this price applies to all quantities in the tier.\n * @decimalValue options { gte:0, lte:999999999, maxScale:3 }\n */\n priceFrom?: string;\n /**\n * Maximum price for this quantity tier in USD.\n *\n * Optional for fixed-price tiers.\n * @decimalValue options { gte:0, lte:999999999, maxScale:3 }\n */\n priceTo?: string | null;\n /**\n * Minimum quantity for this price tier, inclusive.\n * @min 1\n */\n countFrom?: number | null;\n /**\n * Maximum quantity for this price tier, inclusive.\n *\n * If not specified, this tier applies to all quantities greater or equal to `countFrom`.\n * @min 1\n */\n countTo?: number | null;\n}\n\nexport interface SupplierInfo {\n /**\n * Supplier ID.\n *\n * When provided, references a supplier in the Marketplace Supplier service.\n * The system automatically retrieves and populates the supplier's name, rating, and verification status.\n * @format GUID\n */\n _id?: string | null;\n /**\n * Supplier name.\n *\n * Automatically populated from the Supplier service when `id` is provided.\n * @minLength 1\n * @maxLength 200\n * @readonly\n */\n name?: string | null;\n /**\n * Supplier rating from 1.00 to 5.00.\n *\n * Automatically populated from the Supplier service when `id` is provided.\n * @decimalValue options { gte:1, lte:5, maxScale:2 }\n * @readonly\n */\n rating?: string | null;\n /**\n * Whether the supplier has been verified by the Marketplace.\n *\n * Verified suppliers have completed the Marketplace verification process.\n * Automatically populated from the Supplier service when `id` is provided.\n *\n * Default: `false`\n * @readonly\n */\n verified?: boolean;\n}\n\nexport interface PrintOnDemandOptions {\n /**\n * Set of possible print technologies for the Product\n * @minSize 1\n * @maxSize 3\n */\n printTechnologies?: PrintTechnologyWithLiterals[];\n /**\n * Mockup image of the product with 'Your Image Here' text.\n * @readonly\n */\n mockupImage?: string;\n}\n\nexport enum PrintTechnology {\n /** Transfers printed on film and heat-pressed onto fabric. */\n DIRECT_TO_FILM = 'DIRECT_TO_FILM',\n /** Ink directly onto garment. */\n DIRECT_TO_GARMENT = 'DIRECT_TO_GARMENT',\n /** Panels are printed first, then sewn. All‑over coverage with precise placements. */\n CUT_SEW_SUBLIMATION = 'CUT_SEW_SUBLIMATION',\n /** Non‑DTG digital methods (e.g., roll‑to‑roll). */\n DIGITAL_PRINTING = 'DIGITAL_PRINTING',\n /** Stitched threads, premium look. */\n EMBROIDERY = 'EMBROIDERY',\n /** Dye infused into polyester/poly‑coated substrates. */\n SUBLIMATION = 'SUBLIMATION',\n /** Cures ink with UV light on rigid or treated surfaces. */\n UV_PRINTING = 'UV_PRINTING',\n /** Pattern/design is knitted, not printed. */\n KNITWEAR = 'KNITWEAR',\n /** Designs are printed directly onto rolls of fabric, which are then cut and sewn into the final product. */\n DIRECT_TO_FABRIC = 'DIRECT_TO_FABRIC',\n}\n\n/** @enumType */\nexport type PrintTechnologyWithLiterals =\n | PrintTechnology\n | 'DIRECT_TO_FILM'\n | 'DIRECT_TO_GARMENT'\n | 'CUT_SEW_SUBLIMATION'\n | 'DIGITAL_PRINTING'\n | 'EMBROIDERY'\n | 'SUBLIMATION'\n | 'UV_PRINTING'\n | 'KNITWEAR'\n | 'DIRECT_TO_FABRIC';\n\nexport interface SizeGuide {\n /** Sizes units (inches or cm) */\n measurementUnit?: MeasurementUnitWithLiterals;\n /**\n * Text description of the size guide\n * @maxLength 8000\n */\n description?: string | null;\n /**\n * Image for the size guide\n * @format WEB_URL\n */\n imageUrl?: string | null;\n /**\n * Text description of the image content\n * @maxLength 8000\n */\n imageDescription?: string | null;\n /**\n * Sizes specifications\n * @maxSize 10\n */\n specifications?: Specification[];\n}\n\nexport enum MeasurementUnit {\n CM = 'CM',\n INCHES = 'INCHES',\n}\n\n/** @enumType */\nexport type MeasurementUnitWithLiterals = MeasurementUnit | 'CM' | 'INCHES';\n\nexport interface Specification {\n /**\n * What is measured, e.g. chest, waist, sleeve\n * @maxLength 50\n */\n category?: string;\n /**\n * Measurements for different sizes\n * @minSize 1\n * @maxSize 50\n */\n measurements?: Measurement[];\n}\n\nexport interface Measurement extends MeasurementValueOneOf {\n /**\n * The value of the size in case of single value\n * @minLength 1\n * @maxLength 50\n */\n singleValue?: string;\n /** The value of the size in case of range (min/max) */\n range?: MeasurementValueRange;\n /**\n * Product size, e.g. S, M, L\n * @maxLength 50\n */\n sizeLabel?: string;\n}\n\n/** @oneof */\nexport interface MeasurementValueOneOf {\n /**\n * The value of the size in case of single value\n * @minLength 1\n * @maxLength 50\n */\n singleValue?: string;\n /** The value of the size in case of range (min/max) */\n range?: MeasurementValueRange;\n}\n\nexport interface MeasurementValueRange {\n /**\n * Minimum value\n * @minLength 1\n * @maxLength 50\n */\n minimum?: string;\n /**\n * Maximum value\n * @minLength 1\n * @maxLength 50\n */\n maximum?: string;\n}\n\n/**\n * Common object for tags.\n * Should be use as in this example:\n * message Foo {\n * option (.wix.api.decomposite_of) = \"wix.commons.v2.tags.Foo\";\n * string id = 1;\n * ...\n * Tags tags = 5\n * }\n *\n * example of taggable entity\n * {\n * id: \"123\"\n * tags: {\n * public_tags: {\n * tag_ids:[\"11\",\"22\"]\n * },\n * private_tags: {\n * tag_ids: [\"33\", \"44\"]\n * }\n * }\n * }\n */\nexport interface Tags {\n /** Tags that require an additional permission in order to access them, normally not given to site members or visitors. */\n privateTags?: TagList;\n /** Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors. */\n publicTags?: TagList;\n}\n\nexport interface TagList {\n /**\n * List of tag IDs.\n * @maxSize 100\n * @maxLength 5\n */\n tagIds?: string[];\n}\n\n/**\n * Event payload for product tag modifications.\n *\n * Triggered when product tags are updated via bulk tag operations.\n */\nexport interface TagsModified {\n /** Product with updated tags. */\n product?: Product;\n /** Tags that were added to the product. */\n assignedTags?: Tags;\n /** Tags that were removed from the product. */\n unassignedTags?: Tags;\n}\n\nexport interface CreateProductRequest {\n /** Product to create. Must include all required fields for the specified product types. */\n product: Product;\n}\n\nexport interface CreateProductResponse {\n /** Created product with assigned ID and read-only fields populated. */\n product?: Product;\n}\n\nexport interface GetProductRequest {\n /**\n * Product ID.\n * @format GUID\n */\n productId: string;\n}\n\n/** Additional fields that can be requested in API responses. */\nexport enum RequestedField {\n /** Include exact inventory quantity in the response. */\n INVENTORY_QUANTITY = 'INVENTORY_QUANTITY',\n}\n\n/** @enumType */\nexport type RequestedFieldWithLiterals = RequestedField | 'INVENTORY_QUANTITY';\n\nexport interface GetProductResponse {\n /** Retrieved product. */\n product?: Product;\n}\n\nexport interface UpdateProductRequest {\n /** Product to update. May be partial - only fields to be updated need to be provided. */\n product: Product;\n}\n\nexport interface UpdateProductResponse {\n /** Updated product. */\n product?: Product;\n}\n\nexport interface DeleteProductRequest {\n /**\n * Product ID.\n * @format GUID\n */\n productId: string;\n}\n\nexport interface DeleteProductResponse {}\n\nexport interface BulkCreateProductsRequest {\n /**\n * Products to create. Each must include all required fields for the specified product types.\n * @minSize 1\n * @maxSize 100\n */\n products: Product[];\n /**\n * Whether to return the created products in the response.\n *\n * Default: `false`\n */\n returnEntity?: boolean;\n}\n\nexport interface BulkCreateProductsResponse {\n /**\n * Results of the bulk create operation, one per input product.\n * @minSize 1\n * @maxSize 100\n */\n results?: BulkProductResult[];\n /** Metadata about the bulk operation including success and failure counts. */\n bulkActionMetadata?: BulkActionMetadata;\n}\n\nexport interface ItemMetadata {\n /**\n * Item ID. Should always be available, unless it's impossible. For example, when failing to create an item.\n * @format GUID\n */\n _id?: string | null;\n /** Index of the item within the request array. Allows for correlation between request and response items. */\n originalIndex?: number;\n /** Whether the requested action was successful for this item. When `false`, the `error` field is populated. */\n success?: boolean;\n /** Details about the error in case of failure. */\n error?: ApplicationError;\n}\n\nexport interface ApplicationError {\n /** Error code. */\n code?: string;\n /** Description of the error. */\n description?: string;\n /** Data related to the error. */\n data?: Record<string, any> | null;\n}\n\nexport interface BulkProductResult {\n /** Metadata regarding the specific single create operation */\n itemMetadata?: ItemMetadata;\n /** Only exists if `returnEntity` was set to true in the request */\n item?: Product;\n}\n\nexport interface BulkActionMetadata {\n /** Number of items that were successfully processed. */\n totalSuccesses?: number;\n /** Number of items that couldn't be processed. */\n totalFailures?: number;\n /** Number of failures without details because detailed failure threshold was exceeded. */\n undetailedFailures?: number;\n}\n\nexport interface BulkUpdateProductsRequest {\n /**\n * Products to update. Each can be partial based on its field mask.\n * @minSize 1\n * @maxSize 100\n */\n products: MaskedProduct[];\n /**\n * Whether to return the updated products in the response.\n *\n * Default: `false`\n */\n returnEntity?: boolean;\n}\n\nexport interface MaskedProduct {\n /** Product to update. May be partial - only fields to be updated need to be provided. */\n product?: Product;\n}\n\nexport interface BulkUpdateProductsResponse {\n /**\n * Results\n * @minSize 1\n * @maxSize 100\n */\n results?: BulkUpdateProductsResponseBulkProductResult[];\n /** Metadata regarding the bulk update operation */\n bulkActionMetadata?: BulkActionMetadata;\n}\n\nexport interface BulkUpdateProductsResponseBulkProductResult {\n /** Metadata regarding the specific single update operation */\n itemMetadata?: ItemMetadata;\n /** Only exists if `returnEntity` was set to true in the request */\n item?: Product;\n}\n\nexport interface BulkDeleteProductsRequest {\n /**\n * Product IDs to delete.\n * @minSize 1\n * @maxSize 100\n * @format GUID\n */\n productIds: string[];\n}\n\nexport interface BulkDeleteProductsResponse {\n /**\n * Results\n * @minSize 1\n * @maxSize 100\n */\n results?: BulkDeleteProductsResponseBulkProductResult[];\n /** Metadata regarding the bulk delete operation */\n bulkActionMetadata?: BulkActionMetadata;\n}\n\nexport interface BulkDeleteProductsResponseBulkProductResult {\n /** Metadata regarding the specific single delete operation */\n itemMetadata?: ItemMetadata;\n}\n\nexport interface QueryProductsRequest {\n /** Query parameters including filter, sort, and paging options. */\n query?: CommonCursorQuery;\n}\n\nexport interface CommonCursorQuery extends CommonCursorQueryPagingMethodOneOf {\n /** Cursor token pointing to a page of results. Not used in the first request. Following requests use the cursor token and not `filter` or `sort`. */\n cursorPaging?: CommonCursorPaging;\n /**\n * Filter object in the following format:\n * `\"filter\" : {\n * \"fieldName1\": \"value1\",\n * \"fieldName2\":{\"$operator\":\"value2\"}\n * }`\n * Example of operators: `$eq`, `$ne`, `$lt`, `$lte`, `$gt`, `$gte`, `$in`, `$hasSome`, `$hasAll`, `$startsWith`, `$contains`\n */\n filter?: Record<string, any> | null;\n /**\n * Sort object in the following format:\n * `[{\"fieldName\":\"sortField1\",\"order\":\"ASC\"},{\"fieldName\":\"sortField2\",\"order\":\"DESC\"}]`\n * @maxSize 5\n */\n sort?: CommonSorting[];\n}\n\n/** @oneof */\nexport interface CommonCursorQueryPagingMethodOneOf {\n /** Cursor token pointing to a page of results. Not used in the first request. Following requests use the cursor token and not `filter` or `sort`. */\n cursorPaging?: CommonCursorPaging;\n}\n\nexport interface CommonSorting {\n /**\n * Name of the field to sort by.\n * @maxLength 512\n */\n fieldName?: string;\n /** Sort order. */\n order?: CommonSortOrderWithLiterals;\n /**\n * Filters to specify which element to use for sorting when `fieldName` refers to a repeated field marked as `MATCH_ITEMS`.\n *\n * These filters ensure the correct element is selected from the collection for sorting. Multiple filters are combined using the `AND` operator.\n *\n * For example, for a document like `{\"id\": \"1\", \"nestedField\": [{\"price\": 10, \"region\": \"EU\"}, {\"price\": 20, \"region\": \"US\"}]}`,\n * if `nestedField` is marked as `MATCH_ITEMS`, sorting by price in the US region requires:\n * `{fieldName: \"nestedField.price\", \"selectItemsBy\": [{\"nestedField.region\": \"US\"}]}`.\n * @maxSize 10\n */\n selectItemsBy?: Record<string, any>[] | null;\n}\n\nexport enum CommonSortOrder {\n ASC = 'ASC',\n DESC = 'DESC',\n}\n\n/** @enumType */\nexport type CommonSortOrderWithLiterals = CommonSortOrder | 'ASC' | 'DESC';\n\nexport interface CommonCursorPaging {\n /**\n * Maximum number of items to return in the results.\n * @max 100\n */\n limit?: number | null;\n /**\n * Pointer to the next or previous page in the list of results.\n *\n * Pass the relevant cursor token from the `pagingMetadata` object in the previous call's response.\n * Not relevant for the first request.\n * @maxLength 16000\n */\n cursor?: string | null;\n}\n\nexport interface QueryProductsResponse {\n /** Products matching the query. */\n products?: Product[];\n /** Paging information for retrieving additional results. */\n pagingMetadata?: CommonCursorPagingMetadata;\n}\n\nexport interface CommonCursorPagingMetadata {\n /** Number of items returned in the response. */\n count?: number | null;\n /** Cursor strings that point to the next page, previous page, or both. */\n cursors?: CommonCursors;\n /**\n * Whether there are more pages to retrieve following the current page.\n *\n * + `true`: Another page of results can be retrieved.\n * + `false`: This is the last page.\n */\n hasNext?: boolean | null;\n}\n\nexport interface CommonCursors {\n /**\n * Cursor string pointing to the next page in the list of results.\n * @maxLength 16000\n */\n next?: string | null;\n /**\n * Cursor pointing to the previous page in the list of results.\n * @maxLength 16000\n */\n prev?: string | null;\n}\n\nexport interface SearchProductsRequest {\n /** Search parameters including filter, sort, full-text search, and aggregations. */\n search?: CursorSearch;\n}\n\nexport interface CursorSearch extends CursorSearchPagingMethodOneOf {\n /**\n * Cursor pointing to page of results.\n * When requesting 'cursor_paging.cursor', no `filter`, `sort` or `search` can be provided.\n */\n cursorPaging?: CommonCursorPaging;\n /** A filter object. See documentation [here](https://bo.wix.com/wix-docs/rnd/platformization-guidelines/api-query-language#platformization-guidelines_api-query-language_defining-in-protobuf) */\n filter?: Record<string, any> | null;\n /**\n * Sort object in the form [{\"fieldName\":\"sortField1\"},{\"fieldName\":\"sortField2\",\"direction\":\"DESC\"}]\n * @maxSize 10\n */\n sort?: CommonSorting[];\n /**\n * Aggregations | Faceted search: refers to a way to explore large amounts of data by displaying summaries about various partitions of the data and later allowing to narrow the navigation to a specific partition.\n * @maxSize 10\n */\n aggregations?: Aggregation[];\n /** Free text to match in searchable fields */\n search?: SearchDetails;\n /**\n * UTC offset or IANA time zone. Valid values are\n * ISO 8601 UTC offsets, such as +02:00 or -06:00,\n * and IANA time zone IDs, such as Europe/Rome\n *\n * Affects all filters and aggregations returned values.\n * You may override this behavior in a specific filter by providing\n * timestamps including time zone. e.g. `\"2023-12-20T10:52:34.795Z\"`\n * @maxLength 50\n */\n timeZone?: string | null;\n}\n\n/** @oneof */\nexport interface CursorSearchPagingMethodOneOf {\n /**\n * Cursor pointing to page of results.\n * When requesting 'cursor_paging.cursor', no `filter`, `sort` or `search` can be provided.\n */\n cursorPaging?: CommonCursorPaging;\n}\n\nexport interface Aggregation extends AggregationKindOneOf {\n /** Value aggregation */\n value?: ValueAggregation;\n /** Range aggregation */\n range?: RangeAggregation;\n /** Scalar aggregation */\n scalar?: ScalarAggregation;\n /** Date histogram aggregation */\n dateHistogram?: DateHistogramAggregation;\n /** Nested aggregation */\n nested?: NestedAggregation;\n /**\n * User-defined name of aggregation, should be unique, will appear in aggregation results\n * @maxLength 100\n */\n name?: string | null;\n /** Type of aggregation, client must provide matching aggregation field below */\n type?: AggregationTypeWithLiterals;\n /**\n * Field to aggregate by, use dot notation to specify json path\n * @maxLength 200\n */\n fieldPath?: string;\n}\n\n/** @oneof */\nexport interface AggregationKindOneOf {\n /** Value aggregation */\n value?: ValueAggregation;\n /** Range aggregation */\n range?: RangeAggregation;\n /** Scalar aggregation */\n scalar?: ScalarAggregation;\n /** Date histogram aggregation */\n dateHistogram?: DateHistogramAggregation;\n /** Nested aggregation */\n nested?: NestedAggregation;\n}\n\nexport interface RangeBucket {\n /** Inclusive lower bound of the range. Required if to is not given */\n from?: number | null;\n /** Exclusive upper bound of the range. Required if from is not given */\n to?: number | null;\n}\n\nexport enum SortType {\n /** Should sort by number of matches */\n COUNT = 'COUNT',\n /** Should sort by value of the field alphabetically */\n VALUE = 'VALUE',\n}\n\n/** @enumType */\nexport type SortTypeWithLiterals = SortType | 'COUNT' | 'VALUE';\n\nexport enum SortDirection {\n /** Should sort in descending order */\n DESC = 'DESC',\n /** Should sort in ascending order */\n ASC = 'ASC',\n}\n\n/** @enumType */\nexport type SortDirectionWithLiterals = SortDirection | 'DESC' | 'ASC';\n\nexport enum MissingValues {\n /** Should missing values be excluded from the aggregation results */\n EXCLUDE = 'EXCLUDE',\n /** Should missing values be included in the aggregation results */\n INCLUDE = 'INCLUDE',\n}\n\n/** @enumType */\nexport type MissingValuesWithLiterals = MissingValues | 'EXCLUDE' | 'INCLUDE';\n\nexport interface IncludeMissingValuesOptions {\n /**\n * Can specify custom bucket name. Defaults are [string -> \"N/A\"], [int -> \"0\"], [bool -> \"false\"] ...\n * @maxLength 20\n */\n addToBucket?: string;\n}\n\nexport enum ScalarType {\n /** Count of distinct values */\n COUNT_DISTINCT = 'COUNT_DISTINCT',\n /** Minimum value */\n MIN = 'MIN',\n /** Maximum value */\n MAX = 'MAX',\n}\n\n/** @enumType */\nexport type ScalarTypeWithLiterals =\n | ScalarType\n | 'COUNT_DISTINCT'\n | 'MIN'\n | 'MAX';\n\nexport interface ValueAggregation extends ValueAggregationOptionsOneOf {\n /** Options for including missing values */\n includeOptions?: IncludeMissingValuesOptions;\n /** Should sort by number of matches or value of the field */\n sortType?: SortTypeWithLiterals;\n /** Should sort in ascending or descending order */\n sortDirection?: SortDirectionWithLiterals;\n /** How many aggregations would you like to return? Can be between 1 and 250. 10 is the default. */\n limit?: number | null;\n /** Should missing values be included or excluded from the aggregation results. Default is EXCLUDE */\n missingValues?: MissingValuesWithLiterals;\n}\n\n/** @oneof */\nexport interface ValueAggregationOptionsOneOf {\n /** Options for including missing values */\n includeOptions?: IncludeMissingValuesOptions;\n}\n\nexport enum NestedAggregationType {\n /** An aggregation where result buckets are dynamically built - one per unique value */\n VALUE = 'VALUE',\n /** An aggregation, where user can define set of ranges - each representing a bucket */\n RANGE = 'RANGE',\n /** A single-value metric aggregation - e.g. min, max, sum, avg */\n SCALAR = 'SCALAR',\n /** An aggregation, where result buckets are dynamically built - one per time interval (hour, day, week, etc.) */\n DATE_HISTOGRAM = 'DATE_HISTOGRAM',\n}\n\n/** @enumType */\nexport type NestedAggregationTypeWithLiterals =\n | NestedAggregationType\n | 'VALUE'\n | 'RANGE'\n | 'SCALAR'\n | 'DATE_HISTOGRAM';\n\nexport interface RangeAggregation {\n /**\n * List of range buckets, where during aggregation each entity will be placed in the first bucket where its value falls into based on provided range bounds\n * @maxSize 50\n */\n buckets?: RangeBucket[];\n}\n\nexport interface ScalarAggregation {\n /** Define the operator for the scalar aggregation */\n type?: ScalarTypeWithLiterals;\n}\n\nexport interface DateHistogramAggregation {\n /** Interval for date histogram aggregation */\n interval?: IntervalWithLiterals;\n}\n\nexport enum Interval {\n /** Yearly interval */\n YEAR = 'YEAR',\n /** Monthly interval */\n MONTH = 'MONTH',\n /** Weekly interval */\n WEEK = 'WEEK',\n /** Daily interval */\n DAY = 'DAY',\n /** Hourly interval */\n HOUR = 'HOUR',\n /** Minute interval */\n MINUTE = 'MINUTE',\n /** Second interval */\n SECOND = 'SECOND',\n}\n\n/** @enumType */\nexport type IntervalWithLiterals =\n | Interval\n | 'YEAR'\n | 'MONTH'\n | 'WEEK'\n | 'DAY'\n | 'HOUR'\n | 'MINUTE'\n | 'SECOND';\n\nexport interface NestedAggregationItem extends NestedAggregationItemKindOneOf {\n /** Value aggregation */\n value?: ValueAggregation;\n /** Range aggregation */\n range?: RangeAggregation;\n /** Scalar aggregation */\n scalar?: ScalarAggregation;\n /** Date histogram aggregation */\n dateHistogram?: DateHistogramAggregation;\n /**\n * User-defined name of aggregation, should be unique, will appear in aggregation results\n * @maxLength 100\n */\n name?: string | null;\n /** Type of aggregation, client must provide matching aggregation field below */\n type?: NestedAggregationTypeWithLiterals;\n /**\n * Field to aggregate by, use dont notation to specify json path\n * @maxLength 200\n */\n fieldPath?: string;\n}\n\n/** @oneof */\nexport interface NestedAggregationItemKindOneOf {\n /** Value aggregation */\n value?: ValueAggregation;\n /** Range aggregation */\n range?: RangeAggregation;\n /** Scalar aggregation */\n scalar?: ScalarAggregation;\n /** Date histogram aggregation */\n dateHistogram?: DateHistogramAggregation;\n}\n\nexport enum AggregationType {\n /** An aggregation where result buckets are dynamically built - one per unique value */\n VALUE = 'VALUE',\n /** An aggregation, where user can define set of ranges - each representing a bucket */\n RANGE = 'RANGE',\n /** A single-value metric aggregation - e.g. min, max, sum, avg */\n SCALAR = 'SCALAR',\n /** An aggregation, where result buckets are dynamically built - one per time interval (hour, day, week, etc.) */\n DATE_HISTOGRAM = 'DATE_HISTOGRAM',\n /** Multi-level aggregation, where each next aggregation is nested within previous one */\n NESTED = 'NESTED',\n}\n\n/** @enumType */\nexport type AggregationTypeWithLiterals =\n | AggregationType\n | 'VALUE'\n | 'RANGE'\n | 'SCALAR'\n | 'DATE_HISTOGRAM'\n | 'NESTED';\n\n/** Nested aggregation expressed through a list of aggregation where each next aggregation is nested within previous one */\nexport interface NestedAggregation {\n /**\n * Flattened list of aggregations, where each next aggregation is nested within previous one\n * @minSize 2\n * @maxSize 3\n */\n nestedAggregations?: NestedAggregationItem[];\n}\n\nexport interface SearchDetails {\n /**\n * Search term or expression\n * @maxLength 100\n */\n expression?: string | null;\n}\n\nexport enum Mode {\n /** Any of the search terms must be present */\n OR = 'OR',\n /** All search terms must be present */\n AND = 'AND',\n}\n\n/** @enumType */\nexport type ModeWithLiterals = Mode | 'OR' | 'AND';\n\nexport interface SearchProductsResponse {\n /** Products matching the search criteria. */\n products?: Product[];\n /** Paging information for retrieving additional results. */\n pagingMetadata?: CommonCursorPagingMetadata;\n /** Aggregation results for faceted search. */\n aggregationData?: AggregationData;\n}\n\nexport interface AggregationData {\n /**\n * key = aggregation name (as derived from search request)\n * @maxSize 10000\n */\n results?: AggregationResults[];\n}\n\nexport interface ValueAggregationResult {\n /**\n * Value of the field\n * @maxLength 100\n */\n value?: string;\n /** Count of entities with this value */\n count?: number;\n}\n\nexport interface RangeAggregationResult {\n /** Inclusive lower bound of the range */\n from?: number | null;\n /** Exclusive upper bound of the range */\n to?: number | null;\n /** Count of entities in this range */\n count?: number;\n}\n\nexport interface NestedAggregationResults\n extends NestedAggregationResultsResultOneOf {\n /** Value aggregation results */\n values?: ValueResults;\n /** Range aggregation results */\n ranges?: RangeResults;\n /** Scalar aggregation results */\n scalar?: AggregationResultsScalarResult;\n /**\n * User-defined name of aggregation, matches the one provided in request\n * @maxLength 100\n */\n name?: string;\n /** Type of aggregation that matches result */\n type?: AggregationTypeWithLiterals;\n /**\n * Field to aggregate by, matches the one provided in request\n * @maxLength 200\n */\n fieldPath?: string;\n}\n\n/** @oneof */\nexport interface NestedAggregationResultsResultOneOf {\n /** Value aggregation results */\n values?: ValueResults;\n /** Range aggregation results */\n ranges?: RangeResults;\n /** Scalar aggregation results */\n scalar?: AggregationResultsScalarResult;\n}\n\nexport interface ValueResults {\n /**\n * List of value aggregations\n * @maxSize 250\n */\n results?: ValueAggregationResult[];\n}\n\nexport interface RangeResults {\n /**\n * List of ranges returned in same order as requested\n * @maxSize 50\n */\n results?: RangeAggregationResult[];\n}\n\nexport interface AggregationResultsScalarResult {\n /** Type of scalar aggregation */\n type?: ScalarTypeWithLiterals;\n /** Value of the scalar aggregation */\n value?: number;\n}\n\nexport interface NestedValueAggregationResult {\n /**\n * Value of the field\n * @maxLength 1000\n */\n value?: string;\n /** Nested aggregations */\n nestedResults?: NestedAggregationResults;\n}\n\nexport interface ValueResult {\n /**\n * Value of the field\n * @maxLength 1000\n */\n value?: string;\n /** Count of entities with this value */\n count?: number | null;\n}\n\nexport interface RangeResult {\n /** Inclusive lower bound of the range */\n from?: number | null;\n /** Exclusive upper bound of the range */\n to?: number | null;\n /** Count of entities in this range */\n count?: number | null;\n}\n\nexport interface ScalarResult {\n /** Value of the scalar aggregation */\n value?: number;\n}\n\nexport interface NestedResultValue extends NestedResultValueResultOneOf {\n /** Value aggregation result */\n value?: ValueResult;\n /** Range aggregation result */\n range?: RangeResult;\n /** Scalar aggregation result */\n scalar?: ScalarResult;\n /** Date histogram aggregation result */\n dateHistogram?: ValueResult;\n}\n\n/** @oneof */\nexport interface NestedResultValueResultOneOf {\n /** Value aggregation result */\n value?: ValueResult;\n /** Range aggregation result */\n range?: RangeResult;\n /** Scalar aggregation result */\n scalar?: ScalarResult;\n /** Date histogram aggregation result */\n dateHistogram?: ValueResult;\n}\n\nexport interface Results {\n /** List of nested aggregations */\n results?: Record<string, NestedResultValue>;\n}\n\nexport interface DateHistogramResult {\n /**\n * Date in ISO 8601 format\n * @maxLength 100\n */\n value?: string;\n /** Count of documents in the bucket */\n count?: number;\n}\n\nexport interface GroupByValueResults {\n /**\n * List of value aggregations\n * @maxSize 1000\n */\n results?: NestedValueAggregationResult[];\n}\n\nexport interface DateHistogramResults {\n /**\n * List of date histogram aggregations\n * @maxSize 200\n */\n results?: DateHistogramResult[];\n}\n\n/**\n * Results of `NESTED` aggregation type in a flattened form\n * aggregations in resulting array are keyed by requested aggregation `name`.\n */\nexport interface NestedResults {\n /**\n * List of nested aggregations\n * @maxSize 1000\n */\n results?: Results[];\n}\n\nexport interface AggregationResults extends AggregationResultsResultOneOf {\n /** Value aggregation results */\n values?: ValueResults;\n /** Range aggregation results */\n ranges?: RangeResults;\n /** Scalar aggregation results */\n scalar?: AggregationResultsScalarResult;\n /** Group by value aggregation results */\n groupedByValue?: GroupByValueResults;\n /** Date histogram aggregation results */\n dateHistogram?: DateHistogramResults;\n /** Nested aggregation results */\n nested?: NestedResults;\n /**\n * User-defined name of aggregation as derived from search request\n * @maxLength 100\n */\n name?: string;\n /** Type of aggregation that must match provided kind as derived from search request */\n type?: AggregationTypeWithLiterals;\n /**\n * Field to aggregate by as derived from search request\n * @maxLength 200\n */\n fieldPath?: string;\n}\n\n/** @oneof */\nexport interface AggregationResultsResultOneOf {\n /** Value aggregation results */\n values?: ValueResults;\n /** Range aggregation results */\n ranges?: RangeResults;\n /** Scalar aggregation results */\n scalar?: AggregationResultsScalarResult;\n /** Group by value aggregation results */\n groupedByValue?: GroupByValueResults;\n /** Date histogram aggregation results */\n dateHistogram?: DateHistogramResults;\n /** Nested aggregation results */\n nested?: NestedResults;\n}\n\nexport interface BulkUpdateProductTagsRequest {\n /**\n * Product IDs to update tags for.\n * @minSize 1\n * @maxSize 100\n * @format GUID\n */\n productIds: string[];\n /** Tags to assign to the products. */\n assignTags?: Tags;\n /** Tags to remove from the products. */\n unassignTags?: Tags;\n}\n\nexport interface BulkUpdateProductTagsResponse {\n /**\n * Results\n * @minSize 1\n * @maxSize 100\n */\n results?: BulkUpdateProductTagsResult[];\n /** Metadata regarding the bulk update operation */\n bulkActionMetadata?: BulkActionMetadata;\n}\n\nexport interface BulkUpdateProductTagsResult {\n /** Metadata regarding the specific single update operation */\n itemMetadata?: ItemMetadata;\n}\n\nexport interface BulkUpdateProductTagsByFilterRequest {\n /** Filter to select products for tag updates. Empty filter updates all products. */\n filter: Record<string, any> | null;\n /** Tags to assign to matching products. */\n assignTags?: Tags;\n /** Tags to remove from matching products. */\n unassignTags?: Tags;\n}\n\nexport interface BulkUpdateProductTagsByFilterResponse {\n /**\n * Job ID for tracking the asynchronous tag update operation.\n * @format GUID\n */\n jobId?: string;\n}\n\nexport interface QueryCategoriesRequest {\n /** Query parameters including filter, sort, and paging options. */\n query?: CursorQuery;\n /** The namespace this category belongs to. */\n namespace: CategoryNamespaceWithLiterals;\n /** Whether non visible categories should be included in the response. Default is `false`. */\n returnNonVisibleCategories?: boolean;\n}\n\nexport interface CursorQuery extends CursorQueryPagingMethodOneOf {\n /** Cursor token pointing to a page of results. Not used in the first request. Following requests use the cursor token and not `filter` or `sort`. */\n cursorPaging?: CursorPaging;\n /**\n * Filter object in the following format:\n * `\"filter\" : {\n * \"fieldName1\": \"value1\",\n * \"fieldName2\":{\"$operator\":\"value2\"}\n * }`\n * Example of operators: `$eq`, `$ne`, `$lt`, `$lte`, `$gt`, `$gte`, `$in`, `$hasSome`, `$hasAll`, `$startsWith`, `$contains`\n */\n filter?: Record<string, any> | null;\n /**\n * Sort object in the following format:\n * `[{\"fieldName\":\"sortField1\",\"order\":\"ASC\"},{\"fieldName\":\"sortField2\",\"order\":\"DESC\"}]`\n * @maxSize 5\n */\n sort?: Sorting[];\n}\n\n/** @oneof */\nexport interface CursorQueryPagingMethodOneOf {\n /** Cursor token pointing to a page of results. Not used in the first request. Following requests use the cursor token and not `filter` or `sort`. */\n cursorPaging?: CursorPaging;\n}\n\nexport interface Sorting {\n /**\n * Name of the field to sort by.\n * @maxLength 512\n */\n fieldName?: string;\n /** Sort order. */\n order?: SortOrderWithLiterals;\n /**\n * Filters to specify which element to use for sorting when `fieldName` refers to a repeated field marked as `MATCH_ITEMS`.\n *\n * These filters ensure the correct element is selected from the collection for sorting. Multiple filters are combined using the `AND` operator.\n *\n * For example, for a document like `{\"id\": \"1\", \"nestedField\": [{\"price\": 10, \"region\": \"EU\"}, {\"price\": 20, \"region\": \"US\"}]}`,\n * if `nestedField` is marked as `MATCH_ITEMS`, sorting by price in the US region requires:\n * `{fieldName: \"nestedField.price\", \"selectItemsBy\": [{\"nestedField.region\": \"US\"}]}`.\n * @maxSize 10\n */\n selectItemsBy?: Record<string, any>[] | null;\n}\n\nexport enum SortOrder {\n ASC = 'ASC',\n DESC = 'DESC',\n}\n\n/** @enumType */\nexport type SortOrderWithLiterals = SortOrder | 'ASC' | 'DESC';\n\nexport interface CursorPaging {\n /**\n * Maximum number of items to return in the results.\n * @max 1000\n */\n limit?: number | null;\n /**\n * Pointer to the next or previous page in the list of results.\n *\n * Pass the relevant cursor token from the `pagingMetadata` object in the previous call's response.\n * Not relevant for the first request.\n * @maxLength 16000\n */\n cursor?: string | null;\n}\n\nexport interface QueryCategoriesResponse {\n /** Categories matching the query. */\n categories?: Category[];\n /** Paging information for retrieving additional results. */\n pagingMetadata?: CursorPagingMetadata;\n}\n\n/**\n * A category for organizing Marketplace products.\n *\n * Categories form a hierarchical structure to help store owners discover relevant products.\n */\nexport interface Category {\n /**\n * Category ID.\n * @format GUID\n * @readonly\n */\n _id?: string | null;\n /**\n * Category name.\n * @minLength 1\n * @maxLength 80\n */\n name?: string | null;\n /**\n * Category description.\n * @minLength 1\n * @maxLength 600\n */\n description?: string | null;\n /**\n * Number of items in this category.\n * @readonly\n */\n itemCount?: number;\n /**\n * Navigation path from root to this category.\n *\n * The current category isn't included in the list.\n * @readonly\n * @maxSize 5\n */\n breadcrumbs?: Breadcrumb[];\n /**\n * Parent category information in the hierarchy.\n * @immutable\n */\n parentCategory?: ParentCategory;\n /**\n * URL-friendly category identifier.\n * @format URL_SLUG\n */\n slug?: string | null;\n /**\n * Whether the category is visible in the Marketplace.\n *\n * Default: `true`\n */\n visible?: boolean | null;\n}\n\nexport interface Breadcrumb {\n /**\n * Ancestor category ID.\n * @format GUID\n */\n categoryId?: string;\n /**\n * Ancestor category name.\n * @minLength 1\n * @maxLength 80\n */\n categoryName?: string;\n /**\n * Ancestor category slug.\n * @minLength 1\n * @maxLength 100\n */\n categorySlug?: string;\n}\n\n/** Information about a category's parent in the hierarchy. */\nexport interface ParentCategory {\n /**\n * Parent category ID.\n * @format GUID\n */\n _id?: string | null;\n /**\n * Index position of the category within the parent category.\n * @readonly\n */\n index?: number | null;\n}\n\nexport interface CursorPagingMetadata {\n /** Number of items returned in the response. */\n count?: number | null;\n /** Cursor strings that point to the next page, previous page, or both. */\n cursors?: Cursors;\n /**\n * Whether there are more pages to retrieve following the current page.\n *\n * + `true`: Another page of results can be retrieved.\n * + `false`: This is the last page.\n */\n hasNext?: boolean | null;\n}\n\nexport interface Cursors {\n /**\n * Cursor string pointing to the next page in the list of results.\n * @maxLength 16000\n */\n next?: string | null;\n /**\n * Cursor pointing to the previous page in the list of results.\n * @maxLength 16000\n */\n prev?: string | null;\n}\n\nexport interface BulkAddProductsToStoreRequest {\n /**\n * Products to add to the user's store.\n * @minSize 1\n * @maxSize 50\n */\n productReferences?: ProductReference[];\n}\n\nexport interface ProductReference {\n /**\n * Product ID.\n * @format GUID\n */\n productId?: string;\n /**\n * Provider app ID.\n * @format GUID\n * @readonly\n */\n appId?: string;\n /**\n * Additional metadata for the product reference.\n *\n * For example, internal identifiers on the provider's platform.\n */\n options?: Record<string, any> | null;\n /**\n * Whether the product is visible in the store.\n *\n * Default: `false`\n */\n visibleInStore?: boolean;\n}\n\nexport interface BulkAddProductsToStoreResponse {\n /**\n * Results of adding products to the store, one per input product.\n * @minSize 1\n * @maxSize 50\n */\n results?: BulkAddProductToStoreResult[];\n /** Metadata about the bulk operation including success and failure counts. */\n bulkActionMetadata?: BulkActionMetadata;\n}\n\nexport interface BulkAddProductToStoreResult {\n /** Metadata regarding the specific single operation */\n itemMetadata?: ItemMetadata;\n /** Product added to the user's store */\n item?: ProductReference;\n}\n\nexport interface DomainEvent extends DomainEventBodyOneOf {\n createdEvent?: EntityCreatedEvent;\n updatedEvent?: EntityUpdatedEvent;\n deletedEvent?: EntityDeletedEvent;\n actionEvent?: ActionEvent;\n /** Event ID. With this ID you can easily spot duplicated events and ignore them. */\n _id?: string;\n /**\n * Fully Qualified Domain Name of an entity. This is a unique identifier assigned to the API main business entities.\n * For example, `wix.stores.catalog.product`, `wix.bookings.session`, `wix.payments.transaction`.\n */\n entityFqdn?: string;\n /**\n * Event action name, placed at the top level to make it easier for users to dispatch messages.\n * For example: `created`/`updated`/`deleted`/`started`/`completed`/`email_opened`.\n */\n slug?: string;\n /** ID of the entity associated with the event. */\n entityId?: string;\n /** Event timestamp in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format and UTC time. For example, `2020-04-26T13:57:50.699Z`. */\n eventTime?: Date | null;\n /**\n * Whether the event was triggered as a result of a privacy regulation application\n * (for example, GDPR).\n */\n triggeredByAnonymizeRequest?: boolean | null;\n /** If present, indicates the action that triggered the event. */\n originatedFrom?: string | null;\n /**\n * A sequence number that indicates the order of updates to an entity. For example, if an entity was updated at 16:00 and then again at 16:01, the second update will always have a higher sequence number.\n * You can use this number to make sure you're handling updates in the right order. Just save the latest sequence number on your end and compare it to the one in each new message. If the new message has an older (lower) number, you can safely ignore it.\n */\n entityEventSequence?: string | null;\n}\n\n/** @oneof */\nexport interface DomainEventBodyOneOf {\n createdEvent?: EntityCreatedEvent;\n updatedEvent?: EntityUpdatedEvent;\n deletedEvent?: EntityDeletedEvent;\n actionEvent?: ActionEvent;\n}\n\nexport interface EntityCreatedEvent {\n entity?: string;\n}\n\nexport interface RestoreInfo {\n deletedDate?: Date | null;\n}\n\nexport interface EntityUpdatedEvent {\n /**\n * Since platformized APIs only expose PATCH and not PUT we can't assume that the fields sent from the client are the actual diff.\n * This means that to generate a list of changed fields (as opposed to sent fields) one needs to traverse both objects.\n * We don't want to impose this on all developers and so we leave this traversal to the notification recipients which need it.\n */\n currentEntity?: string;\n}\n\nexport interface EntityDeletedEvent {\n /** Entity that was deleted. */\n deletedEntity?: string | null;\n}\n\nexport interface ActionEvent {\n body?: string;\n}\n\nexport interface Empty {}\n\nexport interface MessageEnvelope {\n /**\n * App instance ID.\n * @format GUID\n */\n instanceId?: string | null;\n /**\n * Event type.\n * @maxLength 150\n */\n eventType?: string;\n /** The identification type and identity data. */\n identity?: IdentificationData;\n /** Stringify payload. */\n data?: string;\n /** Details related to the account */\n accountInfo?: AccountInfo;\n}\n\nexport interface IdentificationData extends IdentificationDataIdOneOf {\n /**\n * ID of a site visitor that has not logged in to the site.\n * @format GUID\n */\n anonymousVisitorId?: string;\n /**\n * ID of a site visitor that has logged in to the site.\n * @format GUID\n */\n memberId?: string;\n /**\n * ID of a Wix user (site owner, contributor, etc.).\n * @format GUID\n */\n wixUserId?: string;\n /**\n * ID of an app.\n * @format GUID\n */\n appId?: string;\n /** @readonly */\n identityType?: WebhookIdentityTypeWithLiterals;\n}\n\n/** @oneof */\nexport interface IdentificationDataIdOneOf {\n /**\n * ID of a site visitor that has not logged in to the site.\n * @format GUID\n */\n anonymousVisitorId?: string;\n /**\n * ID of a site visitor that has logged in to the site.\n * @format GUID\n */\n memberId?: string;\n /**\n * ID of a Wix user (site owner, contributor, etc.).\n * @format GUID\n */\n wixUserId?: string;\n /**\n * ID of an app.\n * @format GUID\n */\n appId?: string;\n}\n\nexport enum WebhookIdentityType {\n UNKNOWN = 'UNKNOWN',\n ANONYMOUS_VISITOR = 'ANONYMOUS_VISITOR',\n MEMBER = 'MEMBER',\n WIX_USER = 'WIX_USER',\n APP = 'APP',\n}\n\n/** @enumType */\nexport type WebhookIdentityTypeWithLiterals =\n | WebhookIdentityType\n | 'UNKNOWN'\n | 'ANONYMOUS_VISITOR'\n | 'MEMBER'\n | 'WIX_USER'\n | 'APP';\n\nexport interface AccountInfo {\n /**\n * ID of the Wix account associated with the event.\n * @format GUID\n */\n accountId?: string | null;\n /**\n * ID of the parent Wix account. Only included when accountId belongs to a child account.\n * @format GUID\n */\n parentAccountId?: string | null;\n /**\n * ID of the Wix site associated with the event. Only included when the event is tied to a specific site.\n * @format GUID\n */\n siteId?: string | null;\n}\n\n/** @docsIgnore */\nexport type BulkUpdateProductTagsApplicationErrors = {\n code?: 'EMPTY_ASSIGN_AND_UNASSIGN_LISTS';\n description?: string;\n data?: Record<string, any>;\n};\n/** @docsIgnore */\nexport type BulkUpdateProductTagsByFilterApplicationErrors = {\n code?: 'EMPTY_ASSIGN_AND_UNASSIGN_LISTS';\n description?: string;\n data?: Record<string, any>;\n};\n\nexport interface BaseEventMetadata {\n /**\n * App instance ID.\n * @format GUID\n */\n instanceId?: string | null;\n /**\n * Event type.\n * @maxLength 150\n */\n eventType?: string;\n /** The identification type and identity data. */\n identity?: IdentificationData;\n /** Details related to the account */\n accountInfo?: AccountInfo;\n}\n\nexport interface EventMetadata extends BaseEventMetadata {\n /** Event ID. With this ID you can easily spot duplicated events and ignore them. */\n _id?: string;\n /**\n * Fully Qualified Domain Name of an entity. This is a unique identifier assigned to the API main business entities.\n * For example, `wix.stores.catalog.product`, `wix.bookings.session`, `wix.payments.transaction`.\n */\n entityFqdn?: string;\n /**\n * Event action name, placed at the top level to make it easier for users to dispatch messages.\n * For example: `created`/`updated`/`deleted`/`started`/`completed`/`email_opened`.\n */\n slug?: string;\n /** ID of the entity associated with the event. */\n entityId?: string;\n /** Event timestamp in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format and UTC time. For example, `2020-04-26T13:57:50.699Z`. */\n eventTime?: Date | null;\n /**\n * Whether the event was triggered as a result of a privacy regulation application\n * (for example, GDPR).\n */\n triggeredByAnonymizeRequest?: boolean | null;\n /** If present, indicates the action that triggered the event. */\n originatedFrom?: string | null;\n /**\n * A sequence number that indicates the order of updates to an entity. For example, if an entity was updated at 16:00 and then again at 16:01, the second update will always have a higher sequence number.\n * You can use this number to make sure you're handling updates in the right order. Just save the latest sequence number on your end and compare it to the one in each new message. If the new message has an older (lower) number, you can safely ignore it.\n */\n entityEventSequence?: string | null;\n accountInfo?: AccountInfoMetadata;\n}\n\nexport interface AccountInfoMetadata {\n /** ID of the Wix account associated with the event */\n accountId: string;\n /** ID of the Wix site associated with the event. Only included when the event is tied to a specific site. */\n siteId?: string;\n /** ID of the parent Wix account. Only included when 'accountId' belongs to a child account. */\n parentAccountId?: string;\n}\n\nexport interface ProductCreatedEnvelope {\n entity: Product;\n metadata: EventMetadata;\n}\n\n/**\n * Triggered when a product is created.\n * @permissionScope Wix Multilingual - Nile Wrapper Domain Events Read\n * @permissionScopeId SCOPE.MULTILINGUAL.NILE_WRAPPER_DOMAIN_EVENTS_READ\n * @permissionScope Read Marketplace\n * @permissionScopeId SCOPE.SUPPLIERS_HUB.READ_MARKETPLACE\n * @permissionId SUPPLIERS_HUB.PRODUCT_READ\n * @webhook\n * @eventType wix.suppliershub.marketplace_product.v1.product_created\n * @slug created\n * @documentationMaturity preview\n */\nexport declare function onProductCreated(\n handler: (event: ProductCreatedEnvelope) => void | Promise<void>\n): void;\n\nexport interface ProductDeletedEnvelope {\n entity: Product;\n metadata: EventMetadata;\n}\n\n/**\n * Triggered when a product is deleted.\n * @permissionScope Wix Multilingual - Nile Wrapper Domain Events Read\n * @permissionScopeId SCOPE.MULTILINGUAL.NILE_WRAPPER_DOMAIN_EVENTS_READ\n * @permissionScope Read Marketplace\n * @permissionScopeId SCOPE.SUPPLIERS_HUB.READ_MARKETPLACE\n * @permissionId SUPPLIERS_HUB.PRODUCT_READ\n * @webhook\n * @eventType wix.suppliershub.marketplace_product.v1.product_deleted\n * @slug deleted\n * @documentationMaturity preview\n */\nexport declare function onProductDeleted(\n handler: (event: ProductDeletedEnvelope) => void | Promise<void>\n): void;\n\nexport interface ProductTagsModifiedEnvelope {\n data: TagsModified;\n metadata: EventMetadata;\n}\n\n/**\n * Triggered when product tags are modified.\n * @permissionScope Wix Multilingual - Nile Wrapper Domain Events Read\n * @permissionScopeId SCOPE.MULTILINGUAL.NILE_WRAPPER_DOMAIN_EVENTS_READ\n * @permissionScope Read Marketplace\n * @permissionScopeId SCOPE.SUPPLIERS_HUB.READ_MARKETPLACE\n * @permissionId SUPPLIERS_HUB.PRODUCT_READ\n * @webhook\n * @eventType wix.suppliershub.marketplace_product.v1.product_tags_modified\n * @slug tags_modified\n * @documentationMaturity preview\n */\nexport declare function onProductTagsModified(\n handler: (event: ProductTagsModifiedEnvelope) => void | Promise<void>\n): void;\n\nexport interface ProductUpdatedEnvelope {\n entity: Product;\n metadata: EventMetadata;\n /** @hidden */\n modifiedFields: Record<string, any>;\n}\n\n/**\n * Triggered when a product is updated.\n * @permissionScope Wix Multilingual - Nile Wrapper Domain Events Read\n * @permissionScopeId SCOPE.MULTILINGUAL.NILE_WRAPPER_DOMAIN_EVENTS_READ\n * @permissionScope Read Marketplace\n * @permissionScopeId SCOPE.SUPPLIERS_HUB.READ_MARKETPLACE\n * @permissionId SUPPLIERS_HUB.PRODUCT_READ\n * @webhook\n * @eventType wix.suppliershub.marketplace_product.v1.product_updated\n * @slug updated\n * @documentationMaturity preview\n */\nexport declare function onProductUpdated(\n handler: (event: ProductUpdatedEnvelope) => void | Promise<void>\n): void;\n\n/**\n * Creates a product in the Marketplace.\n *\n * Products must include all required fields for the specified types.\n * The first image in `media.items` becomes the main image.\n * @param product - Product to create. Must include all required fields for the specified product types.\n * @public\n * @documentationMaturity preview\n * @requiredField product\n * @requiredField product.directCategories._id\n * @requiredField product.directCategories.namespace\n * @requiredField product.media\n * @requiredField product.minimumPrice\n * @requiredField product.name\n * @requiredField product.options.name\n * @requiredField product.options.values\n * @requiredField product.providerInfo\n * @requiredField product.providerInfo.productId\n * @requiredField product.shippingDestinations.minimumShippingCost\n * @requiredField product.types\n * @requiredField product.wholesaleOptions.priceTiers.countFrom\n * @requiredField product.wholesaleOptions.priceTiers.priceFrom\n * @permissionId SUPPLIERS_HUB.PRODUCT_CREATE\n * @applicableIdentity APP\n * @returns Created product with assigned ID and read-only fields populated.\n * @fqn wix.suppliershub.marketplace.product.v1.MarketplaceProduct.CreateProduct\n */\nexport async function createProduct(\n product: NonNullablePaths<\n Product,\n | `directCategories.${number}._id`\n | `directCategories.${number}.namespace`\n | `media`\n | `minimumPrice`\n | `name`\n | `options.${number}.name`\n | `options.${number}.values`\n | `providerInfo`\n | `providerInfo.productId`\n | `shippingDestinations.${number}.minimumShippingCost`\n | `types`\n | `wholesaleOptions.priceTiers.${number}.countFrom`\n | `wholesaleOptions.priceTiers.${number}.priceFrom`,\n 5\n >\n): Promise<\n NonNullablePaths<\n Product,\n | `media.items`\n | `types`\n | `options`\n | `options.${number}.name`\n | `orderProcessingTime.min.value`\n | `orderProcessingTime.min.unit`\n | `shippingDestinations`\n | `shippingDestinations.${number}.countrySelections`\n | `shippingDestinations.${number}.minimumShippingCost`\n | `directCategories`\n | `directCategories.${number}._id`\n | `directCategories.${number}.namespace`\n | `allCategories`\n | `wholesaleOptions.priceTiers`\n | `wholesaleOptions.priceTiers.${number}.priceFrom`\n | `supplierInfo.verified`\n | `printOnDemandOptions.printTechnologies`\n | `sizeGuides`\n | `sizeGuides.${number}.measurementUnit`\n | `tags.privateTags.tagIds`,\n 5\n >\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = transformPaths(\n renameKeysFromSDKRequestToRESTRequest({ product: product }),\n [\n {\n transformFn: transformSDKImageToRESTImage,\n paths: [\n { path: 'product.media.main' },\n { path: 'product.media.items', isRepeated: true },\n { path: 'product.printOnDemandOptions.mockupImage' },\n ],\n },\n ]\n );\n\n const reqOpts =\n ambassadorWixSuppliershubMarketplaceProductV1Product.createProduct(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(\n transformPaths(result.data, [\n {\n transformFn: transformRESTImageToSDKImage,\n paths: [\n { path: 'product.media.main' },\n { path: 'product.media.items', isRepeated: true },\n { path: 'product.printOnDemandOptions.mockupImage' },\n ],\n },\n ])\n )?.product!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { product: '$[0]' },\n singleArgumentUnchanged: false,\n },\n ['product']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\n/**\n * Retrieves a product by ID.\n * @param productId - Product ID.\n * @public\n * @documentationMaturity preview\n * @requiredField productId\n * @permissionId SUPPLIERS_HUB.PRODUCT_READ\n * @applicableIdentity APP\n * @returns Retrieved product.\n * @fqn wix.suppliershub.marketplace.product.v1.MarketplaceProduct.GetProduct\n */\nexport async function getProduct(\n productId: string\n): Promise<\n NonNullablePaths<\n Product,\n | `media.items`\n | `types`\n | `options`\n | `options.${number}.name`\n | `orderProcessingTime.min.value`\n | `orderProcessingTime.min.unit`\n | `shippingDestinations`\n | `shippingDestinations.${number}.countrySelections`\n | `shippingDestinations.${number}.minimumShippingCost`\n | `directCategories`\n | `directCategories.${number}._id`\n | `directCategories.${number}.namespace`\n | `allCategories`\n | `wholesaleOptions.priceTiers`\n | `wholesaleOptions.priceTiers.${number}.priceFrom`\n | `supplierInfo.verified`\n | `printOnDemandOptions.printTechnologies`\n | `sizeGuides`\n | `sizeGuides.${number}.measurementUnit`\n | `tags.privateTags.tagIds`,\n 5\n >\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n productId: productId,\n });\n\n const reqOpts =\n ambassadorWixSuppliershubMarketplaceProductV1Product.getProduct(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(\n transformPaths(result.data, [\n {\n transformFn: transformRESTImageToSDKImage,\n paths: [\n { path: 'product.media.main' },\n { path: 'product.media.items', isRepeated: true },\n { path: 'product.printOnDemandOptions.mockupImage' },\n ],\n },\n ])\n )?.product!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { productId: '$[0]' },\n singleArgumentUnchanged: false,\n },\n ['productId']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\n/**\n * Updates a product. Supports partial updates.\n *\n * Provider info fields (`providerInfo.productId` and `providerInfo.productCreatedDate`) are immutable and cannot be\n * changed after creation.\n * @param _id - Product ID.\n * @public\n * @documentationMaturity preview\n * @requiredField _id\n * @requiredField product\n * @requiredField product.directCategories._id\n * @requiredField product.directCategories.namespace\n * @permissionId SUPPLIERS_HUB.PRODUCT_UPDATE\n * @applicableIdentity APP\n * @returns Updated product.\n * @fqn wix.suppliershub.marketplace.product.v1.MarketplaceProduct.UpdateProduct\n */\nexport async function updateProduct(\n _id: string,\n product: NonNullablePaths<\n UpdateProduct,\n `directCategories.${number}._id` | `directCategories.${number}.namespace`,\n 4\n >\n): Promise<\n NonNullablePaths<\n Product,\n | `media.items`\n | `types`\n | `options`\n | `options.${number}.name`\n | `orderProcessingTime.min.value`\n | `orderProcessingTime.min.unit`\n | `shippingDestinations`\n | `shippingDestinations.${number}.countrySelections`\n | `shippingDestinations.${number}.minimumShippingCost`\n | `directCategories`\n | `directCategories.${number}._id`\n | `directCategories.${number}.namespace`\n | `allCategories`\n | `wholesaleOptions.priceTiers`\n | `wholesaleOptions.priceTiers.${number}.priceFrom`\n | `supplierInfo.verified`\n | `printOnDemandOptions.printTechnologies`\n | `sizeGuides`\n | `sizeGuides.${number}.measurementUnit`\n | `tags.privateTags.tagIds`,\n 5\n >\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[2] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = transformPaths(\n renameKeysFromSDKRequestToRESTRequest({ product: { ...product, id: _id } }),\n [\n {\n transformFn: transformSDKImageToRESTImage,\n paths: [\n { path: 'product.media.main' },\n { path: 'product.media.items', isRepeated: true },\n { path: 'product.printOnDemandOptions.mockupImage' },\n ],\n },\n ]\n );\n\n const reqOpts =\n ambassadorWixSuppliershubMarketplaceProductV1Product.updateProduct(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(\n transformPaths(result.data, [\n {\n transformFn: transformRESTImageToSDKImage,\n paths: [\n { path: 'product.media.main' },\n { path: 'product.media.items', isRepeated: true },\n { path: 'product.printOnDemandOptions.mockupImage' },\n ],\n },\n ])\n )?.product!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: { product: '$[1]' },\n explicitPathsToArguments: { 'product.id': '$[0]' },\n singleArgumentUnchanged: false,\n },\n ['_id', 'product']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface UpdateProduct {\n /**\n * Product ID.\n * @format GUID\n * @readonly\n */\n _id?: string | null;\n /**\n * Date and time the product was created.\n * @readonly\n */\n _createdDate?: Date | null;\n /**\n * Date and time the product was updated.\n * @readonly\n */\n _updatedDate?: Date | null;\n /** Information about the business partner providing this product. */\n providerInfo?: ProviderInfo;\n /**\n * Product name.\n * @minLength 1\n * @maxLength 100\n */\n name?: string | null;\n /**\n * Product description.\n * @maxLength 64000\n */\n description?: string | null;\n /**\n * Whether the product is visible in the Marketplace.\n *\n * Default: `true`\n */\n visible?: boolean | null;\n /** Product media. */\n media?: Media;\n /**\n * Business model types this product supports.\n * @minSize 1\n * @maxSize 2\n */\n types?: ProductTypeWithLiterals[];\n /**\n * Product options that customers can choose from.\n *\n * Options display available product variations like size and color to help buyers make purchase decisions.\n * Currently, options are informational only and don't create separate inventory items or variants.\n *\n * There are 2 predefined option types you can use:\n * - `color`: Color choices for the product. Values should be standard color names. For example, `\"Black\"`, `\"White\"`, `\"Yellow\"`.\n * - `size`: Size choices for the product. Values should be standard size labels. For example, `\"S\"`, `\"M\"`, `\"L\"`, `\"XL\"`.\n * @maxSize 6\n */\n options?: ProductOption[];\n /**\n * Promotional ribbon text displayed on the product.\n *\n * For example, `\"New Arrival\"` or `\"Bestseller\"`.\n * @minLength 1\n * @maxLength 30\n */\n ribbonName?: string | null;\n /**\n * Brand name.\n * @minLength 1\n * @maxLength 50\n */\n brand?: string | null;\n /** Time required to process orders before shipping. */\n orderProcessingTime?: TimeInterval;\n /**\n * Countries and regions where this product can be shipped, with location-specific pricing and timing.\n * @maxSize 100\n */\n shippingDestinations?: ShippingDestination[];\n /**\n * Minimum price, in USD.\n * @decimalValue options { gte:0, lte:999999999, maxScale:2 }\n */\n minimumPrice?: string | null;\n /**\n * Country where the product is manufactured or originates from, in [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.\n * @format COUNTRY\n */\n productOrigin?: string | null;\n /**\n * List of categories that directly contain this product.\n *\n * Each category's namespace must match at least one of the product's types.\n * For example, if a product has type `DROPSHIPPING`, its categories must use `DROPSHIPPING_NAMESPACE`.\n * Products with both `DROPSHIPPING` and `WHOLESALE` types can have categories from both namespaces.\n * @maxSize 50\n */\n directCategories?: ProductCategory[];\n /**\n * List of categories that directly contain this product, as well as their parent categories.\n * @readonly\n * @maxSize 2000\n */\n allCategories?: ProductCategory[];\n /**\n * Wholesale-specific configuration including tiered pricing and minimum order quantities.\n *\n * Required when `types` includes `WHOLESALE`.\n */\n wholesaleOptions?: WholesaleOptions;\n /** Information about the supplier including name, rating, and trust status. */\n supplierInfo?: SupplierInfo;\n /**\n * Print-on-demand-specific configuration including supported print technologies and mockup assets.\n *\n * Required when `types` include `PRINT_ON_DEMAND`.\n */\n printOnDemandOptions?: PrintOnDemandOptions;\n /**\n * Information about the product sizing\n * @maxSize 5\n */\n sizeGuides?: SizeGuide[];\n /** Product tags for organization and filtering. */\n tags?: Tags;\n}\n\n/**\n * Deletes a product permanently from the Marketplace.\n *\n * This action cannot be undone. The product will no longer be available for store owners to add to their stores.\n * @param productId - Product ID.\n * @public\n * @documentationMaturity preview\n * @requiredField productId\n * @permissionId SUPPLIERS_HUB.PRODUCT_DELETE\n * @applicableIdentity APP\n * @fqn wix.suppliershub.marketplace.product.v1.MarketplaceProduct.DeleteProduct\n */\nexport async function deleteProduct(productId: string): Promise<void> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n productId: productId,\n });\n\n const reqOpts =\n ambassadorWixSuppliershubMarketplaceProductV1Product.deleteProduct(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { productId: '$[0]' },\n singleArgumentUnchanged: false,\n },\n ['productId']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\n/**\n * Creates multiple products in a single request.\n *\n * Supports partial success - some products may be created successfully while others fail.\n * Each result includes an `itemMetadata` object indicating success or failure with error details.\n *\n * When handling failures, distinguish between validation errors which shouldn't be retried,\n * and transient errors which can be retried. Only retry failed items, not the entire batch.\n * @param products - Products to create. Each must include all required fields for the specified product types.\n * @public\n * @documentationMaturity preview\n * @requiredField products\n * @requiredField products.directCategories._id\n * @requiredField products.directCategories.namespace\n * @requiredField products.media\n * @requiredField products.minimumPrice\n * @requiredField products.name\n * @requiredField products.options.name\n * @requiredField products.options.values\n * @requiredField products.providerInfo\n * @requiredField products.providerInfo.productId\n * @requiredField products.shippingDestinations.minimumShippingCost\n * @requiredField products.types\n * @requiredField products.wholesaleOptions.priceTiers.countFrom\n * @requiredField products.wholesaleOptions.priceTiers.priceFrom\n * @permissionId SUPPLIERS_HUB.PRODUCT_CREATE\n * @applicableIdentity APP\n * @fqn wix.suppliershub.marketplace.product.v1.MarketplaceProduct.BulkCreateProducts\n */\nexport async function bulkCreateProducts(\n products: NonNullablePaths<\n Product,\n | `directCategories.${number}._id`\n | `directCategories.${number}.namespace`\n | `media`\n | `minimumPrice`\n | `name`\n | `options.${number}.name`\n | `options.${number}.values`\n | `providerInfo`\n | `providerInfo.productId`\n | `shippingDestinations.${number}.minimumShippingCost`\n | `types`\n | `wholesaleOptions.priceTiers.${number}.countFrom`\n | `wholesaleOptions.priceTiers.${number}.priceFrom`,\n 5\n >[],\n options?: BulkCreateProductsOptions\n): Promise<\n NonNullablePaths<\n BulkCreateProductsResponse,\n | `results`\n | `results.${number}.itemMetadata.originalIndex`\n | `results.${number}.itemMetadata.success`\n | `results.${number}.itemMetadata.error.code`\n | `results.${number}.itemMetadata.error.description`\n | `results.${number}.item.supplierInfo.verified`\n | `bulkActionMetadata.totalSuccesses`\n | `bulkActionMetadata.totalFailures`\n | `bulkActionMetadata.undetailedFailures`,\n 6\n >\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[2] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = transformPaths(\n renameKeysFromSDKRequestToRESTRequest({\n products: products,\n returnEntity: options?.returnEntity,\n }),\n [\n {\n transformFn: transformSDKImageToRESTImage,\n paths: [\n { path: 'products.media.main' },\n { path: 'products.media.items', isRepeated: true },\n { path: 'products.printOnDemandOptions.mockupImage' },\n ],\n },\n ]\n );\n\n const reqOpts =\n ambassadorWixSuppliershubMarketplaceProductV1Product.bulkCreateProducts(\n payload\n );\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(\n transformPaths(result.data, [\n {\n transformFn: transformRESTImageToSDKImage,\n paths: [\n { path: 'results.item.media.main' },\n { path: 'results.item.media.items', isRepeated: true },\n { path: 'results.item.printOnDemandOptions.mockupImage' },\n ],\n },\n ])\n )!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n products: '$[0]',\n returnEntity: '$[1].returnEntity',\n },\n singleArgumentUnchanged: false,\n },\n ['products', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface BulkCreateProductsOptions {\n /**\n * Whether to return the created products in the response.\n *\n * Default: `false`\n */\n returnEntity?: boolean;\n}\n\n/**\n * Updates multiple products in a single request.\n *\n * Supports partial success and partial field updates. Each result includes an `itemMetadata` object indicating success or failure with error details.\n *\n * When handling failures, distinguish between validation errors which shouldn't be retried,\n * and transient errors which can be retried. Only retry failed items, not the entire batch.\n * @param products - Products to update. Each can be partial based on its field mask.\n * @public\n * @documentationMaturity preview\n * @requiredField products\n * @requiredField products.product._id\n * @requiredField products.product.directCategories._id\n * @requiredField products.product.directCategories.namespace\n * @permissionId SUPPLIERS_HUB.PRODUCT_UPDATE\n * @applicableIdentity APP\n * @fqn wix.suppliershub.marketplace.product.v1.MarketplaceProduct.BulkUpdateProducts\n */\nexport async function bulkUpdateProducts(\n products: NonNullablePaths<\n MaskedProduct,\n | `product._id`\n | `product.directCategories.${number}._id`\n | `product.directCategories.${number}.namespace`,\n 5\n >[],\n options?: BulkUpdateProductsOptions\n): Promise<\n NonNullablePaths<\n BulkUpdateProductsResponse,\n | `results`\n | `results.${number}.itemMetadata.originalIndex`\n | `results.${number}.itemMetadata.success`\n | `results.${number}.itemMetadata.error.code`\n | `results.${number}.itemMetadata.error.description`\n | `results.${number}.item.supplierInfo.verified`\n | `bulkActionMetadata.totalSuccesses`\n | `bulkActionMetadata.totalFailures`\n | `bulkActionMetadata.undetailedFailures`,\n 6\n >\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[2] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = transformPaths(\n renameKeysFromSDKRequestToRESTRequest({\n products: products,\n returnEntity: options?.returnEntity,\n }),\n [\n {\n transformFn: transformSDKImageToRESTImage,\n paths: [\n { path: 'products.product.media.main' },\n { path: 'products.product.media.items', isRepeated: true },\n { path: 'products.product.printOnDemandOptions.mockupImage' },\n ],\n },\n ]\n );\n\n const reqOpts =\n ambassadorWixSuppliershubMarketplaceProductV1Product.bulkUpdateProducts(\n payload\n );\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(\n transformPaths(result.data, [\n {\n transformFn: transformRESTImageToSDKImage,\n paths: [\n { path: 'results.item.media.main' },\n { path: 'results.item.media.items', isRepeated: true },\n { path: 'results.item.printOnDemandOptions.mockupImage' },\n ],\n },\n ])\n )!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n products: '$[0]',\n returnEntity: '$[1].returnEntity',\n },\n singleArgumentUnchanged: false,\n },\n ['products', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface BulkUpdateProductsOptions {\n /**\n * Whether to return the updated products in the response.\n *\n * Default: `false`\n */\n returnEntity?: boolean;\n}\n\n/**\n * Deletes multiple products permanently in a single request. Supports partial success.\n *\n * Each result includes an `itemMetadata` object indicating success or failure with error details.\n * When handling failures, distinguish between validation errors which shouldn't be retried,\n * and transient errors which can be retried. Only retry failed items, not the entire batch.\n * @param productIds - Product IDs to delete.\n * @public\n * @documentationMaturity preview\n * @requiredField productIds\n * @permissionId SUPPLIERS_HUB.PRODUCT_DELETE\n * @applicableIdentity APP\n * @fqn wix.suppliershub.marketplace.product.v1.MarketplaceProduct.BulkDeleteProducts\n */\nexport async function bulkDeleteProducts(\n productIds: string[]\n): Promise<\n NonNullablePaths<\n BulkDeleteProductsResponse,\n | `results`\n | `results.${number}.itemMetadata.originalIndex`\n | `results.${number}.itemMetadata.success`\n | `results.${number}.itemMetadata.error.code`\n | `results.${number}.itemMetadata.error.description`\n | `bulkActionMetadata.totalSuccesses`\n | `bulkActionMetadata.totalFailures`\n | `bulkActionMetadata.undetailedFailures`,\n 6\n >\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n productIds: productIds,\n });\n\n const reqOpts =\n ambassadorWixSuppliershubMarketplaceProductV1Product.bulkDeleteProducts(\n payload\n );\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { productIds: '$[0]' },\n singleArgumentUnchanged: false,\n },\n ['productIds']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\n/**\n * Retrieves a list of products with filtering, sorting, and cursor-based pagination.\n *\n * Provides real-time, strongly consistent results with filtering, sorting, and pagination.\n *\n * Use Query Products when you need accurate, up-to-date data such as for operational tasks or inventory checks.\n * For product discovery and browsing with full-text search capabilities, use [Search Products](https://dev.wix.com/docs/api-reference/business-solutions/suppliers-hub/products/search-products) instead.\n * @public\n * @documentationMaturity preview\n * @permissionId SUPPLIERS_HUB.PRODUCT_READ\n * @applicableIdentity APP\n * @fqn wix.suppliershub.marketplace.product.v1.MarketplaceProduct.QueryProducts\n */\nexport function queryProducts(): ProductsQueryBuilder {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[0] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n return queryBuilder<\n Product,\n 'CURSOR',\n QueryProductsRequest,\n QueryProductsResponse\n >({\n func: async (payload: QueryProductsRequest) => {\n const reqOpts =\n ambassadorWixSuppliershubMarketplaceProductV1Product.queryProducts(\n payload\n );\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n return result;\n } catch (err) {\n sideEffects?.onError?.(err);\n throw err;\n }\n },\n requestTransformer: (query: QueryProductsRequest['query']) => {\n const args = [query, {}] as [QueryProductsRequest['query'], {}];\n return renameKeysFromSDKRequestToRESTRequest({\n ...args?.[1],\n query: args?.[0],\n });\n },\n responseTransformer: ({ data }: HttpResponse<QueryProductsResponse>) => {\n const transformedData = renameKeysFromRESTResponseToSDKResponse(\n transformPaths(data, [\n {\n transformFn: transformRESTImageToSDKImage,\n paths: [\n { path: 'products.media.main' },\n { path: 'products.media.items', isRepeated: true },\n { path: 'products.printOnDemandOptions.mockupImage' },\n ],\n },\n ])\n );\n\n return {\n items: transformedData?.products,\n pagingMetadata: transformedData?.pagingMetadata,\n };\n },\n errorTransformer: (err: unknown) => {\n const transformedError = sdkTransformError(err, {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { query: '$[0]' },\n singleArgumentUnchanged: false,\n });\n\n throw transformedError;\n },\n pagingMethod: 'CURSOR',\n transformationPaths: {},\n });\n}\n\ninterface QueryCursorResult {\n cursors: CommonCursors;\n hasNext: () => boolean;\n hasPrev: () => boolean;\n length: number;\n pageSize: number;\n}\n\nexport interface ProductsQueryResult extends QueryCursorResult {\n items: Product[];\n query: ProductsQueryBuilder;\n next: () => Promise<ProductsQueryResult>;\n prev: () => Promise<ProductsQueryResult>;\n}\n\nexport interface ProductsQueryBuilder {\n /** @param propertyName - Property whose value is compared with `value`.\n * @param value - Value to compare against.\n * @documentationMaturity preview\n */\n eq: (\n propertyName:\n | '_id'\n | '_createdDate'\n | 'providerInfo.appId'\n | 'providerInfo.productId'\n | 'name'\n | 'visible'\n | 'brand'\n | 'minimumPrice'\n | 'inventory.tier'\n | 'productOrigin'\n | 'directCategories.id'\n | 'directCategories.index'\n | 'allCategories.id'\n | 'allCategories.index'\n | 'wholesaleOptions.minimumOrderQuantity'\n | 'supplierInfo.id'\n | 'supplierInfo.rating'\n | 'supplierInfo.verified',\n value: any\n ) => ProductsQueryBuilder;\n /** @param propertyName - Property whose value is compared with `value`.\n * @param value - Value to compare against.\n * @documentationMaturity preview\n */\n ne: (\n propertyName:\n | '_id'\n | '_createdDate'\n | 'providerInfo.appId'\n | 'providerInfo.productId'\n | 'name'\n | 'visible'\n | 'brand'\n | 'minimumPrice'\n | 'inventory.tier'\n | 'productOrigin'\n | 'directCategories.id'\n | 'directCategories.index'\n | 'allCategories.id'\n | 'allCategories.index'\n | 'wholesaleOptions.minimumOrderQuantity'\n | 'supplierInfo.id'\n | 'supplierInfo.rating'\n | 'supplierInfo.verified',\n value: any\n ) => ProductsQueryBuilder;\n /** @param propertyName - Property whose value is compared with `value`.\n * @param value - Value to compare against.\n * @documentationMaturity preview\n */\n ge: (\n propertyName:\n | '_id'\n | '_createdDate'\n | 'providerInfo.appId'\n | 'providerInfo.productId'\n | 'name'\n | 'brand'\n | 'minimumPrice'\n | 'productOrigin'\n | 'directCategories.id'\n | 'directCategories.index'\n | 'allCategories.id'\n | 'allCategories.index'\n | 'wholesaleOptions.minimumOrderQuantity'\n | 'supplierInfo.id'\n | 'supplierInfo.rating',\n value: any\n ) => ProductsQueryBuilder;\n /** @param propertyName - Property whose value is compared with `value`.\n * @param value - Value to compare against.\n * @documentationMaturity preview\n */\n gt: (\n propertyName:\n | '_id'\n | '_createdDate'\n | 'providerInfo.appId'\n | 'providerInfo.productId'\n | 'name'\n | 'brand'\n | 'minimumPrice'\n | 'productOrigin'\n | 'directCategories.id'\n | 'directCategories.index'\n | 'allCategories.id'\n | 'allCategories.index'\n | 'wholesaleOptions.minimumOrderQuantity'\n | 'supplierInfo.id'\n | 'supplierInfo.rating',\n value: any\n ) => ProductsQueryBuilder;\n /** @param propertyName - Property whose value is compared with `value`.\n * @param value - Value to compare against.\n * @documentationMaturity preview\n */\n le: (\n propertyName:\n | '_id'\n | '_createdDate'\n | 'providerInfo.appId'\n | 'providerInfo.productId'\n | 'name'\n | 'brand'\n | 'minimumPrice'\n | 'productOrigin'\n | 'directCategories.id'\n | 'directCategories.index'\n | 'allCategories.id'\n | 'allCategories.index'\n | 'wholesaleOptions.minimumOrderQuantity'\n | 'supplierInfo.id'\n | 'supplierInfo.rating',\n value: any\n ) => ProductsQueryBuilder;\n /** @param propertyName - Property whose value is compared with `value`.\n * @param value - Value to compare against.\n * @documentationMaturity preview\n */\n lt: (\n propertyName:\n | '_id'\n | '_createdDate'\n | 'providerInfo.appId'\n | 'providerInfo.productId'\n | 'name'\n | 'brand'\n | 'minimumPrice'\n | 'productOrigin'\n | 'directCategories.id'\n | 'directCategories.index'\n | 'allCategories.id'\n | 'allCategories.index'\n | 'wholesaleOptions.minimumOrderQuantity'\n | 'supplierInfo.id'\n | 'supplierInfo.rating',\n value: any\n ) => ProductsQueryBuilder;\n /** @param propertyName - Property whose value is compared with `string`.\n * @param string - String to compare against. Case-insensitive.\n * @documentationMaturity preview\n */\n startsWith: (\n propertyName:\n | '_id'\n | 'providerInfo.appId'\n | 'providerInfo.productId'\n | 'name'\n | 'brand'\n | 'minimumPrice'\n | 'productOrigin'\n | 'directCategories.id'\n | 'allCategories.id'\n | 'supplierInfo.id'\n | 'supplierInfo.rating',\n value: string\n ) => ProductsQueryBuilder;\n /** @param propertyName - Property whose value is compared with `values`.\n * @param values - List of values to compare against.\n * @documentationMaturity preview\n */\n hasSome: (\n propertyName:\n | '_id'\n | '_createdDate'\n | 'providerInfo.appId'\n | 'providerInfo.productId'\n | 'name'\n | 'visible'\n | 'brand'\n | 'minimumPrice'\n | 'inventory.tier'\n | 'productOrigin'\n | 'directCategories.id'\n | 'directCategories.index'\n | 'allCategories.id'\n | 'allCategories.index'\n | 'wholesaleOptions.minimumOrderQuantity'\n | 'supplierInfo.id'\n | 'supplierInfo.rating'\n | 'supplierInfo.verified',\n value: any[]\n ) => ProductsQueryBuilder;\n /** @documentationMaturity preview */\n in: (\n propertyName:\n | '_id'\n | '_createdDate'\n | 'providerInfo.appId'\n | 'providerInfo.productId'\n | 'name'\n | 'visible'\n | 'brand'\n | 'minimumPrice'\n | 'inventory.tier'\n | 'productOrigin'\n | 'directCategories.id'\n | 'directCategories.index'\n | 'allCategories.id'\n | 'allCategories.index'\n | 'wholesaleOptions.minimumOrderQuantity'\n | 'supplierInfo.id'\n | 'supplierInfo.rating'\n | 'supplierInfo.verified',\n value: any\n ) => ProductsQueryBuilder;\n /** @documentationMaturity preview */\n exists: (\n propertyName:\n | '_id'\n | '_createdDate'\n | 'providerInfo.appId'\n | 'providerInfo.productId'\n | 'name'\n | 'visible'\n | 'brand'\n | 'minimumPrice'\n | 'inventory.tier'\n | 'productOrigin'\n | 'directCategories.id'\n | 'directCategories.index'\n | 'allCategories.id'\n | 'allCategories.index'\n | 'wholesaleOptions.minimumOrderQuantity'\n | 'supplierInfo.id'\n | 'supplierInfo.rating'\n | 'supplierInfo.verified',\n value: boolean\n ) => ProductsQueryBuilder;\n /** @param propertyNames - Properties used in the sort. To sort by multiple properties, pass properties as additional arguments.\n * @documentationMaturity preview\n */\n ascending: (\n ...propertyNames: Array<\n | '_createdDate'\n | 'minimumPrice'\n | 'directCategories.index'\n | 'allCategories.index'\n | 'supplierInfo.rating'\n >\n ) => ProductsQueryBuilder;\n /** @param propertyNames - Properties used in the sort. To sort by multiple properties, pass properties as additional arguments.\n * @documentationMaturity preview\n */\n descending: (\n ...propertyNames: Array<\n | '_createdDate'\n | 'minimumPrice'\n | 'directCategories.index'\n | 'allCategories.index'\n | 'supplierInfo.rating'\n >\n ) => ProductsQueryBuilder;\n /** @param limit - Number of items to return, which is also the `pageSize` of the results object.\n * @documentationMaturity preview\n */\n limit: (limit: number) => ProductsQueryBuilder;\n /** @param cursor - A pointer to specific record\n * @documentationMaturity preview\n */\n skipTo: (cursor: string) => ProductsQueryBuilder;\n /** @documentationMaturity preview */\n find: () => Promise<ProductsQueryResult>;\n}\n\n/**\n * @hidden\n * @fqn wix.suppliershub.marketplace.product.v1.MarketplaceProduct.QueryProducts\n * @requiredField query\n */\nexport async function typedQueryProducts(\n query: ProductQuery\n): Promise<\n NonNullablePaths<\n QueryProductsResponse,\n | `products`\n | `products.${number}.orderProcessingTime.min.value`\n | `products.${number}.orderProcessingTime.min.unit`\n | `products.${number}.supplierInfo.verified`,\n 6\n >\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({ query: query });\n\n const reqOpts =\n ambassadorWixSuppliershubMarketplaceProductV1Product.queryProducts(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(\n transformPaths(result.data, [\n {\n transformFn: transformRESTImageToSDKImage,\n paths: [\n { path: 'products.media.main' },\n { path: 'products.media.items', isRepeated: true },\n { path: 'products.printOnDemandOptions.mockupImage' },\n ],\n },\n ])\n )!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { query: '$[0]' },\n singleArgumentUnchanged: false,\n },\n ['query']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface ProductQuerySpec extends QuerySpec {\n paging: 'cursor';\n wql: [\n {\n fields: [\n 'allCategories',\n 'directCategories',\n 'options',\n 'options.values',\n 'shippingDestinations'\n ];\n operators: ['$matchItems'];\n sort: 'NONE';\n },\n {\n fields: ['printOnDemandOptions.printTechnologies', 'types'];\n operators: ['$hasAll', '$hasSome'];\n sort: 'NONE';\n },\n {\n fields: [\n '_id',\n 'brand',\n 'inventory.tier',\n 'name',\n 'productOrigin',\n 'providerInfo.appId',\n 'providerInfo.productId',\n 'supplierInfo._id',\n 'supplierInfo.verified',\n 'visible',\n 'wholesaleOptions.minimumOrderQuantity'\n ];\n operators: '*';\n sort: 'NONE';\n },\n {\n fields: ['_createdDate', 'minimumPrice', 'supplierInfo.rating'];\n operators: '*';\n sort: 'BOTH';\n }\n ];\n}\n\nexport type CommonQueryWithEntityContext = QuerySdkType<\n Product,\n ProductQuerySpec\n>;\nexport type ProductQuery = {\n /** \n Cursor token pointing to a page of results. Not used in the first request. Following requests use the cursor token and not `filter` or `sort`. \n */\n cursorPaging?: {\n /** \n Maximum number of items to return in the results. \n @max: 100 \n */\n limit?:\n | NonNullable<CommonQueryWithEntityContext['cursorPaging']>['limit']\n | null;\n /** \n Pointer to the next or previous page in the list of results.\n\n Pass the relevant cursor token from the `pagingMetadata` object in the previous call's response.\n Not relevant for the first request. \n @maxLength: 16000 \n */\n cursor?:\n | NonNullable<CommonQueryWithEntityContext['cursorPaging']>['cursor']\n | null;\n };\n /** \n Filter object in the following format:\n `\"filter\" : {\n \"fieldName1\": \"value1\",\n \"fieldName2\":{\"$operator\":\"value2\"}\n }`\n Example of operators: `$eq`, `$ne`, `$lt`, `$lte`, `$gt`, `$gte`, `$in`, `$hasSome`, `$hasAll`, `$startsWith`, `$contains` \n */\n filter?: CommonQueryWithEntityContext['filter'] | null;\n /** \n Sort object in the following format:\n `[{\"fieldName\":\"sortField1\",\"order\":\"ASC\"},{\"fieldName\":\"sortField2\",\"order\":\"DESC\"}]` \n @maxSize: 5 \n */\n sort?: {\n /** \n Name of the field to sort by. \n @maxLength: 512 \n */\n fieldName?: NonNullable<\n CommonQueryWithEntityContext['sort']\n >[number]['fieldName'];\n /** \n Sort order. \n */\n order?: NonNullable<CommonQueryWithEntityContext['sort']>[number]['order'];\n /** \n Filters to specify which element to use for sorting when `fieldName` refers to a repeated field marked as `MATCH_ITEMS`.\n\n These filters ensure the correct element is selected from the collection for sorting. Multiple filters are combined using the `AND` operator.\n\n For example, for a document like `{\"id\": \"1\", \"nestedField\": [{\"price\": 10, \"region\": \"EU\"}, {\"price\": 20, \"region\": \"US\"}]}`,\n if `nestedField` is marked as `MATCH_ITEMS`, sorting by price in the US region requires:\n `{fieldName: \"nestedField.price\", \"selectItemsBy\": [{\"nestedField.region\": \"US\"}]}`. \n @maxSize: 10 \n */\n selectItemsBy?:\n | NonNullable<\n CommonQueryWithEntityContext['sort']\n >[number]['selectItemsBy']\n | null;\n }[];\n};\n\nexport const utils = {\n query: {\n ...createQueryUtils<Product, ProductQuerySpec, ProductQuery>(),\n },\n search: {\n ...createSearchUtils<Product, ProductSearchSpec, ProductSearch>(),\n },\n};\n\n/**\n * Retrieves a list of products, given the provided filtering, search expression, sorting, and cursor paging.\n *\n * Provides eventually consistent results optimized for product discovery and browsing.\n * Search supports full-text queries, filters, sorting, and aggregations for faceted search.\n *\n * Use Search Products for user-facing product catalogs and discovery features.\n * For real-time accuracy in operational tasks, use [Query Products](https://dev.wix.com/docs/api-reference/business-solutions/suppliers-hub/products/query-products) instead.\n * @param search - Search parameters including filter, sort, full-text search, and aggregations.\n * @public\n * @documentationMaturity preview\n * @requiredField search\n * @permissionId SUPPLIERS_HUB.PRODUCT_READ\n * @applicableIdentity APP\n * @fqn wix.suppliershub.marketplace.product.v1.MarketplaceProduct.SearchProducts\n */\nexport async function searchProducts(\n search: ProductSearch\n): Promise<\n NonNullablePaths<\n SearchProductsResponse,\n | `products`\n | `products.${number}.orderProcessingTime.min.value`\n | `products.${number}.orderProcessingTime.min.unit`\n | `products.${number}.supplierInfo.verified`\n | `aggregationData.results`\n | `aggregationData.results.${number}.scalar.type`\n | `aggregationData.results.${number}.scalar.value`\n | `aggregationData.results.${number}.name`\n | `aggregationData.results.${number}.type`\n | `aggregationData.results.${number}.fieldPath`,\n 6\n >\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({ search: search });\n\n const reqOpts =\n ambassadorWixSuppliershubMarketplaceProductV1Product.searchProducts(\n payload\n );\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(\n transformPaths(result.data, [\n {\n transformFn: transformRESTImageToSDKImage,\n paths: [\n { path: 'products.media.main' },\n { path: 'products.media.items', isRepeated: true },\n { path: 'products.printOnDemandOptions.mockupImage' },\n ],\n },\n ])\n )!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { search: '$[0]' },\n singleArgumentUnchanged: false,\n },\n ['search']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface ProductSearchSpec extends SearchSpec {\n searchable: ['brand', 'description', 'name'];\n aggregatable: [\n '_createdDate',\n '_id',\n 'allCategories',\n 'allCategories._id',\n 'allCategories.index',\n 'brand',\n 'directCategories',\n 'directCategories._id',\n 'directCategories.index',\n 'inventory.tier',\n 'minimumPrice',\n 'name',\n 'options',\n 'options.values',\n 'printOnDemandOptions.printTechnologies',\n 'productOrigin',\n 'providerInfo.appId',\n 'providerInfo.productId',\n 'shippingDestinations',\n 'supplierInfo._id',\n 'supplierInfo.rating',\n 'supplierInfo.verified',\n 'types',\n 'visible',\n 'wholesaleOptions.minimumOrderQuantity'\n ];\n paging: 'cursor';\n wql: [\n {\n operators: ['$matchItems'];\n fields: [\n 'allCategories',\n 'directCategories',\n 'options',\n 'options.values',\n 'shippingDestinations'\n ];\n sort: 'NONE';\n },\n {\n operators: ['$hasAll', '$hasSome'];\n fields: ['printOnDemandOptions.printTechnologies', 'types'];\n sort: 'NONE';\n },\n {\n operators: '*';\n fields: [\n '_id',\n 'brand',\n 'inventory.tier',\n 'name',\n 'productOrigin',\n 'providerInfo.appId',\n 'providerInfo.productId',\n 'supplierInfo._id',\n 'supplierInfo.verified',\n 'visible',\n 'wholesaleOptions.minimumOrderQuantity'\n ];\n sort: 'NONE';\n },\n {\n operators: '*';\n fields: ['_createdDate', 'minimumPrice', 'supplierInfo.rating'];\n sort: 'BOTH';\n }\n ];\n}\n\nexport type CommonSearchWithEntityContext = SearchSdkType<\n Product,\n ProductSearchSpec\n>;\nexport type ProductSearch = {\n /** \n Cursor pointing to page of results.\n When requesting 'cursor_paging.cursor', no `filter`, `sort` or `search` can be provided. \n */\n cursorPaging?: {\n /** \n Maximum number of items to return in the results. \n @max: 100 \n */\n limit?:\n | NonNullable<CommonSearchWithEntityContext['cursorPaging']>['limit']\n | null;\n /** \n Pointer to the next or previous page in the list of results.\n\n Pass the relevant cursor token from the `pagingMetadata` object in the previous call's response.\n Not relevant for the first request. \n @maxLength: 16000 \n */\n cursor?:\n | NonNullable<CommonSearchWithEntityContext['cursorPaging']>['cursor']\n | null;\n };\n /** \n A filter object. See documentation [here](https://bo.wix.com/wix-docs/rnd/platformization-guidelines/api-query-language#platformization-guidelines_api-query-language_defining-in-protobuf) \n */\n filter?: CommonSearchWithEntityContext['filter'] | null;\n /** \n Sort object in the form [{\"fieldName\":\"sortField1\"},{\"fieldName\":\"sortField2\",\"direction\":\"DESC\"}] \n @maxSize: 10 \n */\n sort?: {\n /** \n Name of the field to sort by. \n @maxLength: 512 \n */\n fieldName?: NonNullable<\n CommonSearchWithEntityContext['sort']\n >[number]['fieldName'];\n /** \n Sort order. \n */\n order?: NonNullable<CommonSearchWithEntityContext['sort']>[number]['order'];\n /** \n Filters to specify which element to use for sorting when `fieldName` refers to a repeated field marked as `MATCH_ITEMS`.\n\n These filters ensure the correct element is selected from the collection for sorting. Multiple filters are combined using the `AND` operator.\n\n For example, for a document like `{\"id\": \"1\", \"nestedField\": [{\"price\": 10, \"region\": \"EU\"}, {\"price\": 20, \"region\": \"US\"}]}`,\n if `nestedField` is marked as `MATCH_ITEMS`, sorting by price in the US region requires:\n `{fieldName: \"nestedField.price\", \"selectItemsBy\": [{\"nestedField.region\": \"US\"}]}`. \n @maxSize: 10 \n */\n selectItemsBy?:\n | NonNullable<\n CommonSearchWithEntityContext['sort']\n >[number]['selectItemsBy']\n | null;\n }[];\n /** \n Aggregations | Faceted search: refers to a way to explore large amounts of data by displaying summaries about various partitions of the data and later allowing to narrow the navigation to a specific partition. \n @maxSize: 10 \n */\n aggregations?: {\n /** \n Value aggregation \n */\n value?: NonNullable<\n CommonSearchWithEntityContext['aggregations']\n >[number]['value'];\n /** \n Range aggregation \n */\n range?: NonNullable<\n CommonSearchWithEntityContext['aggregations']\n >[number]['range'];\n /** \n Scalar aggregation \n */\n scalar?: NonNullable<\n CommonSearchWithEntityContext['aggregations']\n >[number]['scalar'];\n /** \n Date histogram aggregation \n */\n dateHistogram?: NonNullable<\n CommonSearchWithEntityContext['aggregations']\n >[number]['dateHistogram'];\n /** \n Nested aggregation \n */\n nested?: NonNullable<\n CommonSearchWithEntityContext['aggregations']\n >[number]['nested'];\n /** \n User-defined name of aggregation, should be unique, will appear in aggregation results \n @maxLength: 100 \n */\n name?:\n | NonNullable<\n CommonSearchWithEntityContext['aggregations']\n >[number]['name']\n | null;\n /** \n Type of aggregation, client must provide matching aggregation field below \n */\n type?: NonNullable<\n CommonSearchWithEntityContext['aggregations']\n >[number]['type'];\n /** \n Field to aggregate by, use dot notation to specify json path \n @maxLength: 200 \n */\n fieldPath?: NonNullable<\n CommonSearchWithEntityContext['aggregations']\n >[number]['fieldPath'];\n }[];\n /** \n Free text to match in searchable fields \n */\n search?: {\n /** \n Search term or expression \n @maxLength: 100 \n */\n expression?:\n | NonNullable<CommonSearchWithEntityContext['search']>['expression']\n | null;\n };\n /** \n UTC offset or IANA time zone. Valid values are\n ISO 8601 UTC offsets, such as +02:00 or -06:00,\n and IANA time zone IDs, such as Europe/Rome\n\n Affects all filters and aggregations returned values.\n You may override this behavior in a specific filter by providing\n timestamps including time zone. e.g. `\"2023-12-20T10:52:34.795Z\"` \n @maxLength: 50 \n */\n timeZone?: CommonSearchWithEntityContext['timeZone'] | null;\n};\n\n/**\n * Updates tags on multiple products by product IDs.\n *\n * A tag that appears both in the list of assign and unassign tags, will be assigned\n * @param productIds - Product IDs to update tags for.\n * @public\n * @documentationMaturity preview\n * @requiredField productIds\n * @permissionId SUPPLIERS_HUB.PRODUCT_UPDATE_TAGS\n * @applicableIdentity APP\n * @fqn wix.suppliershub.marketplace.product.v1.MarketplaceProduct.BulkUpdateProductTags\n */\nexport async function bulkUpdateProductTags(\n productIds: string[],\n options?: BulkUpdateProductTagsOptions\n): Promise<\n NonNullablePaths<\n BulkUpdateProductTagsResponse,\n | `results`\n | `results.${number}.itemMetadata.originalIndex`\n | `results.${number}.itemMetadata.success`\n | `results.${number}.itemMetadata.error.code`\n | `results.${number}.itemMetadata.error.description`\n | `bulkActionMetadata.totalSuccesses`\n | `bulkActionMetadata.totalFailures`\n | `bulkActionMetadata.undetailedFailures`,\n 6\n > & {\n __applicationErrorsType?: BulkUpdateProductTagsApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[2] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n productIds: productIds,\n assignTags: options?.assignTags,\n unassignTags: options?.unassignTags,\n });\n\n const reqOpts =\n ambassadorWixSuppliershubMarketplaceProductV1Product.bulkUpdateProductTags(\n payload\n );\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n productIds: '$[0]',\n assignTags: '$[1].assignTags',\n unassignTags: '$[1].unassignTags',\n },\n singleArgumentUnchanged: false,\n },\n ['productIds', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface BulkUpdateProductTagsOptions {\n /** Tags to assign to the products. */\n assignTags?: Tags;\n /** Tags to remove from the products. */\n unassignTags?: Tags;\n}\n\n/**\n * Updates tags on multiple products matching a filter.\n *\n * This operation runs asynchronously because it can potentially affect thousands of products.\n * The response includes a `jobId` for tracking the operation's progress.\n *\n * An empty filter updates all products. If a tag appears in both assign and unassign lists, it will be assigned.\n * @param filter - Filter to select products for tag updates. Empty filter updates all products.\n * @public\n * @documentationMaturity preview\n * @requiredField filter\n * @permissionId SUPPLIERS_HUB.PRODUCT_UPDATE_TAGS\n * @applicableIdentity APP\n * @fqn wix.suppliershub.marketplace.product.v1.MarketplaceProduct.BulkUpdateProductTagsByFilter\n */\nexport async function bulkUpdateProductTagsByFilter(\n filter: Record<string, any>,\n options?: BulkUpdateProductTagsByFilterOptions\n): Promise<\n NonNullablePaths<BulkUpdateProductTagsByFilterResponse, `jobId`, 2> & {\n __applicationErrorsType?: BulkUpdateProductTagsByFilterApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[2] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n filter: filter,\n assignTags: options?.assignTags,\n unassignTags: options?.unassignTags,\n });\n\n const reqOpts =\n ambassadorWixSuppliershubMarketplaceProductV1Product.bulkUpdateProductTagsByFilter(\n payload\n );\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n filter: '$[0]',\n assignTags: '$[1].assignTags',\n unassignTags: '$[1].unassignTags',\n },\n singleArgumentUnchanged: false,\n },\n ['filter', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface BulkUpdateProductTagsByFilterOptions {\n /** Tags to assign to matching products. */\n assignTags?: Tags;\n /** Tags to remove from matching products. */\n unassignTags?: Tags;\n}\n\n/**\n * Queries categories using [WQL - Wix Query Language](https://dev.wix.com/api/rest/getting-started/api-query-language).\n *\n * Supports filtering, sorting, and pagination.\n * @public\n * @documentationMaturity preview\n * @requiredField options.namespace\n * @permissionId SUPPLIERS_HUB.CATEGORY_READ\n * @applicableIdentity APP\n * @fqn wix.suppliershub.marketplace.product.v1.MarketplaceProduct.QueryCategories\n */\nexport async function queryCategories(\n options?: NonNullablePaths<QueryCategoriesOptions, `namespace`, 2>\n): Promise<\n NonNullablePaths<\n QueryCategoriesResponse,\n `categories` | `categories.${number}.itemCount`,\n 4\n >\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n query: options?.query,\n namespace: options?.namespace,\n returnNonVisibleCategories: options?.returnNonVisibleCategories,\n });\n\n const reqOpts =\n ambassadorWixSuppliershubMarketplaceProductV1Product.queryCategories(\n payload\n );\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n query: '$[0].query',\n namespace: '$[0].namespace',\n returnNonVisibleCategories: '$[0].returnNonVisibleCategories',\n },\n singleArgumentUnchanged: false,\n },\n ['options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface QueryCategoriesOptions {\n /** Query parameters including filter, sort, and paging options. */\n query?: CursorQuery;\n /** The namespace this category belongs to. */\n namespace: CategoryNamespaceWithLiterals;\n /** Whether non visible categories should be included in the response. Default is `false`. */\n returnNonVisibleCategories?: boolean;\n}\n","import { toURLSearchParams } from '@wix/sdk-runtime/rest-modules';\nimport { transformSDKFloatToRESTFloat } from '@wix/sdk-runtime/transformations/float';\nimport { transformRESTFloatToSDKFloat } from '@wix/sdk-runtime/transformations/float';\nimport { transformSDKTimestampToRESTTimestamp } from '@wix/sdk-runtime/transformations/timestamp';\nimport { transformRESTTimestampToSDKTimestamp } from '@wix/sdk-runtime/transformations/timestamp';\nimport { transformSDKFieldMaskToRESTFieldMask } from '@wix/sdk-runtime/transformations/field-mask';\nimport { transformPaths } from '@wix/sdk-runtime/transformations/transform-paths';\nimport { resolveUrl } from '@wix/sdk-runtime/rest-modules';\nimport { ResolveUrlOpts } from '@wix/sdk-runtime/rest-modules';\nimport { RequestOptionsFactory } from '@wix/sdk-types';\n\nfunction resolveWixSuppliershubMarketplaceProductV1MarketplaceProductUrl(\n opts: Omit<ResolveUrlOpts, 'domainToMappings'>\n) {\n const domainToMappings = {\n 'manage._base_domain_': [\n {\n srcPath: '/_api/marketplace-product',\n destPath: '',\n },\n ],\n 'api._api_base_domain_': [\n {\n srcPath: '/marketplace-product',\n destPath: '',\n },\n ],\n 'www.wixapis.com': [\n {\n srcPath: '/suppliers-hub/v1/products',\n destPath: '/v1/products',\n },\n {\n srcPath: '/suppliers-hub/v1/bulk/products',\n destPath: '/v1/bulk/products',\n },\n {\n srcPath: '/suppliers-hub/v1/categories',\n destPath: '/v1/categories',\n },\n {\n srcPath: '/suppliershub/marketplace-product/v1/products',\n destPath: '/v1/products',\n },\n ],\n '*.dev.wix-code.com': [\n {\n srcPath: '/suppliershub/marketplace-product/v1/products',\n destPath: '/v1/products',\n },\n {\n srcPath: '/suppliershub/marketplace-product/v1/bulk/products',\n destPath: '/v1/bulk/products',\n },\n {\n srcPath: '/suppliershub/marketplace-product/v1/categories/query',\n destPath: '/v1/categories/query',\n },\n ],\n _: [\n {\n srcPath: '/suppliershub/marketplace-product/v1/products',\n destPath: '/v1/products',\n },\n {\n srcPath: '/suppliershub/marketplace-product/v1/bulk/products',\n destPath: '/v1/bulk/products',\n },\n {\n srcPath: '/suppliershub/marketplace-product/v1/categories/query',\n destPath: '/v1/categories/query',\n },\n ],\n };\n\n return resolveUrl(Object.assign(opts, { domainToMappings }));\n}\n\nconst PACKAGE_NAME = '@wix/auto_sdk_suppliers-hub_products';\n\n/**\n * Creates a product in the Marketplace.\n *\n * Products must include all required fields for the specified types.\n * The first image in `media.items` becomes the main image.\n */\nexport function createProduct(payload: object): RequestOptionsFactory<any> {\n function __createProduct({ host }: any) {\n const serializedData = transformPaths(payload, [\n {\n transformFn: transformSDKTimestampToRESTTimestamp,\n paths: [\n { path: 'product.createdDate' },\n { path: 'product.updatedDate' },\n { path: 'product.providerInfo.productCreatedDate' },\n { path: 'product.media.main.urlExpirationDate' },\n { path: 'product.media.items.urlExpirationDate' },\n {\n path: 'product.printOnDemandOptions.mockupImage.urlExpirationDate',\n },\n ],\n },\n {\n transformFn: transformSDKFloatToRESTFloat,\n paths: [\n { path: 'product.media.main.focalPoint.x' },\n { path: 'product.media.main.focalPoint.y' },\n { path: 'product.media.items.focalPoint.x' },\n { path: 'product.media.items.focalPoint.y' },\n { path: 'product.printOnDemandOptions.mockupImage.focalPoint.x' },\n { path: 'product.printOnDemandOptions.mockupImage.focalPoint.y' },\n ],\n },\n ]);\n const metadata = {\n entityFqdn: 'wix.suppliershub.marketplace_product.v1.product',\n method: 'POST' as any,\n methodFqn:\n 'wix.suppliershub.marketplace.product.v1.MarketplaceProduct.CreateProduct',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixSuppliershubMarketplaceProductV1MarketplaceProductUrl({\n protoPath: '/v1/products',\n data: serializedData,\n host,\n }),\n data: serializedData,\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [\n { path: 'product.createdDate' },\n { path: 'product.updatedDate' },\n { path: 'product.providerInfo.productCreatedDate' },\n { path: 'product.media.main.urlExpirationDate' },\n { path: 'product.media.items.urlExpirationDate' },\n {\n path: 'product.printOnDemandOptions.mockupImage.urlExpirationDate',\n },\n ],\n },\n {\n transformFn: transformRESTFloatToSDKFloat,\n paths: [\n { path: 'product.media.main.focalPoint.x' },\n { path: 'product.media.main.focalPoint.y' },\n { path: 'product.media.items.focalPoint.x' },\n { path: 'product.media.items.focalPoint.y' },\n { path: 'product.printOnDemandOptions.mockupImage.focalPoint.x' },\n { path: 'product.printOnDemandOptions.mockupImage.focalPoint.y' },\n ],\n },\n ]),\n };\n\n return metadata;\n }\n\n return __createProduct;\n}\n\n/** Retrieves a product by ID. */\nexport function getProduct(payload: object): RequestOptionsFactory<any> {\n function __getProduct({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.suppliershub.marketplace_product.v1.product',\n method: 'GET' as any,\n methodFqn:\n 'wix.suppliershub.marketplace.product.v1.MarketplaceProduct.GetProduct',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixSuppliershubMarketplaceProductV1MarketplaceProductUrl({\n protoPath: '/v1/products/{productId}',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload),\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [\n { path: 'product.createdDate' },\n { path: 'product.updatedDate' },\n { path: 'product.providerInfo.productCreatedDate' },\n { path: 'product.media.main.urlExpirationDate' },\n { path: 'product.media.items.urlExpirationDate' },\n {\n path: 'product.printOnDemandOptions.mockupImage.urlExpirationDate',\n },\n ],\n },\n {\n transformFn: transformRESTFloatToSDKFloat,\n paths: [\n { path: 'product.media.main.focalPoint.x' },\n { path: 'product.media.main.focalPoint.y' },\n { path: 'product.media.items.focalPoint.x' },\n { path: 'product.media.items.focalPoint.y' },\n { path: 'product.printOnDemandOptions.mockupImage.focalPoint.x' },\n { path: 'product.printOnDemandOptions.mockupImage.focalPoint.y' },\n ],\n },\n ]),\n };\n\n return metadata;\n }\n\n return __getProduct;\n}\n\n/**\n * Updates a product. Supports partial updates.\n *\n * Provider info fields (`providerInfo.productId` and `providerInfo.productCreatedDate`) are immutable and cannot be\n * changed after creation.\n */\nexport function updateProduct(payload: object): RequestOptionsFactory<any> {\n function __updateProduct({ host }: any) {\n const serializedData = transformPaths(payload, [\n {\n transformFn: transformSDKFieldMaskToRESTFieldMask,\n paths: [{ path: 'fieldMask' }],\n },\n {\n transformFn: transformSDKTimestampToRESTTimestamp,\n paths: [\n { path: 'product.createdDate' },\n { path: 'product.updatedDate' },\n { path: 'product.providerInfo.productCreatedDate' },\n { path: 'product.media.main.urlExpirationDate' },\n { path: 'product.media.items.urlExpirationDate' },\n {\n path: 'product.printOnDemandOptions.mockupImage.urlExpirationDate',\n },\n ],\n },\n {\n transformFn: transformSDKFloatToRESTFloat,\n paths: [\n { path: 'product.media.main.focalPoint.x' },\n { path: 'product.media.main.focalPoint.y' },\n { path: 'product.media.items.focalPoint.x' },\n { path: 'product.media.items.focalPoint.y' },\n { path: 'product.printOnDemandOptions.mockupImage.focalPoint.x' },\n { path: 'product.printOnDemandOptions.mockupImage.focalPoint.y' },\n ],\n },\n ]);\n const metadata = {\n entityFqdn: 'wix.suppliershub.marketplace_product.v1.product',\n method: 'PATCH' as any,\n methodFqn:\n 'wix.suppliershub.marketplace.product.v1.MarketplaceProduct.UpdateProduct',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixSuppliershubMarketplaceProductV1MarketplaceProductUrl({\n protoPath: '/v1/products/{product.id}',\n data: serializedData,\n host,\n }),\n data: serializedData,\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [\n { path: 'product.createdDate' },\n { path: 'product.updatedDate' },\n { path: 'product.providerInfo.productCreatedDate' },\n { path: 'product.media.main.urlExpirationDate' },\n { path: 'product.media.items.urlExpirationDate' },\n {\n path: 'product.printOnDemandOptions.mockupImage.urlExpirationDate',\n },\n ],\n },\n {\n transformFn: transformRESTFloatToSDKFloat,\n paths: [\n { path: 'product.media.main.focalPoint.x' },\n { path: 'product.media.main.focalPoint.y' },\n { path: 'product.media.items.focalPoint.x' },\n { path: 'product.media.items.focalPoint.y' },\n { path: 'product.printOnDemandOptions.mockupImage.focalPoint.x' },\n { path: 'product.printOnDemandOptions.mockupImage.focalPoint.y' },\n ],\n },\n ]),\n };\n\n return metadata;\n }\n\n return __updateProduct;\n}\n\n/**\n * Deletes a product permanently from the Marketplace.\n *\n * This action cannot be undone. The product will no longer be available for store owners to add to their stores.\n */\nexport function deleteProduct(payload: object): RequestOptionsFactory<any> {\n function __deleteProduct({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.suppliershub.marketplace_product.v1.product',\n method: 'DELETE' as any,\n methodFqn:\n 'wix.suppliershub.marketplace.product.v1.MarketplaceProduct.DeleteProduct',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixSuppliershubMarketplaceProductV1MarketplaceProductUrl({\n protoPath: '/v1/products/{productId}',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload),\n };\n\n return metadata;\n }\n\n return __deleteProduct;\n}\n\n/**\n * Creates multiple products in a single request.\n *\n * Supports partial success - some products may be created successfully while others fail.\n * Each result includes an `itemMetadata` object indicating success or failure with error details.\n *\n * When handling failures, distinguish between validation errors which shouldn't be retried,\n * and transient errors which can be retried. Only retry failed items, not the entire batch.\n */\nexport function bulkCreateProducts(\n payload: object\n): RequestOptionsFactory<any> {\n function __bulkCreateProducts({ host }: any) {\n const serializedData = transformPaths(payload, [\n {\n transformFn: transformSDKTimestampToRESTTimestamp,\n paths: [\n { path: 'products.createdDate' },\n { path: 'products.updatedDate' },\n { path: 'products.providerInfo.productCreatedDate' },\n { path: 'products.media.main.urlExpirationDate' },\n { path: 'products.media.items.urlExpirationDate' },\n {\n path: 'products.printOnDemandOptions.mockupImage.urlExpirationDate',\n },\n ],\n },\n {\n transformFn: transformSDKFloatToRESTFloat,\n paths: [\n { path: 'products.media.main.focalPoint.x' },\n { path: 'products.media.main.focalPoint.y' },\n { path: 'products.media.items.focalPoint.x' },\n { path: 'products.media.items.focalPoint.y' },\n { path: 'products.printOnDemandOptions.mockupImage.focalPoint.x' },\n { path: 'products.printOnDemandOptions.mockupImage.focalPoint.y' },\n ],\n },\n ]);\n const metadata = {\n entityFqdn: 'wix.suppliershub.marketplace_product.v1.product',\n method: 'POST' as any,\n methodFqn:\n 'wix.suppliershub.marketplace.product.v1.MarketplaceProduct.BulkCreateProducts',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixSuppliershubMarketplaceProductV1MarketplaceProductUrl({\n protoPath: '/v1/bulk/products/create',\n data: serializedData,\n host,\n }),\n data: serializedData,\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [\n { path: 'results.item.createdDate' },\n { path: 'results.item.updatedDate' },\n { path: 'results.item.providerInfo.productCreatedDate' },\n { path: 'results.item.media.main.urlExpirationDate' },\n { path: 'results.item.media.items.urlExpirationDate' },\n {\n path: 'results.item.printOnDemandOptions.mockupImage.urlExpirationDate',\n },\n ],\n },\n {\n transformFn: transformRESTFloatToSDKFloat,\n paths: [\n { path: 'results.item.media.main.focalPoint.x' },\n { path: 'results.item.media.main.focalPoint.y' },\n { path: 'results.item.media.items.focalPoint.x' },\n { path: 'results.item.media.items.focalPoint.y' },\n {\n path: 'results.item.printOnDemandOptions.mockupImage.focalPoint.x',\n },\n {\n path: 'results.item.printOnDemandOptions.mockupImage.focalPoint.y',\n },\n ],\n },\n ]),\n };\n\n return metadata;\n }\n\n return __bulkCreateProducts;\n}\n\n/**\n * Updates multiple products in a single request.\n *\n * Supports partial success and partial field updates. Each result includes an `itemMetadata` object indicating success or failure with error details.\n *\n * When handling failures, distinguish between validation errors which shouldn't be retried,\n * and transient errors which can be retried. Only retry failed items, not the entire batch.\n */\nexport function bulkUpdateProducts(\n payload: object\n): RequestOptionsFactory<any> {\n function __bulkUpdateProducts({ host }: any) {\n const serializedData = transformPaths(payload, [\n {\n transformFn: transformSDKFieldMaskToRESTFieldMask,\n paths: [{ path: 'products.fieldMask' }],\n },\n {\n transformFn: transformSDKTimestampToRESTTimestamp,\n paths: [\n { path: 'products.product.createdDate' },\n { path: 'products.product.updatedDate' },\n { path: 'products.product.providerInfo.productCreatedDate' },\n { path: 'products.product.media.main.urlExpirationDate' },\n { path: 'products.product.media.items.urlExpirationDate' },\n {\n path: 'products.product.printOnDemandOptions.mockupImage.urlExpirationDate',\n },\n ],\n },\n {\n transformFn: transformSDKFloatToRESTFloat,\n paths: [\n { path: 'products.product.media.main.focalPoint.x' },\n { path: 'products.product.media.main.focalPoint.y' },\n { path: 'products.product.media.items.focalPoint.x' },\n { path: 'products.product.media.items.focalPoint.y' },\n {\n path: 'products.product.printOnDemandOptions.mockupImage.focalPoint.x',\n },\n {\n path: 'products.product.printOnDemandOptions.mockupImage.focalPoint.y',\n },\n ],\n },\n ]);\n const metadata = {\n entityFqdn: 'wix.suppliershub.marketplace_product.v1.product',\n method: 'PATCH' as any,\n methodFqn:\n 'wix.suppliershub.marketplace.product.v1.MarketplaceProduct.BulkUpdateProducts',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixSuppliershubMarketplaceProductV1MarketplaceProductUrl({\n protoPath: '/v1/bulk/products/update',\n data: serializedData,\n host,\n }),\n data: serializedData,\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [\n { path: 'results.item.createdDate' },\n { path: 'results.item.updatedDate' },\n { path: 'results.item.providerInfo.productCreatedDate' },\n { path: 'results.item.media.main.urlExpirationDate' },\n { path: 'results.item.media.items.urlExpirationDate' },\n {\n path: 'results.item.printOnDemandOptions.mockupImage.urlExpirationDate',\n },\n ],\n },\n {\n transformFn: transformRESTFloatToSDKFloat,\n paths: [\n { path: 'results.item.media.main.focalPoint.x' },\n { path: 'results.item.media.main.focalPoint.y' },\n { path: 'results.item.media.items.focalPoint.x' },\n { path: 'results.item.media.items.focalPoint.y' },\n {\n path: 'results.item.printOnDemandOptions.mockupImage.focalPoint.x',\n },\n {\n path: 'results.item.printOnDemandOptions.mockupImage.focalPoint.y',\n },\n ],\n },\n ]),\n };\n\n return metadata;\n }\n\n return __bulkUpdateProducts;\n}\n\n/**\n * Deletes multiple products permanently in a single request. Supports partial success.\n *\n * Each result includes an `itemMetadata` object indicating success or failure with error details.\n * When handling failures, distinguish between validation errors which shouldn't be retried,\n * and transient errors which can be retried. Only retry failed items, not the entire batch.\n */\nexport function bulkDeleteProducts(\n payload: object\n): RequestOptionsFactory<any> {\n function __bulkDeleteProducts({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.suppliershub.marketplace_product.v1.product',\n method: 'POST' as any,\n methodFqn:\n 'wix.suppliershub.marketplace.product.v1.MarketplaceProduct.BulkDeleteProducts',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixSuppliershubMarketplaceProductV1MarketplaceProductUrl({\n protoPath: '/v1/bulk/products/delete',\n data: payload,\n host,\n }),\n data: payload,\n };\n\n return metadata;\n }\n\n return __bulkDeleteProducts;\n}\n\n/**\n * Retrieves a list of products with filtering, sorting, and cursor-based pagination.\n *\n * Provides real-time, strongly consistent results with filtering, sorting, and pagination.\n *\n * Use Query Products when you need accurate, up-to-date data such as for operational tasks or inventory checks.\n * For product discovery and browsing with full-text search capabilities, use [Search Products](https://dev.wix.com/docs/api-reference/business-solutions/suppliers-hub/products/search-products) instead.\n */\nexport function queryProducts(payload: object): RequestOptionsFactory<any> {\n function __queryProducts({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.suppliershub.marketplace_product.v1.product',\n method: 'POST' as any,\n methodFqn:\n 'wix.suppliershub.marketplace.product.v1.MarketplaceProduct.QueryProducts',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixSuppliershubMarketplaceProductV1MarketplaceProductUrl({\n protoPath: '/v1/products/query',\n data: payload,\n host,\n }),\n data: payload,\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [\n { path: 'products.createdDate' },\n { path: 'products.updatedDate' },\n { path: 'products.providerInfo.productCreatedDate' },\n { path: 'products.media.main.urlExpirationDate' },\n { path: 'products.media.items.urlExpirationDate' },\n {\n path: 'products.printOnDemandOptions.mockupImage.urlExpirationDate',\n },\n ],\n },\n {\n transformFn: transformRESTFloatToSDKFloat,\n paths: [\n { path: 'products.media.main.focalPoint.x' },\n { path: 'products.media.main.focalPoint.y' },\n { path: 'products.media.items.focalPoint.x' },\n { path: 'products.media.items.focalPoint.y' },\n {\n path: 'products.printOnDemandOptions.mockupImage.focalPoint.x',\n },\n {\n path: 'products.printOnDemandOptions.mockupImage.focalPoint.y',\n },\n ],\n },\n ]),\n };\n\n return metadata;\n }\n\n return __queryProducts;\n}\n\n/**\n * Retrieves a list of products, given the provided filtering, search expression, sorting, and cursor paging.\n *\n * Provides eventually consistent results optimized for product discovery and browsing.\n * Search supports full-text queries, filters, sorting, and aggregations for faceted search.\n *\n * Use Search Products for user-facing product catalogs and discovery features.\n * For real-time accuracy in operational tasks, use [Query Products](https://dev.wix.com/docs/api-reference/business-solutions/suppliers-hub/products/query-products) instead.\n */\nexport function searchProducts(payload: object): RequestOptionsFactory<any> {\n function __searchProducts({ host }: any) {\n const serializedData = transformPaths(payload, [\n {\n transformFn: transformSDKFloatToRESTFloat,\n paths: [\n { path: 'search.aggregations.range.buckets.from' },\n { path: 'search.aggregations.range.buckets.to' },\n {\n path: 'search.aggregations.nested.nestedAggregations.range.buckets.from',\n },\n {\n path: 'search.aggregations.nested.nestedAggregations.range.buckets.to',\n },\n ],\n },\n ]);\n const metadata = {\n entityFqdn: 'wix.suppliershub.marketplace_product.v1.product',\n method: 'POST' as any,\n methodFqn:\n 'wix.suppliershub.marketplace.product.v1.MarketplaceProduct.SearchProducts',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixSuppliershubMarketplaceProductV1MarketplaceProductUrl({\n protoPath: '/v1/products/search',\n data: serializedData,\n host,\n }),\n data: serializedData,\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [\n { path: 'products.createdDate' },\n { path: 'products.updatedDate' },\n { path: 'products.providerInfo.productCreatedDate' },\n { path: 'products.media.main.urlExpirationDate' },\n { path: 'products.media.items.urlExpirationDate' },\n {\n path: 'products.printOnDemandOptions.mockupImage.urlExpirationDate',\n },\n ],\n },\n {\n transformFn: transformRESTFloatToSDKFloat,\n paths: [\n { path: 'products.media.main.focalPoint.x' },\n { path: 'products.media.main.focalPoint.y' },\n { path: 'products.media.items.focalPoint.x' },\n { path: 'products.media.items.focalPoint.y' },\n {\n path: 'products.printOnDemandOptions.mockupImage.focalPoint.x',\n },\n {\n path: 'products.printOnDemandOptions.mockupImage.focalPoint.y',\n },\n { path: 'aggregationData.results.scalar.value' },\n {\n path: 'aggregationData.results.groupedByValue.results.nestedResults.scalar.value',\n },\n {\n path: 'aggregationData.results.nested.results.results.*.scalar.value',\n },\n { path: 'aggregationData.results.ranges.results.from' },\n { path: 'aggregationData.results.ranges.results.to' },\n {\n path: 'aggregationData.results.groupedByValue.results.nestedResults.ranges.results.from',\n },\n {\n path: 'aggregationData.results.groupedByValue.results.nestedResults.ranges.results.to',\n },\n {\n path: 'aggregationData.results.nested.results.results.*.range.from',\n },\n {\n path: 'aggregationData.results.nested.results.results.*.range.to',\n },\n ],\n },\n ]),\n };\n\n return metadata;\n }\n\n return __searchProducts;\n}\n\n/**\n * Updates tags on multiple products by product IDs.\n *\n * A tag that appears both in the list of assign and unassign tags, will be assigned\n */\nexport function bulkUpdateProductTags(\n payload: object\n): RequestOptionsFactory<any> {\n function __bulkUpdateProductTags({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.suppliershub.marketplace_product.v1.product',\n method: 'POST' as any,\n methodFqn:\n 'wix.suppliershub.marketplace.product.v1.MarketplaceProduct.BulkUpdateProductTags',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixSuppliershubMarketplaceProductV1MarketplaceProductUrl({\n protoPath: '/v1/bulk/products/update-tags',\n data: payload,\n host,\n }),\n data: payload,\n };\n\n return metadata;\n }\n\n return __bulkUpdateProductTags;\n}\n\n/**\n * Updates tags on multiple products matching a filter.\n *\n * This operation runs asynchronously because it can potentially affect thousands of products.\n * The response includes a `jobId` for tracking the operation's progress.\n *\n * An empty filter updates all products. If a tag appears in both assign and unassign lists, it will be assigned.\n */\nexport function bulkUpdateProductTagsByFilter(\n payload: object\n): RequestOptionsFactory<any> {\n function __bulkUpdateProductTagsByFilter({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.suppliershub.marketplace_product.v1.product',\n method: 'POST' as any,\n methodFqn:\n 'wix.suppliershub.marketplace.product.v1.MarketplaceProduct.BulkUpdateProductTagsByFilter',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixSuppliershubMarketplaceProductV1MarketplaceProductUrl({\n protoPath: '/v1/bulk/products/update-tags-by-filter',\n data: payload,\n host,\n }),\n data: payload,\n };\n\n return metadata;\n }\n\n return __bulkUpdateProductTagsByFilter;\n}\n\n/**\n * Queries categories using [WQL - Wix Query Language](https://dev.wix.com/api/rest/getting-started/api-query-language).\n *\n * Supports filtering, sorting, and pagination.\n */\nexport function queryCategories(payload: object): RequestOptionsFactory<any> {\n function __queryCategories({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.suppliershub.marketplace_product.v1.product',\n method: 'POST' as any,\n methodFqn:\n 'wix.suppliershub.marketplace.product.v1.MarketplaceProduct.QueryCategories',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixSuppliershubMarketplaceProductV1MarketplaceProductUrl({\n protoPath: '/v1/categories/query',\n data: payload,\n host,\n }),\n data: payload,\n };\n\n return metadata;\n }\n\n return __queryCategories;\n}\n","import {\n createProduct as publicCreateProduct,\n getProduct as publicGetProduct,\n updateProduct as publicUpdateProduct,\n deleteProduct as publicDeleteProduct,\n bulkCreateProducts as publicBulkCreateProducts,\n bulkUpdateProducts as publicBulkUpdateProducts,\n bulkDeleteProducts as publicBulkDeleteProducts,\n queryProducts as publicQueryProducts,\n typedQueryProducts as publicTypedQueryProducts,\n searchProducts as publicSearchProducts,\n bulkUpdateProductTags as publicBulkUpdateProductTags,\n bulkUpdateProductTagsByFilter as publicBulkUpdateProductTagsByFilter,\n queryCategories as publicQueryCategories,\n} from './suppliershub-marketplace-product-v1-product-products.public.js';\nimport { createRESTModule } from '@wix/sdk-runtime/rest-modules';\nimport { createEventModule } from '@wix/sdk-runtime/event-definition-modules';\nimport {\n BuildRESTFunction,\n MaybeContext,\n BuildEventDefinition,\n} from '@wix/sdk-types';\nimport { HttpClient } from '@wix/sdk-types';\nimport { createQueryOverloadRouter } from '@wix/sdk-runtime/query-method-router';\nimport {\n ProductQuery,\n ProductsQueryBuilder,\n typedQueryProducts as universalTypedQueryProducts,\n} from './suppliershub-marketplace-product-v1-product-products.universal.js';\nimport { onProductCreated as publicOnProductCreated } from './suppliershub-marketplace-product-v1-product-products.public.js';\nimport { onProductDeleted as publicOnProductDeleted } from './suppliershub-marketplace-product-v1-product-products.public.js';\nimport { onProductTagsModified as publicOnProductTagsModified } from './suppliershub-marketplace-product-v1-product-products.public.js';\nimport { onProductUpdated as publicOnProductUpdated } from './suppliershub-marketplace-product-v1-product-products.public.js';\n\nfunction customQueryProducts(httpClient: HttpClient) {\n const router = createQueryOverloadRouter({\n builderQueryFunction: () => publicQueryProducts(httpClient)(),\n typedQueryFunction: (query: ProductQuery) =>\n publicTypedQueryProducts(httpClient)(query),\n hasOptionsParameter: false,\n });\n\n function overloadedQuery(): ProductsQueryBuilder;\n function overloadedQuery(\n query: ProductQuery\n ): ReturnType<typeof universalTypedQueryProducts>;\n function overloadedQuery(query?: ProductQuery): any {\n return router(...arguments);\n }\n\n return overloadedQuery;\n}\n\nexport const createProduct: MaybeContext<\n BuildRESTFunction<typeof publicCreateProduct> & typeof publicCreateProduct\n> = /*#__PURE__*/ createRESTModule(publicCreateProduct);\nexport const getProduct: MaybeContext<\n BuildRESTFunction<typeof publicGetProduct> & typeof publicGetProduct\n> = /*#__PURE__*/ createRESTModule(publicGetProduct);\nexport const updateProduct: MaybeContext<\n BuildRESTFunction<typeof publicUpdateProduct> & typeof publicUpdateProduct\n> = /*#__PURE__*/ createRESTModule(publicUpdateProduct);\nexport const deleteProduct: MaybeContext<\n BuildRESTFunction<typeof publicDeleteProduct> & typeof publicDeleteProduct\n> = /*#__PURE__*/ createRESTModule(publicDeleteProduct);\nexport const bulkCreateProducts: MaybeContext<\n BuildRESTFunction<typeof publicBulkCreateProducts> &\n typeof publicBulkCreateProducts\n> = /*#__PURE__*/ createRESTModule(publicBulkCreateProducts);\nexport const bulkUpdateProducts: MaybeContext<\n BuildRESTFunction<typeof publicBulkUpdateProducts> &\n typeof publicBulkUpdateProducts\n> = /*#__PURE__*/ createRESTModule(publicBulkUpdateProducts);\nexport const bulkDeleteProducts: MaybeContext<\n BuildRESTFunction<typeof publicBulkDeleteProducts> &\n typeof publicBulkDeleteProducts\n> = /*#__PURE__*/ createRESTModule(publicBulkDeleteProducts);\nexport const searchProducts: MaybeContext<\n BuildRESTFunction<typeof publicSearchProducts> & typeof publicSearchProducts\n> = /*#__PURE__*/ createRESTModule(publicSearchProducts);\nexport const bulkUpdateProductTags: MaybeContext<\n BuildRESTFunction<typeof publicBulkUpdateProductTags> &\n typeof publicBulkUpdateProductTags\n> = /*#__PURE__*/ createRESTModule(publicBulkUpdateProductTags);\nexport const bulkUpdateProductTagsByFilter: MaybeContext<\n BuildRESTFunction<typeof publicBulkUpdateProductTagsByFilter> &\n typeof publicBulkUpdateProductTagsByFilter\n> = /*#__PURE__*/ createRESTModule(publicBulkUpdateProductTagsByFilter);\nexport const queryCategories: MaybeContext<\n BuildRESTFunction<typeof publicQueryCategories> & typeof publicQueryCategories\n> = /*#__PURE__*/ createRESTModule(publicQueryCategories);\nexport const queryProducts: MaybeContext<\n BuildRESTFunction<typeof customQueryProducts> & typeof customQueryProducts\n> = /*#__PURE__*/ createRESTModule(customQueryProducts);\n/**\n * Triggered when a product is created.\n */\nexport const onProductCreated: BuildEventDefinition<\n typeof publicOnProductCreated\n> &\n typeof publicOnProductCreated = createEventModule(publicOnProductCreated);\n/**\n * Triggered when a product is deleted.\n */\nexport const onProductDeleted: BuildEventDefinition<\n typeof publicOnProductDeleted\n> &\n typeof publicOnProductDeleted = createEventModule(publicOnProductDeleted);\n/**\n * Triggered when product tags are modified.\n */\nexport const onProductTagsModified: BuildEventDefinition<\n typeof publicOnProductTagsModified\n> &\n typeof publicOnProductTagsModified = createEventModule(\n publicOnProductTagsModified\n);\n/**\n * Triggered when a product is updated.\n */\nexport const onProductUpdated: BuildEventDefinition<\n typeof publicOnProductUpdated\n> &\n typeof publicOnProductUpdated = createEventModule(publicOnProductUpdated);\n\nexport {\n ProductType,\n TimeUnit,\n CountrySelections,\n InventoryTier,\n CategoryNamespace,\n PrintTechnology,\n MeasurementUnit,\n RequestedField,\n CommonSortOrder,\n SortType,\n SortDirection,\n MissingValues,\n ScalarType,\n NestedAggregationType,\n Interval,\n AggregationType,\n Mode,\n SortOrder,\n WebhookIdentityType,\n} from './suppliershub-marketplace-product-v1-product-products.universal.js';\nexport {\n Product,\n ProviderInfo,\n Media,\n FocalPoint,\n ProductOption,\n OptionValue,\n OptionValueValueOneOf,\n ColorOption,\n TimeInterval,\n TimeValue,\n ShippingDestination,\n ShippingDestinationCountriesOptionsOneOf,\n Countries,\n Inventory,\n ProductCategory,\n WholesaleOptions,\n PriceTier,\n SupplierInfo,\n PrintOnDemandOptions,\n SizeGuide,\n Specification,\n Measurement,\n MeasurementValueOneOf,\n MeasurementValueRange,\n Tags,\n TagList,\n TagsModified,\n CreateProductRequest,\n CreateProductResponse,\n GetProductRequest,\n GetProductResponse,\n UpdateProductRequest,\n UpdateProductResponse,\n DeleteProductRequest,\n DeleteProductResponse,\n BulkCreateProductsRequest,\n BulkCreateProductsResponse,\n ItemMetadata,\n ApplicationError,\n BulkProductResult,\n BulkActionMetadata,\n BulkUpdateProductsRequest,\n MaskedProduct,\n BulkUpdateProductsResponse,\n BulkUpdateProductsResponseBulkProductResult,\n BulkDeleteProductsRequest,\n BulkDeleteProductsResponse,\n BulkDeleteProductsResponseBulkProductResult,\n QueryProductsRequest,\n CommonCursorQuery,\n CommonCursorQueryPagingMethodOneOf,\n CommonSorting,\n CommonCursorPaging,\n QueryProductsResponse,\n CommonCursorPagingMetadata,\n CommonCursors,\n SearchProductsRequest,\n CursorSearch,\n CursorSearchPagingMethodOneOf,\n Aggregation,\n AggregationKindOneOf,\n RangeBucket,\n IncludeMissingValuesOptions,\n ValueAggregation,\n ValueAggregationOptionsOneOf,\n RangeAggregation,\n ScalarAggregation,\n DateHistogramAggregation,\n NestedAggregationItem,\n NestedAggregationItemKindOneOf,\n NestedAggregation,\n SearchDetails,\n SearchProductsResponse,\n AggregationData,\n ValueAggregationResult,\n RangeAggregationResult,\n NestedAggregationResults,\n NestedAggregationResultsResultOneOf,\n ValueResults,\n RangeResults,\n AggregationResultsScalarResult,\n NestedValueAggregationResult,\n ValueResult,\n RangeResult,\n ScalarResult,\n NestedResultValue,\n NestedResultValueResultOneOf,\n Results,\n DateHistogramResult,\n GroupByValueResults,\n DateHistogramResults,\n NestedResults,\n AggregationResults,\n AggregationResultsResultOneOf,\n BulkUpdateProductTagsRequest,\n BulkUpdateProductTagsResponse,\n BulkUpdateProductTagsResult,\n BulkUpdateProductTagsByFilterRequest,\n BulkUpdateProductTagsByFilterResponse,\n QueryCategoriesRequest,\n CursorQuery,\n CursorQueryPagingMethodOneOf,\n Sorting,\n CursorPaging,\n QueryCategoriesResponse,\n Category,\n Breadcrumb,\n ParentCategory,\n CursorPagingMetadata,\n Cursors,\n BulkAddProductsToStoreRequest,\n ProductReference,\n BulkAddProductsToStoreResponse,\n BulkAddProductToStoreResult,\n DomainEvent,\n DomainEventBodyOneOf,\n EntityCreatedEvent,\n RestoreInfo,\n EntityUpdatedEvent,\n EntityDeletedEvent,\n ActionEvent,\n Empty,\n MessageEnvelope,\n IdentificationData,\n IdentificationDataIdOneOf,\n AccountInfo,\n BaseEventMetadata,\n EventMetadata,\n AccountInfoMetadata,\n ProductCreatedEnvelope,\n ProductDeletedEnvelope,\n ProductTagsModifiedEnvelope,\n ProductUpdatedEnvelope,\n UpdateProduct,\n BulkCreateProductsOptions,\n BulkUpdateProductsOptions,\n ProductsQueryResult,\n ProductsQueryBuilder,\n ProductQuerySpec,\n ProductSearchSpec,\n BulkUpdateProductTagsOptions,\n BulkUpdateProductTagsByFilterOptions,\n QueryCategoriesOptions,\n} from './suppliershub-marketplace-product-v1-product-products.universal.js';\nexport { utils } from './suppliershub-marketplace-product-v1-product-products.universal.js';\nexport {\n ProductTypeWithLiterals,\n TimeUnitWithLiterals,\n CountrySelectionsWithLiterals,\n InventoryTierWithLiterals,\n CategoryNamespaceWithLiterals,\n PrintTechnologyWithLiterals,\n MeasurementUnitWithLiterals,\n RequestedFieldWithLiterals,\n CommonSortOrderWithLiterals,\n SortTypeWithLiterals,\n SortDirectionWithLiterals,\n MissingValuesWithLiterals,\n ScalarTypeWithLiterals,\n NestedAggregationTypeWithLiterals,\n IntervalWithLiterals,\n AggregationTypeWithLiterals,\n ModeWithLiterals,\n SortOrderWithLiterals,\n WebhookIdentityTypeWithLiterals,\n BulkUpdateProductTagsApplicationErrors,\n BulkUpdateProductTagsByFilterApplicationErrors,\n CommonQueryWithEntityContext,\n ProductQuery,\n CommonSearchWithEntityContext,\n ProductSearch,\n} from './suppliershub-marketplace-product-v1-product-products.universal.js';\n"],"mappings":"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","names":["bulkCreateProducts","bulkDeleteProducts","bulkUpdateProductTags","bulkUpdateProductTagsByFilter","bulkUpdateProducts","createProduct","deleteProduct","getProduct","onProductCreated","onProductDeleted","onProductTagsModified","onProductUpdated","queryCategories","queryProducts","searchProducts","updateProduct","import_rename_all_nested_keys","import_image","import_timestamp","import_transform_paths","import_float","import_timestamp","import_rest_modules","payload","import_image","import_transform_paths","ProductType","TimeUnit","CountrySelections","InventoryTier","CategoryNamespace","PrintTechnology","MeasurementUnit","RequestedField","CommonSortOrder","SortType","SortDirection","MissingValues","ScalarType","NestedAggregationType","Interval","AggregationType","Mode","SortOrder","WebhookIdentityType","createProduct","sdkTransformError","getProduct","updateProduct","deleteProduct","bulkCreateProducts","bulkUpdateProducts","bulkDeleteProducts","queryProducts","searchProducts","bulkUpdateProductTags","bulkUpdateProductTagsByFilter","queryCategories","createProduct","getProduct","updateProduct","deleteProduct","bulkCreateProducts","bulkUpdateProducts","bulkDeleteProducts","queryProducts","typedQueryProducts","searchProducts","bulkUpdateProductTags","bulkUpdateProductTagsByFilter","queryCategories","import_rest_modules","queryProducts","typedQueryProducts","createProduct","getProduct","updateProduct","deleteProduct","bulkCreateProducts","bulkUpdateProducts","bulkDeleteProducts","searchProducts","bulkUpdateProductTags","bulkUpdateProductTagsByFilter","queryCategories","onProductCreated","onProductDeleted","onProductTagsModified","onProductUpdated"]}
@@ -0,0 +1,25 @@
1
+ import { aG as CursorSearch, S as SearchProductsResponse } from './suppliershub-marketplace-product-v1-product-products.universal-DInaBID7.js';
2
+ export { bG as AccountInfo, bJ as AccountInfoMetadata, bB as ActionEvent, aI as Aggregation, aV as AggregationData, aJ as AggregationKindOneOf, bc as AggregationResults, bd as AggregationResultsResultOneOf, b0 as AggregationResultsScalarResult, F as AggregationType, c1 as AggregationTypeWithLiterals, aq as ApplicationError, bH as BaseEventMetadata, bn as Breadcrumb, as as BulkActionMetadata, bu as BulkAddProductToStoreResult, br as BulkAddProductsToStoreRequest, bt as BulkAddProductsToStoreResponse, B as BulkCreateProductsOptions, ao as BulkCreateProductsRequest, a as BulkCreateProductsResponse, av as BulkDeleteProductsRequest, d as BulkDeleteProductsResponse, aw as BulkDeleteProductsResponseBulkProductResult, ar as BulkProductResult, h as BulkUpdateProductTagsApplicationErrors, k as BulkUpdateProductTagsByFilterApplicationErrors, i as BulkUpdateProductTagsByFilterOptions, bg as BulkUpdateProductTagsByFilterRequest, j as BulkUpdateProductTagsByFilterResponse, f as BulkUpdateProductTagsOptions, be as BulkUpdateProductTagsRequest, g as BulkUpdateProductTagsResponse, bf as BulkUpdateProductTagsResult, b as BulkUpdateProductsOptions, at as BulkUpdateProductsRequest, c as BulkUpdateProductsResponse, au as BulkUpdateProductsResponseBulkProductResult, bm as Category, u as CategoryNamespace, bS as CategoryNamespaceWithLiterals, Y as ColorOption, aB as CommonCursorPaging, aD as CommonCursorPagingMetadata, ay as CommonCursorQuery, az as CommonCursorQueryPagingMethodOneOf, aE as CommonCursors, c5 as CommonQueryWithEntityContext, c6 as CommonSearchWithEntityContext, x as CommonSortOrder, bW as CommonSortOrderWithLiterals, aA as CommonSorting, a1 as Countries, C as CountrySelections, bQ as CountrySelectionsWithLiterals, ag as CreateProductRequest, ah as CreateProductResponse, bl as CursorPaging, bp as CursorPagingMetadata, bi as CursorQuery, bj as CursorQueryPagingMethodOneOf, aH as CursorSearchPagingMethodOneOf, bq as Cursors, aQ as DateHistogramAggregation, b8 as DateHistogramResult, ba as DateHistogramResults, am as DeleteProductRequest, an as DeleteProductResponse, bv as DomainEvent, bw as DomainEventBodyOneOf, bC as Empty, bx as EntityCreatedEvent, bA as EntityDeletedEvent, bz as EntityUpdatedEvent, bI as EventMetadata, L as FocalPoint, ai as GetProductRequest, aj as GetProductResponse, b9 as GroupByValueResults, bE as IdentificationData, bF as IdentificationDataIdOneOf, aL as IncludeMissingValuesOptions, E as Interval, c0 as IntervalWithLiterals, a2 as Inventory, I as InventoryTier, bR as InventoryTierWithLiterals, ap as ItemMetadata, M as MaskedProduct, aa as Measurement, w as MeasurementUnit, bU as MeasurementUnitWithLiterals, ab as MeasurementValueOneOf, ac as MeasurementValueRange, K as Media, bD as MessageEnvelope, A as MissingValues, bZ as MissingValuesWithLiterals, G as Mode, c2 as ModeWithLiterals, aT as NestedAggregation, aR as NestedAggregationItem, aS as NestedAggregationItemKindOneOf, aY as NestedAggregationResults, aZ as NestedAggregationResultsResultOneOf, N as NestedAggregationType, b$ as NestedAggregationTypeWithLiterals, b5 as NestedResultValue, b6 as NestedResultValueResultOneOf, bb as NestedResults, b1 as NestedValueAggregationResult, V as OptionValue, X as OptionValueValueOneOf, bo as ParentCategory, a5 as PriceTier, a7 as PrintOnDemandOptions, v as PrintTechnology, bT as PrintTechnologyWithLiterals, P as Product, a3 as ProductCategory, m as ProductCreatedEnvelope, n as ProductDeletedEnvelope, O as ProductOption, r as ProductQuery, bL as ProductQuerySpec, bs as ProductReference, bM as ProductSearchSpec, o as ProductTagsModifiedEnvelope, s as ProductType, bO as ProductTypeWithLiterals, p as ProductUpdatedEnvelope, q as ProductsQueryBuilder, bK as ProductsQueryResult, J as ProviderInfo, Q as QueryCategoriesOptions, bh as QueryCategoriesRequest, l as QueryCategoriesResponse, ax as QueryProductsRequest, aC as QueryProductsResponse, aO as RangeAggregation, aX as RangeAggregationResult, aK as RangeBucket, b3 as RangeResult, a$ as RangeResults, R as RequestedField, bV as RequestedFieldWithLiterals, by as RestoreInfo, b7 as Results, aP as ScalarAggregation, b4 as ScalarResult, D as ScalarType, b_ as ScalarTypeWithLiterals, aU as SearchDetails, aF as SearchProductsRequest, $ as ShippingDestination, a0 as ShippingDestinationCountriesOptionsOneOf, a8 as SizeGuide, z as SortDirection, bY as SortDirectionWithLiterals, H as SortOrder, c3 as SortOrderWithLiterals, y as SortType, bX as SortTypeWithLiterals, bk as Sorting, a9 as Specification, a6 as SupplierInfo, ae as TagList, ad as Tags, af as TagsModified, Z as TimeInterval, T as TimeUnit, bP as TimeUnitWithLiterals, _ as TimeValue, U as UpdateProduct, ak as UpdateProductRequest, al as UpdateProductResponse, aM as ValueAggregation, aN as ValueAggregationOptionsOneOf, aW as ValueAggregationResult, b2 as ValueResult, a_ as ValueResults, W as WebhookIdentityType, c4 as WebhookIdentityTypeWithLiterals, a4 as WholesaleOptions, cf as bulkCreateProducts, ch as bulkDeleteProducts, cj as bulkUpdateProductTags, ck as bulkUpdateProductTagsByFilter, cg as bulkUpdateProducts, cb as createProduct, ce as deleteProduct, cc as getProduct, c7 as onProductCreated, c8 as onProductDeleted, c9 as onProductTagsModified, ca as onProductUpdated, cl as queryCategories, ci as queryProducts, t as typedQueryProducts, cd as updateProduct, bN as utils } from './suppliershub-marketplace-product-v1-product-products.universal-DInaBID7.js';
3
+ import '@wix/sdk-types';
4
+
5
+ /** @hidden */
6
+ type ProductSearch = {};
7
+ /**
8
+ * Retrieves a list of products, given the provided filtering, search expression, sorting, and cursor paging.
9
+ *
10
+ * Provides eventually consistent results optimized for product discovery and browsing.
11
+ * Search supports full-text queries, filters, sorting, and aggregations for faceted search.
12
+ *
13
+ * Use Search Products for user-facing product catalogs and discovery features.
14
+ * For real-time accuracy in operational tasks, use [Query Products](https://dev.wix.com/docs/api-reference/business-solutions/suppliers-hub/products/query-products) instead.
15
+ * @param search - Search parameters including filter, sort, full-text search, and aggregations.
16
+ * @public
17
+ * @documentationMaturity preview
18
+ * @requiredField search
19
+ * @permissionId SUPPLIERS_HUB.PRODUCT_READ
20
+ * @applicableIdentity APP
21
+ * @fqn wix.suppliershub.marketplace.product.v1.MarketplaceProduct.SearchProducts
22
+ */
23
+ declare function searchProducts(search: CursorSearch): Promise<SearchProductsResponse>;
24
+
25
+ export { CursorSearch, type ProductSearch, SearchProductsResponse, searchProducts };