> Portal Navigation: > > - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version. > - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages). > - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`). > - Top-level index of all portals: https://dev.wix.com/docs/llms.txt > - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt # BulkUpdateProducts # Package: suppliersHub # Namespace: MarketplaceProduct # Method link: https://dev.wix.com/docs/api-reference/business-solutions/suppliers-hub/products/bulk-update-products.md ## Permission Scopes: Write Marketplace: SCOPE.SUPPLIERS_HUB.WRITE_MARKETPLACE ## Introduction Updates multiple products in a single request. Supports partial success and partial field updates. Each result includes an `itemMetadata` object indicating success or failure with error details. When handling failures, distinguish between validation errors which shouldn't be retried, and transient errors which can be retried. Only retry failed items, not the entire batch. --- ## REST API ### Schema ``` Method: bulkUpdateProducts Description: Updates multiple products in a single request. Supports partial success and partial field updates. Each result includes an `itemMetadata` object indicating success or failure with error details. When handling failures, distinguish between validation errors which shouldn't be retried, and transient errors which can be retried. Only retry failed items, not the entire batch. URL: https://www.wixapis.com/suppliers-hub/v1/bulk/products/update Method: PATCH # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present. Required parameters: products, products.product.id, products.product.directCategories.id, products.product.directCategories.namespace Method parameters: param name: products | type: array | description: Products to update. Each can be partial based on its field mask. | required: true - name: product | type: Product | description: Product to update. May be partial - only fields to be updated need to be provided. - name: id | type: string | description: Product GUID. | required: true - name: providerInfo | type: ProviderInfo | description: Information about the business partner providing this product. - name: productId | type: string | description: Unique product identifier on the provider's platform. This field serves as the external system's primary key for synchronization and prevents duplicate products from being created. Once set, you can't change this field. - name: productCreatedDate | type: string | description: Date and time the product was created on the provider's platform. This field helps maintain the connection to the original product source. Once set, you can't change this field. - name: url | type: string | description: Product URL on the provider's platform. - name: name | type: string | description: Product name. - name: description | type: string | description: Product description. - name: visible | type: boolean | description: Whether the product is visible in the Marketplace. Default: `true` - name: media | type: Media | description: Product media. - name: items | type: array | description: Product images. The first image becomes the main image. - name: id | type: string | description: WixMedia image GUID. - name: url | type: string | description: Image URL. - name: altText | type: string | description: Image alt text. - name: types | type: array | description: Business model types this product supports. - enum: - DROPSHIPPING: Product is fulfilled by the supplier without inventory management by the store owner. - WHOLESALE: Product is sold in bulk quantities with tiered pricing. - PRINT_ON_DEMAND: Product is manufactured after purchase; no pre‑held inventory. - name: options | type: array | description: Product options that customers can choose from. Options display available product variations like size and color to help buyers make purchase decisions. Currently, options are informational only and don't create separate inventory items or variants. There are 2 predefined option types you can use: - `color`: Color choices for the product. Values should be standard color names. For example, `"Black"`, `"White"`, `"Yellow"`. - `size`: Size choices for the product. Values should be standard size labels. For example, `"S"`, `"M"`, `"L"`, `"XL"`. - name: name | type: string | description: Option name. There are 2 predefined options you can use: - `color`: Represents color choices for the product. Values should be standard color names. For example, `"Black"`, `"White"`, `"Yellow"`. - `size`: Represents size choices for the product. Values should be standard size labels. For example, `"S"`, `"M"`, `"L"`, `"XL"`. - name: description | type: string | description: Optional description explaining the option. - name: values | type: array | description: Available values for this option. - ONE-OF: - name: color | type: ColorOption | description: Color option with name, hex code, and sort order. - name: name | type: string | description: Color name. For example, `"Black"` or `"Navy Blue"`. Use 'Multicolor' for mixed colors. When using 'Multicolor', do not provide a hex value. - name: hex | type: string | description: Hex color code. For example, `"#000000"` for black. Omit for 'Multicolor'. - name: ribbonName | type: string | description: Promotional ribbon text displayed on the product. For example, `"New Arrival"` or `"Bestseller"`. - name: brand | type: string | description: Brand name. - name: orderProcessingTime | type: TimeInterval | description: Time required to process orders before shipping. - name: min | type: TimeValue | description: Minimum time in the range. - name: value | type: integer | description: Numeric time value. For example, `2` for "2 days". - name: unit | type: TimeUnit | description: Time unit for the value. - enum: - DAY: Days. - WEEK: Weeks. - MONTH: Months. - name: max | type: TimeValue | description: Maximum time in the range. - name: shippingDestinations | type: array | description: Countries and regions where this product can be shipped, with location-specific pricing and timing. - ONE-OF: - name: specificCountrySelections | type: Countries | description: Specific countries. Used when `countrySelections` is `SPECIFIC_COUNTRY`. - name: countries | type: array | description: Country codes, in [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1) format. - name: countrySelections | type: CountrySelections | description: Indicates if shipping applies to selected countries or to all other regions. - enum: - REST_OF_THE_WORLD: All countries not specifically listed elsewhere. - SPECIFIC_COUNTRY: Specific countries listed in the `countries` field. - name: minimumShippingCost | type: string | description: Minimum shipping cost to this destination in USD. - name: shippingTime | type: TimeInterval | description: Expected shipping time to this destination. - name: minimumProductCost | type: string | description: Minimum Product Cost to the Shipping Location - name: minimumPrice | type: string | description: Minimum price, in USD. - name: productOrigin | type: string | description: 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. - name: directCategories | type: array | description: List of categories that directly contain this product. Each category's namespace must match at least one of the product's types. For example, if a product has type `DROPSHIPPING`, its categories must use `DROPSHIPPING_NAMESPACE`. Products with both `DROPSHIPPING` and `WHOLESALE` types can have categories from both namespaces. - name: id | type: string | description: Category GUID. - name: namespace | type: CategoryNamespace | description: The namespace of the category tree this assignment belongs to. - enum: - DROPSHIPPING_NAMESPACE: Namespace for the dropshipping category tree. - WHOLESALE_NAMESPACE: Namespace for the wholesale category tree. - PRINT_ON_DEMAND_NAMESPACE: Namespace for the print on demand category tree. - name: wholesaleOptions | type: WholesaleOptions | description: Wholesale-specific configuration including tiered pricing and minimum order quantities. Required when `types` includes `WHOLESALE`. - name: priceTiers | type: array | description: Tiered pricing based on order quantity ranges. Price tiers must be continuous with no gaps in quantity ranges. For example, if tier 1 covers quantities 1-100, tier 2 must start at 101. The system validates tier continuity when creating or updating products. - name: priceFrom | type: string | description: Minimum price for this quantity tier in USD. If `priceTo` isn't specified, this price applies to all quantities in the tier. - name: priceTo | type: string | description: Maximum price for this quantity tier in USD. Optional for fixed-price tiers. - name: countFrom | type: integer | description: Minimum quantity for this price tier, inclusive. - name: countTo | type: integer | description: Maximum quantity for this price tier, inclusive. If not specified, this tier applies to all quantities greater or equal to `countFrom`. - name: minimumOrderQuantity | type: integer | description: Minimum quantity required for wholesale orders. - name: supplierInfo | type: SupplierInfo | description: Information about the supplier including name, rating, and trust status. - name: id | type: string | description: Supplier GUID. When provided, references a supplier in the Marketplace Supplier service. The system automatically retrieves and populates the supplier's name, rating, and verification status. - name: printOnDemandOptions | type: PrintOnDemandOptions | description: Print-on-demand-specific configuration including supported print technologies and mockup assets. Required when `types` include `PRINT_ON_DEMAND`. - name: printTechnologies | type: array | description: Set of possible print technologies for the Product - enum: - DIRECT_TO_FILM: Transfers printed on film and heat-pressed onto fabric. - DIRECT_TO_GARMENT: Ink directly onto garment. - CUT_SEW_SUBLIMATION: Panels are printed first, then sewn. All‑over coverage with precise placements. - DIGITAL_PRINTING: Non‑DTG digital methods (e.g., roll‑to‑roll). - EMBROIDERY: Stitched threads, premium look. - SUBLIMATION: Dye infused into polyester/poly‑coated substrates. - UV_PRINTING: Cures ink with UV light on rigid or treated surfaces. - KNITWEAR: Pattern/design is knitted, not printed. - DIRECT_TO_FABRIC: Designs are printed directly onto rolls of fabric, which are then cut and sewn into the final product. - name: sizeGuides | type: array | description: Information about the product sizing - name: measurementUnit | type: MeasurementUnit | description: Sizes units (inches or cm) - enum: CM, INCHES - name: description | type: string | description: Text description of the size guide - name: imageUrl | type: string | description: Image for the size guide - name: imageDescription | type: string | description: Text description of the image content - name: specifications | type: array | description: Sizes specifications - name: category | type: string | description: What is measured, e.g. chest, waist, sleeve - name: measurements | type: array | description: Measurements for different sizes - ONE-OF: - name: singleValue | type: string | description: The value of the size in case of single value - name: range | type: MeasurementValueRange | description: The value of the size in case of range (min/max) - name: minimum | type: string | description: Minimum value - name: maximum | type: string | description: Maximum value - name: sizeLabel | type: string | description: Product size, e.g. S, M, L - name: tags | type: Tags | description: Product tags for organization and filtering. - name: privateTags | type: TagList | description: Tags that require an additional permission in order to access them, normally not given to site members or visitors. - name: tagIds | type: array | description: List of tag GUIDs. - name: publicTags | type: TagList | description: Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors. param name: returnEntity | type: returnEntity | description: Whether to return the updated products in the response. Default: `false` Return type: BulkUpdateProductsResponse - name: results | type: array | description: Results - name: itemMetadata | type: ItemMetadata | description: Metadata regarding the specific single update operation - name: id | type: string | description: Item GUID. Should always be available, unless it's impossible. For example, when failing to create an item. - name: originalIndex | type: integer | description: Index of the item within the request array. Allows for correlation between request and response items. - name: success | type: boolean | description: Whether the requested action was successful for this item. When `false`, the `error` field is populated. - name: error | type: ApplicationError | description: Details about the error in case of failure. - name: code | type: string | description: Error code. - name: description | type: string | description: Description of the error. - name: data | type: object | description: Data related to the error. - name: item | type: Product | description: Only exists if `returnEntity` was set to true in the request - name: id | type: string | description: Product GUID. - name: createdDate | type: string | description: Date and time the product was created. - name: updatedDate | type: string | description: Date and time the product was updated. - name: providerInfo | type: ProviderInfo | description: Information about the business partner providing this product. - name: appId | type: string | description: Provider application GUID. - name: productId | type: string | description: Unique product identifier on the provider's platform. This field serves as the external system's primary key for synchronization and prevents duplicate products from being created. Once set, you can't change this field. - name: productCreatedDate | type: string | description: Date and time the product was created on the provider's platform. This field helps maintain the connection to the original product source. Once set, you can't change this field. - name: url | type: string | description: Product URL on the provider's platform. - name: name | type: string | description: Product name. - name: description | type: string | description: Product description. - name: visible | type: boolean | description: Whether the product is visible in the Marketplace. Default: `true` - name: media | type: Media | description: Product media. - name: main | type: Image | description: Primary product image, automatically set from the first item in the `items` array. - name: id | type: string | description: WixMedia image GUID. - name: url | type: string | description: Image URL. - name: height | type: integer | description: Original image height. - name: width | type: integer | description: Original image width. - name: altText | type: string | description: Image alt text. - name: filename | type: string | description: Image filename. - name: items | type: array | description: Product images. The first image becomes the main image. - name: types | type: array | description: Business model types this product supports. - enum: - DROPSHIPPING: Product is fulfilled by the supplier without inventory management by the store owner. - WHOLESALE: Product is sold in bulk quantities with tiered pricing. - PRINT_ON_DEMAND: Product is manufactured after purchase; no pre‑held inventory. - name: options | type: array | description: Product options that customers can choose from. Options display available product variations like size and color to help buyers make purchase decisions. Currently, options are informational only and don't create separate inventory items or variants. There are 2 predefined option types you can use: - `color`: Color choices for the product. Values should be standard color names. For example, `"Black"`, `"White"`, `"Yellow"`. - `size`: Size choices for the product. Values should be standard size labels. For example, `"S"`, `"M"`, `"L"`, `"XL"`. - name: name | type: string | description: Option name. There are 2 predefined options you can use: - `color`: Represents color choices for the product. Values should be standard color names. For example, `"Black"`, `"White"`, `"Yellow"`. - `size`: Represents size choices for the product. Values should be standard size labels. For example, `"S"`, `"M"`, `"L"`, `"XL"`. - name: description | type: string | description: Optional description explaining the option. - name: values | type: array | description: Available values for this option. - ONE-OF: - name: color | type: ColorOption | description: Color option with name, hex code, and sort order. - name: name | type: string | description: Color name. For example, `"Black"` or `"Navy Blue"`. Use 'Multicolor' for mixed colors. When using 'Multicolor', do not provide a hex value. - name: hex | type: string | description: Hex color code. For example, `"#000000"` for black. Omit for 'Multicolor'. - name: ribbonName | type: string | description: Promotional ribbon text displayed on the product. For example, `"New Arrival"` or `"Bestseller"`. - name: brand | type: string | description: Brand name. - name: orderProcessingTime | type: TimeInterval | description: Time required to process orders before shipping. - name: min | type: TimeValue | description: Minimum time in the range. - name: value | type: integer | description: Numeric time value. For example, `2` for "2 days". - name: unit | type: TimeUnit | description: Time unit for the value. - enum: - DAY: Days. - WEEK: Weeks. - MONTH: Months. - name: max | type: TimeValue | description: Maximum time in the range. - name: shippingDestinations | type: array | description: Countries and regions where this product can be shipped, with location-specific pricing and timing. - ONE-OF: - name: specificCountrySelections | type: Countries | description: Specific countries. Used when `countrySelections` is `SPECIFIC_COUNTRY`. - name: countries | type: array | description: Country codes, in [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1) format. - name: countrySelections | type: CountrySelections | description: Indicates if shipping applies to selected countries or to all other regions. - enum: - REST_OF_THE_WORLD: All countries not specifically listed elsewhere. - SPECIFIC_COUNTRY: Specific countries listed in the `countries` field. - name: minimumShippingCost | type: string | description: Minimum shipping cost to this destination in USD. - name: shippingTime | type: TimeInterval | description: Expected shipping time to this destination. - name: minimumProductCost | type: string | description: Minimum Product Cost to the Shipping Location - name: minimumPrice | type: string | description: Minimum price, in USD. - name: productOrigin | type: string | description: 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. - name: directCategories | type: array | description: List of categories that directly contain this product. Each category's namespace must match at least one of the product's types. For example, if a product has type `DROPSHIPPING`, its categories must use `DROPSHIPPING_NAMESPACE`. Products with both `DROPSHIPPING` and `WHOLESALE` types can have categories from both namespaces. - name: id | type: string | description: Category GUID. - name: index | type: integer | description: Product's position within this category. - name: namespace | type: CategoryNamespace | description: The namespace of the category tree this assignment belongs to. - enum: - DROPSHIPPING_NAMESPACE: Namespace for the dropshipping category tree. - WHOLESALE_NAMESPACE: Namespace for the wholesale category tree. - PRINT_ON_DEMAND_NAMESPACE: Namespace for the print on demand category tree. - name: allCategories | type: array | description: List of categories that directly contain this product, as well as their parent categories. - name: wholesaleOptions | type: WholesaleOptions | description: Wholesale-specific configuration including tiered pricing and minimum order quantities. Required when `types` includes `WHOLESALE`. - name: priceTiers | type: array | description: Tiered pricing based on order quantity ranges. Price tiers must be continuous with no gaps in quantity ranges. For example, if tier 1 covers quantities 1-100, tier 2 must start at 101. The system validates tier continuity when creating or updating products. - name: priceFrom | type: string | description: Minimum price for this quantity tier in USD. If `priceTo` isn't specified, this price applies to all quantities in the tier. - name: priceTo | type: string | description: Maximum price for this quantity tier in USD. Optional for fixed-price tiers. - name: countFrom | type: integer | description: Minimum quantity for this price tier, inclusive. - name: countTo | type: integer | description: Maximum quantity for this price tier, inclusive. If not specified, this tier applies to all quantities greater or equal to `countFrom`. - name: minimumOrderQuantity | type: integer | description: Minimum quantity required for wholesale orders. - name: supplierInfo | type: SupplierInfo | description: Information about the supplier including name, rating, and trust status. - name: id | type: string | description: Supplier GUID. When provided, references a supplier in the Marketplace Supplier service. The system automatically retrieves and populates the supplier's name, rating, and verification status. - name: name | type: string | description: Supplier name. Automatically populated from the Supplier service when `id` is provided. - name: rating | type: string | description: Supplier rating from 1.00 to 5.00. Automatically populated from the Supplier service when `id` is provided. - name: verified | type: boolean | description: Whether the supplier has been verified by the Marketplace. Verified suppliers have completed the Marketplace verification process. Automatically populated from the Supplier service when `id` is provided. Default: `false` - name: printOnDemandOptions | type: PrintOnDemandOptions | description: Print-on-demand-specific configuration including supported print technologies and mockup assets. Required when `types` include `PRINT_ON_DEMAND`. - name: printTechnologies | type: array | description: Set of possible print technologies for the Product - enum: - DIRECT_TO_FILM: Transfers printed on film and heat-pressed onto fabric. - DIRECT_TO_GARMENT: Ink directly onto garment. - CUT_SEW_SUBLIMATION: Panels are printed first, then sewn. All‑over coverage with precise placements. - DIGITAL_PRINTING: Non‑DTG digital methods (e.g., roll‑to‑roll). - EMBROIDERY: Stitched threads, premium look. - SUBLIMATION: Dye infused into polyester/poly‑coated substrates. - UV_PRINTING: Cures ink with UV light on rigid or treated surfaces. - KNITWEAR: Pattern/design is knitted, not printed. - DIRECT_TO_FABRIC: Designs are printed directly onto rolls of fabric, which are then cut and sewn into the final product. - name: mockupImage | type: Image | description: Mockup image of the product with 'Your Image Here' text. - name: sizeGuides | type: array | description: Information about the product sizing - name: measurementUnit | type: MeasurementUnit | description: Sizes units (inches or cm) - enum: CM, INCHES - name: description | type: string | description: Text description of the size guide - name: imageUrl | type: string | description: Image for the size guide - name: imageDescription | type: string | description: Text description of the image content - name: specifications | type: array | description: Sizes specifications - name: category | type: string | description: What is measured, e.g. chest, waist, sleeve - name: measurements | type: array | description: Measurements for different sizes - ONE-OF: - name: singleValue | type: string | description: The value of the size in case of single value - name: range | type: MeasurementValueRange | description: The value of the size in case of range (min/max) - name: minimum | type: string | description: Minimum value - name: maximum | type: string | description: Maximum value - name: sizeLabel | type: string | description: Product size, e.g. S, M, L - name: tags | type: Tags | description: Product tags for organization and filtering. - name: privateTags | type: TagList | description: Tags that require an additional permission in order to access them, normally not given to site members or visitors. - name: tagIds | type: array | description: List of tag GUIDs. - name: publicTags | type: TagList | description: Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors. - name: bulkActionMetadata | type: BulkActionMetadata | description: Metadata regarding the bulk update operation - name: totalSuccesses | type: integer | description: Number of items that were successfully processed. - name: totalFailures | type: integer | description: Number of items that couldn't be processed. - name: undetailedFailures | type: integer | description: Number of failures without details because detailed failure threshold was exceeded. ``` ### Examples ### Bulk update product inventory Updates inventory quantities for multiple products efficiently ```curl curl -X PATCH \ 'https://www.wixapis.com/suppliers-hub/v1/bulk/products/update' \ -H 'Authorization: ' \ -H 'Content-Type: application/json' \ -d '{ "products": [ { "product": { "id": "740164a3-d5c9-496b-844a-0d6a7b5f20fe", "minimumPrice": "20" } }, { "product": { "id": "d6278ac2-7ccc-4b21-a4ea-e9e5c75673e3", "wholesaleOptions": { "priceTiers": [ { "priceFrom": "20", "countFrom": 10, "countTo": 500 }, { "priceFrom": "18", "countFrom": 501 } ], "minimumOrderQuantity": 10 }, "types": [ "WHOLESALE" ] } } ], "returnEntity": true }' ``` --- ## JavaScript SDK ### Schema ``` Method: wixClientAdmin.suppliersHub.MarketplaceProduct.bulkUpdateProducts(products, options) Description: Updates multiple products in a single request. Supports partial success and partial field updates. Each result includes an `itemMetadata` object indicating success or failure with error details. When handling failures, distinguish between validation errors which shouldn't be retried, and transient errors which can be retried. Only retry failed items, not the entire batch. # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present. Required parameters: products, products.product._id, products.product.directCategories._id, products.product.directCategories.namespace Method parameters: param name: options | type: BulkUpdateProductsOptions none - name: returnEntity | type: boolean | description: Whether to return the updated products in the response. Default: `false` param name: products | type: array | description: Products to update. Each can be partial based on its field mask. | required: true - name: product | type: Product | description: Product to update. May be partial - only fields to be updated need to be provided. - name: _id | type: string | description: Product GUID. | required: true - name: providerInfo | type: ProviderInfo | description: Information about the business partner providing this product. - name: productId | type: string | description: Unique product identifier on the provider's platform. This field serves as the external system's primary key for synchronization and prevents duplicate products from being created. Once set, you can't change this field. - name: productCreatedDate | type: Date | description: Date and time the product was created on the provider's platform. This field helps maintain the connection to the original product source. Once set, you can't change this field. - name: url | type: string | description: Product URL on the provider's platform. - name: name | type: string | description: Product name. - name: description | type: string | description: Product description. - name: visible | type: boolean | description: Whether the product is visible in the Marketplace. Default: `true` - name: media | type: Media | description: Product media. - name: items | type: array | description: Product images. The first image becomes the main image. - name: types | type: array | description: Business model types this product supports. - enum: - DROPSHIPPING: Product is fulfilled by the supplier without inventory management by the store owner. - WHOLESALE: Product is sold in bulk quantities with tiered pricing. - PRINT_ON_DEMAND: Product is manufactured after purchase; no pre‑held inventory. - name: options | type: array | description: Product options that customers can choose from. Options display available product variations like size and color to help buyers make purchase decisions. Currently, options are informational only and don't create separate inventory items or variants. There are 2 predefined option types you can use: - `color`: Color choices for the product. Values should be standard color names. For example, `"Black"`, `"White"`, `"Yellow"`. - `size`: Size choices for the product. Values should be standard size labels. For example, `"S"`, `"M"`, `"L"`, `"XL"`. - name: name | type: string | description: Option name. There are 2 predefined options you can use: - `color`: Represents color choices for the product. Values should be standard color names. For example, `"Black"`, `"White"`, `"Yellow"`. - `size`: Represents size choices for the product. Values should be standard size labels. For example, `"S"`, `"M"`, `"L"`, `"XL"`. - name: description | type: string | description: Optional description explaining the option. - name: values | type: array | description: Available values for this option. - ONE-OF: - name: color | type: ColorOption | description: Color option with name, hex code, and sort order. - name: name | type: string | description: Color name. For example, `"Black"` or `"Navy Blue"`. Use 'Multicolor' for mixed colors. When using 'Multicolor', do not provide a hex value. - name: hex | type: string | description: Hex color code. For example, `"#000000"` for black. Omit for 'Multicolor'. - name: ribbonName | type: string | description: Promotional ribbon text displayed on the product. For example, `"New Arrival"` or `"Bestseller"`. - name: brand | type: string | description: Brand name. - name: orderProcessingTime | type: TimeInterval | description: Time required to process orders before shipping. - name: min | type: TimeValue | description: Minimum time in the range. - name: value | type: integer | description: Numeric time value. For example, `2` for "2 days". - name: unit | type: TimeUnit | description: Time unit for the value. - enum: - DAY: Days. - WEEK: Weeks. - MONTH: Months. - name: max | type: TimeValue | description: Maximum time in the range. - name: shippingDestinations | type: array | description: Countries and regions where this product can be shipped, with location-specific pricing and timing. - ONE-OF: - name: specificCountrySelections | type: Countries | description: Specific countries. Used when `countrySelections` is `SPECIFIC_COUNTRY`. - name: countries | type: array | description: Country codes, in [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1) format. - name: countrySelections | type: CountrySelections | description: Indicates if shipping applies to selected countries or to all other regions. - enum: - REST_OF_THE_WORLD: All countries not specifically listed elsewhere. - SPECIFIC_COUNTRY: Specific countries listed in the `countries` field. - name: minimumShippingCost | type: string | description: Minimum shipping cost to this destination in USD. - name: shippingTime | type: TimeInterval | description: Expected shipping time to this destination. - name: minimumProductCost | type: string | description: Minimum Product Cost to the Shipping Location - name: minimumPrice | type: string | description: Minimum price, in USD. - name: productOrigin | type: string | description: 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. - name: directCategories | type: array | description: List of categories that directly contain this product. Each category's namespace must match at least one of the product's types. For example, if a product has type `DROPSHIPPING`, its categories must use `DROPSHIPPING_NAMESPACE`. Products with both `DROPSHIPPING` and `WHOLESALE` types can have categories from both namespaces. - name: _id | type: string | description: Category GUID. - name: namespace | type: CategoryNamespace | description: The namespace of the category tree this assignment belongs to. - enum: - DROPSHIPPING_NAMESPACE: Namespace for the dropshipping category tree. - WHOLESALE_NAMESPACE: Namespace for the wholesale category tree. - PRINT_ON_DEMAND_NAMESPACE: Namespace for the print on demand category tree. - name: wholesaleOptions | type: WholesaleOptions | description: Wholesale-specific configuration including tiered pricing and minimum order quantities. Required when `types` includes `WHOLESALE`. - name: priceTiers | type: array | description: Tiered pricing based on order quantity ranges. Price tiers must be continuous with no gaps in quantity ranges. For example, if tier 1 covers quantities 1-100, tier 2 must start at 101. The system validates tier continuity when creating or updating products. - name: priceFrom | type: string | description: Minimum price for this quantity tier in USD. If `priceTo` isn't specified, this price applies to all quantities in the tier. - name: priceTo | type: string | description: Maximum price for this quantity tier in USD. Optional for fixed-price tiers. - name: countFrom | type: integer | description: Minimum quantity for this price tier, inclusive. - name: countTo | type: integer | description: Maximum quantity for this price tier, inclusive. If not specified, this tier applies to all quantities greater or equal to `countFrom`. - name: minimumOrderQuantity | type: integer | description: Minimum quantity required for wholesale orders. - name: supplierInfo | type: SupplierInfo | description: Information about the supplier including name, rating, and trust status. - name: _id | type: string | description: Supplier GUID. When provided, references a supplier in the Marketplace Supplier service. The system automatically retrieves and populates the supplier's name, rating, and verification status. - name: printOnDemandOptions | type: PrintOnDemandOptions | description: Print-on-demand-specific configuration including supported print technologies and mockup assets. Required when `types` include `PRINT_ON_DEMAND`. - name: printTechnologies | type: array | description: Set of possible print technologies for the Product - enum: - DIRECT_TO_FILM: Transfers printed on film and heat-pressed onto fabric. - DIRECT_TO_GARMENT: Ink directly onto garment. - CUT_SEW_SUBLIMATION: Panels are printed first, then sewn. All‑over coverage with precise placements. - DIGITAL_PRINTING: Non‑DTG digital methods (e.g., roll‑to‑roll). - EMBROIDERY: Stitched threads, premium look. - SUBLIMATION: Dye infused into polyester/poly‑coated substrates. - UV_PRINTING: Cures ink with UV light on rigid or treated surfaces. - KNITWEAR: Pattern/design is knitted, not printed. - DIRECT_TO_FABRIC: Designs are printed directly onto rolls of fabric, which are then cut and sewn into the final product. - name: sizeGuides | type: array | description: Information about the product sizing - name: measurementUnit | type: MeasurementUnit | description: Sizes units (inches or cm) - enum: CM, INCHES - name: description | type: string | description: Text description of the size guide - name: imageUrl | type: string | description: Image for the size guide - name: imageDescription | type: string | description: Text description of the image content - name: specifications | type: array | description: Sizes specifications - name: category | type: string | description: What is measured, e.g. chest, waist, sleeve - name: measurements | type: array | description: Measurements for different sizes - ONE-OF: - name: singleValue | type: string | description: The value of the size in case of single value - name: range | type: MeasurementValueRange | description: The value of the size in case of range (min/max) - name: minimum | type: string | description: Minimum value - name: maximum | type: string | description: Maximum value - name: sizeLabel | type: string | description: Product size, e.g. S, M, L - name: tags | type: Tags | description: Product tags for organization and filtering. - name: privateTags | type: TagList | description: Tags that require an additional permission in order to access them, normally not given to site members or visitors. - name: tagIds | type: array | description: List of tag GUIDs. - name: publicTags | type: TagList | description: Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors. Return type: PROMISE - name: results | type: array | description: Results - name: itemMetadata | type: ItemMetadata | description: Metadata regarding the specific single update operation - name: _id | type: string | description: Item GUID. Should always be available, unless it's impossible. For example, when failing to create an item. - name: originalIndex | type: integer | description: Index of the item within the request array. Allows for correlation between request and response items. - name: success | type: boolean | description: Whether the requested action was successful for this item. When `false`, the `error` field is populated. - name: error | type: ApplicationError | description: Details about the error in case of failure. - name: code | type: string | description: Error code. - name: description | type: string | description: Description of the error. - name: data | type: object | description: Data related to the error. - name: item | type: Product | description: Only exists if `returnEntity` was set to true in the request - name: _id | type: string | description: Product GUID. - name: _createdDate | type: Date | description: Date and time the product was created. - name: _updatedDate | type: Date | description: Date and time the product was updated. - name: providerInfo | type: ProviderInfo | description: Information about the business partner providing this product. - name: appId | type: string | description: Provider application GUID. - name: productId | type: string | description: Unique product identifier on the provider's platform. This field serves as the external system's primary key for synchronization and prevents duplicate products from being created. Once set, you can't change this field. - name: productCreatedDate | type: Date | description: Date and time the product was created on the provider's platform. This field helps maintain the connection to the original product source. Once set, you can't change this field. - name: url | type: string | description: Product URL on the provider's platform. - name: name | type: string | description: Product name. - name: description | type: string | description: Product description. - name: visible | type: boolean | description: Whether the product is visible in the Marketplace. Default: `true` - name: media | type: Media | description: Product media. - name: main | type: string | description: Primary product image, automatically set from the first item in the `items` array. - name: items | type: array | description: Product images. The first image becomes the main image. - name: types | type: array | description: Business model types this product supports. - enum: - DROPSHIPPING: Product is fulfilled by the supplier without inventory management by the store owner. - WHOLESALE: Product is sold in bulk quantities with tiered pricing. - PRINT_ON_DEMAND: Product is manufactured after purchase; no pre‑held inventory. - name: options | type: array | description: Product options that customers can choose from. Options display available product variations like size and color to help buyers make purchase decisions. Currently, options are informational only and don't create separate inventory items or variants. There are 2 predefined option types you can use: - `color`: Color choices for the product. Values should be standard color names. For example, `"Black"`, `"White"`, `"Yellow"`. - `size`: Size choices for the product. Values should be standard size labels. For example, `"S"`, `"M"`, `"L"`, `"XL"`. - name: name | type: string | description: Option name. There are 2 predefined options you can use: - `color`: Represents color choices for the product. Values should be standard color names. For example, `"Black"`, `"White"`, `"Yellow"`. - `size`: Represents size choices for the product. Values should be standard size labels. For example, `"S"`, `"M"`, `"L"`, `"XL"`. - name: description | type: string | description: Optional description explaining the option. - name: values | type: array | description: Available values for this option. - ONE-OF: - name: color | type: ColorOption | description: Color option with name, hex code, and sort order. - name: name | type: string | description: Color name. For example, `"Black"` or `"Navy Blue"`. Use 'Multicolor' for mixed colors. When using 'Multicolor', do not provide a hex value. - name: hex | type: string | description: Hex color code. For example, `"#000000"` for black. Omit for 'Multicolor'. - name: ribbonName | type: string | description: Promotional ribbon text displayed on the product. For example, `"New Arrival"` or `"Bestseller"`. - name: brand | type: string | description: Brand name. - name: orderProcessingTime | type: TimeInterval | description: Time required to process orders before shipping. - name: min | type: TimeValue | description: Minimum time in the range. - name: value | type: integer | description: Numeric time value. For example, `2` for "2 days". - name: unit | type: TimeUnit | description: Time unit for the value. - enum: - DAY: Days. - WEEK: Weeks. - MONTH: Months. - name: max | type: TimeValue | description: Maximum time in the range. - name: shippingDestinations | type: array | description: Countries and regions where this product can be shipped, with location-specific pricing and timing. - ONE-OF: - name: specificCountrySelections | type: Countries | description: Specific countries. Used when `countrySelections` is `SPECIFIC_COUNTRY`. - name: countries | type: array | description: Country codes, in [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1) format. - name: countrySelections | type: CountrySelections | description: Indicates if shipping applies to selected countries or to all other regions. - enum: - REST_OF_THE_WORLD: All countries not specifically listed elsewhere. - SPECIFIC_COUNTRY: Specific countries listed in the `countries` field. - name: minimumShippingCost | type: string | description: Minimum shipping cost to this destination in USD. - name: shippingTime | type: TimeInterval | description: Expected shipping time to this destination. - name: minimumProductCost | type: string | description: Minimum Product Cost to the Shipping Location - name: minimumPrice | type: string | description: Minimum price, in USD. - name: productOrigin | type: string | description: 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. - name: directCategories | type: array | description: List of categories that directly contain this product. Each category's namespace must match at least one of the product's types. For example, if a product has type `DROPSHIPPING`, its categories must use `DROPSHIPPING_NAMESPACE`. Products with both `DROPSHIPPING` and `WHOLESALE` types can have categories from both namespaces. - name: _id | type: string | description: Category GUID. - name: index | type: integer | description: Product's position within this category. - name: namespace | type: CategoryNamespace | description: The namespace of the category tree this assignment belongs to. - enum: - DROPSHIPPING_NAMESPACE: Namespace for the dropshipping category tree. - WHOLESALE_NAMESPACE: Namespace for the wholesale category tree. - PRINT_ON_DEMAND_NAMESPACE: Namespace for the print on demand category tree. - name: allCategories | type: array | description: List of categories that directly contain this product, as well as their parent categories. - name: wholesaleOptions | type: WholesaleOptions | description: Wholesale-specific configuration including tiered pricing and minimum order quantities. Required when `types` includes `WHOLESALE`. - name: priceTiers | type: array | description: Tiered pricing based on order quantity ranges. Price tiers must be continuous with no gaps in quantity ranges. For example, if tier 1 covers quantities 1-100, tier 2 must start at 101. The system validates tier continuity when creating or updating products. - name: priceFrom | type: string | description: Minimum price for this quantity tier in USD. If `priceTo` isn't specified, this price applies to all quantities in the tier. - name: priceTo | type: string | description: Maximum price for this quantity tier in USD. Optional for fixed-price tiers. - name: countFrom | type: integer | description: Minimum quantity for this price tier, inclusive. - name: countTo | type: integer | description: Maximum quantity for this price tier, inclusive. If not specified, this tier applies to all quantities greater or equal to `countFrom`. - name: minimumOrderQuantity | type: integer | description: Minimum quantity required for wholesale orders. - name: supplierInfo | type: SupplierInfo | description: Information about the supplier including name, rating, and trust status. - name: _id | type: string | description: Supplier GUID. When provided, references a supplier in the Marketplace Supplier service. The system automatically retrieves and populates the supplier's name, rating, and verification status. - name: name | type: string | description: Supplier name. Automatically populated from the Supplier service when `id` is provided. - name: rating | type: string | description: Supplier rating from 1.00 to 5.00. Automatically populated from the Supplier service when `id` is provided. - name: verified | type: boolean | description: Whether the supplier has been verified by the Marketplace. Verified suppliers have completed the Marketplace verification process. Automatically populated from the Supplier service when `id` is provided. Default: `false` - name: printOnDemandOptions | type: PrintOnDemandOptions | description: Print-on-demand-specific configuration including supported print technologies and mockup assets. Required when `types` include `PRINT_ON_DEMAND`. - name: printTechnologies | type: array | description: Set of possible print technologies for the Product - enum: - DIRECT_TO_FILM: Transfers printed on film and heat-pressed onto fabric. - DIRECT_TO_GARMENT: Ink directly onto garment. - CUT_SEW_SUBLIMATION: Panels are printed first, then sewn. All‑over coverage with precise placements. - DIGITAL_PRINTING: Non‑DTG digital methods (e.g., roll‑to‑roll). - EMBROIDERY: Stitched threads, premium look. - SUBLIMATION: Dye infused into polyester/poly‑coated substrates. - UV_PRINTING: Cures ink with UV light on rigid or treated surfaces. - KNITWEAR: Pattern/design is knitted, not printed. - DIRECT_TO_FABRIC: Designs are printed directly onto rolls of fabric, which are then cut and sewn into the final product. - name: mockupImage | type: string | description: Mockup image of the product with 'Your Image Here' text. - name: sizeGuides | type: array | description: Information about the product sizing - name: measurementUnit | type: MeasurementUnit | description: Sizes units (inches or cm) - enum: CM, INCHES - name: description | type: string | description: Text description of the size guide - name: imageUrl | type: string | description: Image for the size guide - name: imageDescription | type: string | description: Text description of the image content - name: specifications | type: array | description: Sizes specifications - name: category | type: string | description: What is measured, e.g. chest, waist, sleeve - name: measurements | type: array | description: Measurements for different sizes - ONE-OF: - name: singleValue | type: string | description: The value of the size in case of single value - name: range | type: MeasurementValueRange | description: The value of the size in case of range (min/max) - name: minimum | type: string | description: Minimum value - name: maximum | type: string | description: Maximum value - name: sizeLabel | type: string | description: Product size, e.g. S, M, L - name: tags | type: Tags | description: Product tags for organization and filtering. - name: privateTags | type: TagList | description: Tags that require an additional permission in order to access them, normally not given to site members or visitors. - name: tagIds | type: array | description: List of tag GUIDs. - name: publicTags | type: TagList | description: Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors. - name: bulkActionMetadata | type: BulkActionMetadata | description: Metadata regarding the bulk update operation - name: totalSuccesses | type: integer | description: Number of items that were successfully processed. - name: totalFailures | type: integer | description: Number of items that couldn't be processed. - name: undetailedFailures | type: integer | description: Number of failures without details because detailed failure threshold was exceeded. ``` ### Examples ### bulkUpdateProducts ```javascript import { products } from '@wix/suppliers-hub'; async function bulkUpdateProducts(products,options) { const response = await products.bulkUpdateProducts(products,options); }; ``` ### bulkUpdateProducts (with elevated permissions) ```javascript import { products } from '@wix/suppliers-hub'; import { auth } from '@wix/essentials'; async function myBulkUpdateProductsMethod(products,options) { const elevatedBulkUpdateProducts = auth.elevate(products.bulkUpdateProducts); const response = await elevatedBulkUpdateProducts(products,options); } ``` ### bulkUpdateProducts (self-hosted) Self-hosted SDK calls require you to [create a client](https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/about-the-wix-client.md). ```javascript import { createClient } from '@wix/sdk'; import { products } from '@wix/suppliers-hub'; // Import the auth strategy for the relevant access type // Import the relevant host module if needed const myWixClient = createClient ({ modules: { products }, // Include the auth strategy and host as relevant }); async function bulkUpdateProducts(products,options) { const response = await myWixClient.products.bulkUpdateProducts(products,options); }; ``` ---