{"version":3,"sources":["../../src/stores-catalog-v3-product-products-v-3.schemas.ts"],"sourcesContent":["import * as z from 'zod';\n\nexport const CreateProductRequest = z.object({\n  product: z\n    .intersection(\n      z.object({\n        _id: z\n          .string()\n          .describe('Product ID.')\n          .min(1)\n          .max(36)\n          .optional()\n          .nullable(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product.'\n          )\n          .optional()\n          .nullable(),\n        _createdDate: z\n          .date()\n          .describe('Date and time the product was created.')\n          .optional()\n          .nullable(),\n        _updatedDate: z\n          .date()\n          .describe('Date and time the product was updated.')\n          .optional()\n          .nullable(),\n        name: z.string().describe('Product name. Translatable.').min(1).max(80),\n        slug: z\n          .string()\n          .describe(\n            'Product slug. A URL-friendly identifier used in the product page address.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n          )\n          .min(1)\n          .max(300)\n          .optional()\n          .nullable(),\n        url: z\n          .string()\n          .describe(\n            'URL to the site\\'s product page.\\n\\n> **Note:** Returned only when you pass `\"URL\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n        description: z\n          .any()\n          .describe(\n            'Product description using rich content.\\n> **Note:** Returned only when you pass `\"DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n          )\n          .optional(),\n        plainDescription: z\n          .string()\n          .describe(\n            'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n          )\n          .max(16000)\n          .optional()\n          .nullable(),\n        visible: z\n          .boolean()\n          .describe(\n            \"Whether the product is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the default variant's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n          )\n          .optional()\n          .nullable(),\n        visibleInPos: z\n          .boolean()\n          .describe(\n            'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n          )\n          .optional()\n          .nullable(),\n        media: z\n          .object({\n            main: z\n              .intersection(\n                z.object({\n                  altText: z\n                    .string()\n                    .describe('Image alt text.')\n                    .min(1)\n                    .max(1000)\n                    .optional()\n                    .nullable(),\n                  displayName: z\n                    .string()\n                    .describe(\n                      \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                    )\n                    .max(80)\n                    .optional()\n                    .nullable(),\n                  mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                  thumbnail: z\n                    .object({\n                      url: z\n                        .string()\n                        .describe('Thumbnail url.')\n                        .url()\n                        .optional(),\n                      height: z\n                        .number()\n                        .int()\n                        .describe('Thumbnail height.')\n                        .optional(),\n                      width: z\n                        .number()\n                        .int()\n                        .describe('Thumbnail width.')\n                        .optional(),\n                      altText: z\n                        .string()\n                        .describe('Thumbnail alt text.')\n                        .min(1)\n                        .max(1000)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                  uploadId: z\n                    .string()\n                    .describe('ID used to upload media to Wix Media Manager.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                }),\n                z.intersection(\n                  z.xor([\n                    z.object({\n                      _id: z.never().optional(),\n                      url: z.never().optional(),\n                    }),\n                    z.object({\n                      url: z.never().optional(),\n                      _id: z\n                        .string()\n                        .describe(\n                          'Set media by ID of an existing file in Wix Media Manager.'\n                        )\n                        .min(1)\n                        .max(200),\n                    }),\n                    z.object({\n                      _id: z.never().optional(),\n                      url: z\n                        .string()\n                        .describe('Set media using an external media URL.')\n                        .url(),\n                    }),\n                  ]),\n                  z.xor([\n                    z.object({\n                      image: z.never().optional(),\n                      video: z.never().optional(),\n                    }),\n                    z.object({\n                      video: z.never().optional(),\n                      image: z\n                        .string()\n                        .describe(\n                          \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                        ),\n                    }),\n                    z.object({\n                      image: z.never().optional(),\n                      video: z\n                        .string()\n                        .describe(\n                          \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                        ),\n                    }),\n                  ])\n                )\n              )\n              .describe(\n                'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n              )\n              .optional(),\n            itemsInfo: z\n              .object({\n                items: z\n                  .array(\n                    z.intersection(\n                      z.object({\n                        altText: z\n                          .string()\n                          .describe('Image alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        displayName: z\n                          .string()\n                          .describe(\n                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                          )\n                          .max(80)\n                          .optional()\n                          .nullable(),\n                        mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                        thumbnail: z\n                          .object({\n                            url: z\n                              .string()\n                              .describe('Thumbnail url.')\n                              .url()\n                              .optional(),\n                            height: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail height.')\n                              .optional(),\n                            width: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail width.')\n                              .optional(),\n                            altText: z\n                              .string()\n                              .describe('Thumbnail alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        uploadId: z\n                          .string()\n                          .describe(\n                            'ID used to upload media to Wix Media Manager.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                      }),\n                      z.intersection(\n                        z.xor([\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z.never().optional(),\n                          }),\n                          z.object({\n                            url: z.never().optional(),\n                            _id: z\n                              .string()\n                              .describe(\n                                'Set media by ID of an existing file in Wix Media Manager.'\n                              )\n                              .min(1)\n                              .max(200),\n                          }),\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z\n                              .string()\n                              .describe(\n                                'Set media using an external media URL.'\n                              )\n                              .url(),\n                          }),\n                        ]),\n                        z.xor([\n                          z.object({\n                            image: z.never().optional(),\n                            video: z.never().optional(),\n                          }),\n                          z.object({\n                            video: z.never().optional(),\n                            image: z\n                              .string()\n                              .describe(\n                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                              ),\n                          }),\n                          z.object({\n                            image: z.never().optional(),\n                            video: z\n                              .string()\n                              .describe(\n                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                  )\n                  .max(50)\n                  .optional(),\n              })\n              .describe(\n                'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n              )\n              .optional(),\n          })\n          .describe(\n            'Product media items. For a detailed explanation of product media, see [About Product Media](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/about-product-media).'\n          )\n          .optional(),\n        seoData: z\n          .object({\n            tags: z\n              .array(\n                z.object({\n                  type: z\n                    .string()\n                    .describe(\n                      'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                    )\n                    .optional(),\n                  props: z\n                    .record(z.string(), z.any())\n                    .describe(\n                      'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  meta: z\n                    .record(z.string(), z.any())\n                    .describe(\n                      'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  children: z\n                    .string()\n                    .describe(\n                      'SEO tag inner content. For example, `<title> inner content </title>`.'\n                    )\n                    .optional(),\n                  custom: z\n                    .boolean()\n                    .describe(\n                      'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                    )\n                    .optional(),\n                  disabled: z\n                    .boolean()\n                    .describe(\n                      \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                    )\n                    .optional(),\n                })\n              )\n              .optional(),\n            settings: z\n              .object({\n                preventAutoRedirect: z\n                  .boolean()\n                  .describe(\n                    'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n                  )\n                  .optional(),\n                keywords: z\n                  .array(\n                    z.object({\n                      term: z.string().describe('Keyword value.').optional(),\n                      isMain: z\n                        .boolean()\n                        .describe(\n                          'Whether the keyword is the main focus keyword.'\n                        )\n                        .optional(),\n                      origin: z\n                        .string()\n                        .describe(\n                          'The source that added the keyword terms to the SEO settings.'\n                        )\n                        .max(1000)\n                        .optional()\n                        .nullable(),\n                    })\n                  )\n                  .max(5)\n                  .optional(),\n              })\n              .describe('SEO general settings.')\n              .optional(),\n          })\n          .describe('Product SEO data.')\n          .optional(),\n        taxGroupId: z\n          .string()\n          .describe(\n            '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        options: z\n          .array(\n            z.intersection(\n              z.object({\n                _id: z\n                  .string()\n                  .describe(\n                    'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n                  )\n                  .min(1)\n                  .max(36)\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Option name.')\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                optionRenderType: z\n                  .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                  .optional(),\n                key: z\n                  .string()\n                  .describe(\n                    'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional(),\n              }),\n              z.xor([\n                z.object({\n                  choicesSettings: z\n                    .object({\n                      choices: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              linkedMedia: z\n                                .array(\n                                  z.intersection(\n                                    z.object({\n                                      altText: z\n                                        .string()\n                                        .describe('Image alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                      displayName: z\n                                        .string()\n                                        .describe(\n                                          \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                        )\n                                        .max(80)\n                                        .optional()\n                                        .nullable(),\n                                      mediaType: z\n                                        .enum(['IMAGE', 'VIDEO'])\n                                        .optional(),\n                                      thumbnail: z\n                                        .object({\n                                          url: z\n                                            .string()\n                                            .describe('Thumbnail url.')\n                                            .url()\n                                            .optional(),\n                                          height: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail height.')\n                                            .optional(),\n                                          width: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail width.')\n                                            .optional(),\n                                          altText: z\n                                            .string()\n                                            .describe('Thumbnail alt text.')\n                                            .min(1)\n                                            .max(1000)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .optional(),\n                                      uploadId: z\n                                        .string()\n                                        .describe(\n                                          'ID used to upload media to Wix Media Manager.'\n                                        )\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    }),\n                                    z.intersection(\n                                      z.xor([\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          url: z.never().optional(),\n                                          _id: z\n                                            .string()\n                                            .describe(\n                                              'Set media by ID of an existing file in Wix Media Manager.'\n                                            )\n                                            .min(1)\n                                            .max(200),\n                                        }),\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z\n                                            .string()\n                                            .describe(\n                                              'Set media using an external media URL.'\n                                            )\n                                            .url(),\n                                        }),\n                                      ]),\n                                      z.xor([\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          video: z.never().optional(),\n                                          image: z\n                                            .string()\n                                            .describe(\n                                              \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                            ),\n                                        }),\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z\n                                            .string()\n                                            .describe(\n                                              \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                            ),\n                                        }),\n                                      ])\n                                    )\n                                  )\n                                )\n                                .max(15)\n                                .optional(),\n                              choiceType: z\n                                .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                .optional(),\n                              key: z\n                                .string()\n                                .describe(\n                                  'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe(\n                                  'Choice name. For text choices, this field also contains the choice value.'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional()\n                                .nullable(),\n                              inStock: z\n                                .boolean()\n                                .describe(\n                                  'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                                )\n                                .optional(),\n                              visible: z\n                                .boolean()\n                                .describe(\n                                  'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                                )\n                                .optional(),\n                              displayImage: z\n                                .string()\n                                .describe(\n                                  'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                )\n                                .optional(),\n                              media: z\n                                .object({\n                                  items: z\n                                    .array(\n                                      z.intersection(\n                                        z.object({}),\n                                        z.xor([\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            mediaId: z\n                                              .string()\n                                              .describe(\n                                                'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'External media URL. Can be used only on write.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                    .max(15)\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                )\n                                .optional(),\n                            }),\n                            z.xor([\n                              z.object({ colorCode: z.never().optional() }),\n                              z.object({\n                                colorCode: z\n                                  .string()\n                                  .describe(\n                                    'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                                  )\n                                  .min(3)\n                                  .max(20),\n                              }),\n                            ])\n                          )\n                        )\n                        .min(1)\n                        .max(100)\n                        .optional(),\n                    })\n                    .describe('Choices settings.'),\n                }),\n              ])\n            )\n          )\n          .max(6)\n          .optional(),\n        modifiers: z\n          .array(\n            z.intersection(\n              z.object({\n                _id: z\n                  .string()\n                  .describe(\n                    'ID of a customization with `customizationType: MODIFIER`.'\n                  )\n                  .min(1)\n                  .max(36)\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Modifier title.')\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                modifierRenderType: z\n                  .enum(['FREE_TEXT', 'TEXT_CHOICES', 'SWATCH_CHOICES'])\n                  .optional(),\n                mandatory: z\n                  .boolean()\n                  .describe(\n                    'Whether customer input is required for this modifier.'\n                  )\n                  .optional(),\n                key: z\n                  .string()\n                  .describe(\n                    'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional(),\n              }),\n              z.xor([\n                z.object({\n                  choicesSettings: z.never().optional(),\n                  freeTextSettings: z\n                    .object({\n                      minCharCount: z\n                        .number()\n                        .int()\n                        .describe('Minimum number of characters.')\n                        .optional(),\n                      maxCharCount: z\n                        .number()\n                        .int()\n                        .describe('Maximum number of characters.')\n                        .max(500)\n                        .optional(),\n                      defaultAddedPrice: z\n                        .string()\n                        .describe(\n                          \"Default amount to be added to the product's price.\"\n                        )\n                        .optional()\n                        .nullable(),\n                      title: z\n                        .string()\n                        .describe(\n                          'Title of the text to be input by the customer.'\n                        )\n                        .min(1)\n                        .max(150)\n                        .optional(),\n                      key: z\n                        .string()\n                        .describe(\n                          'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                        )\n                        .min(1)\n                        .max(150)\n                        .optional(),\n                    })\n                    .describe('Free text modifier settings.'),\n                }),\n                z.object({\n                  freeTextSettings: z.never().optional(),\n                  choicesSettings: z\n                    .object({\n                      choices: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              linkedMedia: z\n                                .array(\n                                  z.intersection(\n                                    z.object({\n                                      altText: z\n                                        .string()\n                                        .describe('Image alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                      displayName: z\n                                        .string()\n                                        .describe(\n                                          \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                        )\n                                        .max(80)\n                                        .optional()\n                                        .nullable(),\n                                      mediaType: z\n                                        .enum(['IMAGE', 'VIDEO'])\n                                        .optional(),\n                                      thumbnail: z\n                                        .object({\n                                          url: z\n                                            .string()\n                                            .describe('Thumbnail url.')\n                                            .url()\n                                            .optional(),\n                                          height: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail height.')\n                                            .optional(),\n                                          width: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail width.')\n                                            .optional(),\n                                          altText: z\n                                            .string()\n                                            .describe('Thumbnail alt text.')\n                                            .min(1)\n                                            .max(1000)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .optional(),\n                                      uploadId: z\n                                        .string()\n                                        .describe(\n                                          'ID used to upload media to Wix Media Manager.'\n                                        )\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    }),\n                                    z.intersection(\n                                      z.xor([\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          url: z.never().optional(),\n                                          _id: z\n                                            .string()\n                                            .describe(\n                                              'Set media by ID of an existing file in Wix Media Manager.'\n                                            )\n                                            .min(1)\n                                            .max(200),\n                                        }),\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z\n                                            .string()\n                                            .describe(\n                                              'Set media using an external media URL.'\n                                            )\n                                            .url(),\n                                        }),\n                                      ]),\n                                      z.xor([\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          video: z.never().optional(),\n                                          image: z\n                                            .string()\n                                            .describe(\n                                              \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                            ),\n                                        }),\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z\n                                            .string()\n                                            .describe(\n                                              \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                            ),\n                                        }),\n                                      ])\n                                    )\n                                  )\n                                )\n                                .max(15)\n                                .optional(),\n                              choiceType: z\n                                .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                .optional(),\n                              key: z\n                                .string()\n                                .describe(\n                                  'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe('Choice name.')\n                                .min(1)\n                                .max(50)\n                                .optional()\n                                .nullable(),\n                              addedPrice: z\n                                .string()\n                                .describe('Added price.')\n                                .optional()\n                                .nullable(),\n                              displayImage: z\n                                .string()\n                                .describe(\n                                  'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                )\n                                .optional(),\n                              media: z\n                                .object({\n                                  items: z\n                                    .array(\n                                      z.intersection(\n                                        z.object({}),\n                                        z.xor([\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            mediaId: z\n                                              .string()\n                                              .describe(\n                                                'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'External media URL. Can be used only on write.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                    .max(15)\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                )\n                                .optional(),\n                            }),\n                            z.xor([\n                              z.object({ colorCode: z.never().optional() }),\n                              z.object({\n                                colorCode: z\n                                  .string()\n                                  .describe(\n                                    'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                                  )\n                                  .min(3)\n                                  .max(20),\n                              }),\n                            ])\n                          )\n                        )\n                        .min(1)\n                        .max(100)\n                        .optional(),\n                    })\n                    .describe('Choice settings.'),\n                }),\n              ])\n            )\n          )\n          .max(10)\n          .optional(),\n        brand: z\n          .object({\n            _id: z\n              .string()\n              .describe('Brand ID.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            name: z\n              .string()\n              .describe('Brand name.')\n              .max(50)\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            \"Product [brand](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/brands-v3/introduction).\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n          )\n          .optional(),\n        infoSections: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('Info section ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              uniqueName: z\n                .string()\n                .describe(\n                  'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n              title: z\n                .string()\n                .describe(\n                  'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                )\n                .min(1)\n                .max(50)\n                .optional()\n                .nullable(),\n              description: z\n                .any()\n                .describe(\n                  'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                )\n                .optional(),\n              plainDescription: z\n                .string()\n                .describe(\n                  'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                )\n                .max(16000)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(10)\n          .optional(),\n        ribbon: z\n          .object({\n            _id: z\n              .string()\n              .describe('Ribbon ID.')\n              .min(1)\n              .max(36)\n              .optional()\n              .nullable(),\n            name: z\n              .string()\n              .describe('Ribbon name.')\n              .max(30)\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            \"Primary [ribbon](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/ribbons-v3/introduction) displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n          )\n          .optional(),\n        directCategoriesInfo: z\n          .object({\n            categories: z\n              .array(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Category ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                  index: z\n                    .number()\n                    .int()\n                    .describe(\n                      'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                    )\n                    .min(0)\n                    .max(200)\n                    .optional()\n                    .nullable(),\n                })\n              )\n              .max(2000)\n              .optional(),\n          })\n          .describe(\n            'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product.\\n\\nUpdated automatically when a product is added/removed from a category, when an item is moved within a category, or when a category is deleted.\\n> **Note:** Returned only when you pass `\"DIRECT_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n        allCategoriesInfo: z\n          .object({\n            categories: z\n              .array(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Category ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                  index: z\n                    .number()\n                    .int()\n                    .describe(\n                      'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                    )\n                    .min(0)\n                    .max(200)\n                    .optional()\n                    .nullable(),\n                })\n              )\n              .max(2000)\n              .optional(),\n          })\n          .describe(\n            'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product, as well as their parent categories.\\n> **Note:** Returned only when you pass `\"ALL_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n        mainCategoryId: z\n          .string()\n          .describe(\n            'The ID of the product\\'s primary direct [category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction), which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        costRange: z\n          .object({\n            minValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Minimum value.')\n              .optional(),\n            maxValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Maximum value.')\n              .optional(),\n          })\n          .describe(\n            'Product cost range - minimum and maximum costs of all product variants.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n          )\n          .optional(),\n        inventory: z\n          .object({\n            availabilityStatus: z\n              .enum(['IN_STOCK', 'OUT_OF_STOCK', 'PARTIALLY_OUT_OF_STOCK'])\n              .optional(),\n            preorderStatus: z\n              .enum(['ENABLED', 'DISABLED', 'PARTIALLY_ENABLED'])\n              .optional(),\n            preorderAvailability: z\n              .enum(['ALL_VARIANTS', 'NO_VARIANTS', 'SOME_VARIANTS'])\n              .optional(),\n          })\n          .describe(\n            'Product inventory info.\\n\\n> **Note:** This field reflects the aggregated inventory status from the default location only. Use the [Inventory Items API](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/inventory-items-v3/introduction) to manage inventory for specific locations. Learn more about [inventory management](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-inventory-management).'\n          )\n          .optional(),\n        productType: z.enum(['PHYSICAL', 'DIGITAL']),\n        handle: z\n          .string()\n          .describe(\n            \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n          )\n          .min(1)\n          .max(100)\n          .optional()\n          .nullable(),\n        currency: z\n          .string()\n          .describe(\n            'Currency used for the pricing of this product, in [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes) format.\\n\\nDefaults to the currency defined in the site settings, unless specified in the request\\'s `x-wix-currency` header.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n          )\n          .optional()\n          .nullable(),\n        breadcrumbsInfo: z\n          .object({\n            breadcrumbs: z\n              .array(\n                z.object({\n                  categoryId: z\n                    .string()\n                    .describe('Category ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                  categoryName: z\n                    .string()\n                    .describe('Category name.')\n                    .min(1)\n                    .max(80)\n                    .optional(),\n                  categorySlug: z\n                    .string()\n                    .describe('Category slug.')\n                    .min(1)\n                    .max(100)\n                    .optional(),\n                })\n              )\n              .max(5)\n              .optional(),\n          })\n          .describe(\n            'Breadcrumbs of the `mainCategoryId`. Used to navigate to parent [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction). Useful for building navigation UI and for SEO purposes.\\n> **Note:** Returned only when you pass `\"BREADCRUMBS_INFO\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n        actualPriceRange: z\n          .object({\n            minValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Minimum value.')\n              .optional(),\n            maxValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Maximum value.')\n              .optional(),\n          })\n          .describe(\n            'Minimum and maximum current selling prices across all product variants.'\n          )\n          .optional(),\n        compareAtPriceRange: z\n          .object({\n            minValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Minimum value.')\n              .optional(),\n            maxValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Maximum value.')\n              .optional(),\n          })\n          .describe(\n            'Minimum and maximum compare-at prices (original prices before discounts) across all product variants. Used to show savings to customers.'\n          )\n          .optional(),\n        variantsInfo: z\n          .object({\n            variants: z\n              .array(\n                z.intersection(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Variant ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    visible: z\n                      .boolean()\n                      .describe(\n                        \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                      )\n                      .optional()\n                      .nullable(),\n                    sku: z\n                      .string()\n                      .describe('Variant SKU (stock keeping unit).')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    barcode: z\n                      .string()\n                      .describe('Variant barcode.')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.object({\n                          optionChoiceIds: z\n                            .object({\n                              optionId: z\n                                .string()\n                                .describe('Option ID.')\n                                .min(1)\n                                .max(36),\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                ),\n                            })\n                            .describe(\n                              \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                            )\n                            .optional(),\n                          optionChoiceNames: z\n                            .object({\n                              optionName: z\n                                .string()\n                                .describe('Option name.')\n                                .min(1)\n                                .optional(),\n                              choiceName: z\n                                .string()\n                                .describe('Choice name.')\n                                .min(1)\n                                .optional(),\n                              renderType: z\n                                .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                .optional(),\n                            })\n                            .describe(\n                              'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .min(0)\n                      .max(6)\n                      .optional(),\n                    price: z\n                      .object({\n                        actualPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            \"Variant's current selling price. Must be greater than or equal to 0.\"\n                          ),\n                        compareAtPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                          )\n                          .optional(),\n                        priceAfterDiscount: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                          )\n                          .optional(),\n                      })\n                      .describe('Variant price.'),\n                    revenueDetails: z\n                      .object({\n                        cost: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe('Item cost.')\n                          .optional(),\n                        profit: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                          )\n                          .optional(),\n                        profitMargin: z\n                          .number()\n                          .describe(\n                            'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                          )\n                          .min(0)\n                          .max(1)\n                          .optional(),\n                      })\n                      .describe(\n                        'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                      )\n                      .optional(),\n                    media: z\n                      .intersection(\n                        z.object({\n                          altText: z\n                            .string()\n                            .describe('Image alt text.')\n                            .min(1)\n                            .max(1000)\n                            .optional()\n                            .nullable(),\n                          displayName: z\n                            .string()\n                            .describe(\n                              \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                            )\n                            .max(80)\n                            .optional()\n                            .nullable(),\n                          mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                          thumbnail: z\n                            .object({\n                              url: z\n                                .string()\n                                .describe('Thumbnail url.')\n                                .url()\n                                .optional(),\n                              height: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail height.')\n                                .optional(),\n                              width: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail width.')\n                                .optional(),\n                              altText: z\n                                .string()\n                                .describe('Thumbnail alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                          uploadId: z\n                            .string()\n                            .describe(\n                              'ID used to upload media to Wix Media Manager.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                        }),\n                        z.intersection(\n                          z.xor([\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z.never().optional(),\n                            }),\n                            z.object({\n                              url: z.never().optional(),\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Set media by ID of an existing file in Wix Media Manager.'\n                                )\n                                .min(1)\n                                .max(200),\n                            }),\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z\n                                .string()\n                                .describe(\n                                  'Set media using an external media URL.'\n                                )\n                                .url(),\n                            }),\n                          ]),\n                          z.xor([\n                            z.object({\n                              image: z.never().optional(),\n                              video: z.never().optional(),\n                            }),\n                            z.object({\n                              video: z.never().optional(),\n                              image: z\n                                .string()\n                                .describe(\n                                  \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                ),\n                            }),\n                            z.object({\n                              image: z.never().optional(),\n                              video: z\n                                .string()\n                                .describe(\n                                  \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                ),\n                            }),\n                          ])\n                        )\n                      )\n                      .describe('Variant media.')\n                      .optional(),\n                    subscriptionPricesInfo: z\n                      .object({\n                        subscriptionPrices: z\n                          .array(\n                            z.object({\n                              subscriptionId: z\n                                .string()\n                                .describe('Subscription ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                              price: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                )\n                                .optional(),\n                              pricePerUnit: z\n                                .object({\n                                  value: z\n                                    .string()\n                                    .describe(\n                                      'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                    )\n                                    .optional(),\n                                  description: z\n                                    .string()\n                                    .describe(\n                                      'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                  priceAfterDiscount: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe('Price per unit info.')\n                                .optional(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                          )\n                          .max(6)\n                          .optional(),\n                      })\n                      .describe(\n                        'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    inventoryStatus: z\n                      .object({\n                        inStock: z\n                          .boolean()\n                          .describe('Whether the variant is in stock.')\n                          .optional(),\n                        preorderEnabled: z\n                          .boolean()\n                          .describe(\n                            'Whether preorder is enabled for this variant.'\n                          )\n                          .optional(),\n                      })\n                      .describe('Variant inventory status.')\n                      .optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z.never().optional(),\n                    }),\n                    z.object({\n                      digitalProperties: z.never().optional(),\n                      physicalProperties: z\n                        .object({\n                          weight: z\n                            .number()\n                            .describe(\n                              'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                            )\n                            .min(0)\n                            .max(999999999.99)\n                            .optional()\n                            .nullable(),\n                          pricePerUnit: z\n                            .object({\n                              settings: z\n                                .object({\n                                  quantity: z\n                                    .number()\n                                    .describe(\n                                      'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                    )\n                                    .min(0.01)\n                                    .max(999999999.99)\n                                    .optional(),\n                                  measurementUnit: z\n                                    .enum([\n                                      'UNSPECIFIED',\n                                      'ML',\n                                      'CL',\n                                      'L',\n                                      'CBM',\n                                      'MG',\n                                      'G',\n                                      'KG',\n                                      'MM',\n                                      'CM',\n                                      'M',\n                                      'SQM',\n                                      'OZ',\n                                      'LB',\n                                      'FLOZ',\n                                      'PT',\n                                      'QT',\n                                      'GAL',\n                                      'IN',\n                                      'FT',\n                                      'YD',\n                                      'SQFT',\n                                    ])\n                                    .describe(\n                                      'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                )\n                                .optional(),\n                              value: z\n                                .string()\n                                .describe(\n                                  \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                )\n                                .optional(),\n                              description: z\n                                .string()\n                                .describe(\n                                  'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(100)\n                                .optional()\n                                .nullable(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                            )\n                            .optional(),\n                          productDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Product dimensions (length, width, height of the physical product).'\n                            )\n                            .optional(),\n                          packageDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Package dimensions (length, width, height of the shipping package).'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Physical properties. Must be passed when `productType: PHYSICAL`'\n                        ),\n                    }),\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z\n                        .object({\n                          digitalFile: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe('Media ID in media manager.')\n                                .min(1)\n                                .max(100)\n                                .optional(),\n                              fileName: z\n                                .string()\n                                .describe('Original file name.')\n                                .min(1)\n                                .max(1000)\n                                .optional(),\n                              fileSize: z\n                                .string()\n                                .describe('Original file size.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              fileType: z\n                                .enum([\n                                  'UNSPECIFIED',\n                                  'SECURE_PICTURE',\n                                  'SECURE_VIDEO',\n                                  'SECURE_DOCUMENT',\n                                  'SECURE_MUSIC',\n                                  'SECURE_ARCHIVE',\n                                  'SECURE_RAW',\n                                ])\n                                .describe('File type.')\n                                .optional(),\n                            })\n                            .describe(\n                              'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Digital properties. Must be passed when `productType: DIGITAL`'\n                        ),\n                    }),\n                  ])\n                )\n              )\n              .min(1)\n              .max(1000),\n          })\n          .describe(\n            'Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nYou must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).'\n          ),\n        purchaseEligibility: z\n          .object({ userCriteria: z.enum(['MEMBERS_ONLY']).optional() })\n          .describe('Purchase eligibility settings for the product.')\n          .optional(),\n        additionalRibbons: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('Ribbon ID.')\n                .min(1)\n                .max(36)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Ribbon name.')\n                .max(30)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(4)\n          .optional(),\n        extendedFields: z\n          .object({\n            namespaces: z\n              .record(z.string(), z.record(z.string(), z.any()))\n              .describe(\n                'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n              )\n              .optional(),\n          })\n          .describe(\n            'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n          )\n          .optional(),\n        tags: z\n          .object({\n            privateTags: z\n              .object({ tagIds: z.array(z.string()).max(100).optional() })\n              .describe(\n                'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n              )\n              .optional(),\n            publicTags: z\n              .object({ tagIds: z.array(z.string()).max(100).optional() })\n              .describe(\n                'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n              )\n              .optional(),\n          })\n          .describe('Tags')\n          .optional(),\n        subscriptionDetails: z\n          .object({\n            subscriptions: z\n              .array(\n                z.intersection(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Subscription ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    title: z\n                      .string()\n                      .describe('Subscription title.')\n                      .min(1)\n                      .max(20),\n                    description: z\n                      .string()\n                      .describe('Subscription description.')\n                      .max(60)\n                      .optional()\n                      .nullable(),\n                    visible: z\n                      .boolean()\n                      .describe(\n                        'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                      )\n                      .optional()\n                      .nullable(),\n                    frequency: z.enum([\n                      'UNDEFINED',\n                      'DAY',\n                      'WEEK',\n                      'MONTH',\n                      'YEAR',\n                    ]),\n                    interval: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                      )\n                      .min(1)\n                      .max(50)\n                      .optional()\n                      .nullable(),\n                    discount: z\n                      .intersection(\n                        z.object({ type: z.enum(['AMOUNT', 'PERCENT']) }),\n                        z.xor([\n                          z.object({\n                            percentOff: z.never().optional(),\n                            amountOff: z\n                              .string()\n                              .describe(\n                                'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                              ),\n                          }),\n                          z.object({\n                            amountOff: z.never().optional(),\n                            percentOff: z\n                              .number()\n                              .describe(\n                                'Percentage subtracted from the variant price when calculating subscription prices.'\n                              )\n                              .min(0.1)\n                              .max(99.9),\n                          }),\n                        ])\n                      )\n                      .describe(\n                        'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                      )\n                      .optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      billingCycles: z.never().optional(),\n                      autoRenewal: z\n                        .boolean()\n                        .describe(\n                          'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                        ),\n                    }),\n                    z.object({\n                      autoRenewal: z.never().optional(),\n                      billingCycles: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Number of billing cycles before subscription ends.'\n                        )\n                        .min(2)\n                        .max(999),\n                    }),\n                  ])\n                )\n              )\n              .min(1)\n              .max(6),\n            allowOneTimePurchases: z\n              .boolean()\n              .describe(\n                'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n              )\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n          )\n          .optional(),\n        variantSummary: z\n          .object({\n            variantCount: z\n              .number()\n              .int()\n              .describe('The total number of variants for the product.')\n              .optional(),\n            minPriceVariant: z\n              .intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Variant ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  visible: z\n                    .boolean()\n                    .describe(\n                      \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                    )\n                    .optional()\n                    .nullable(),\n                  sku: z\n                    .string()\n                    .describe('Variant SKU (stock keeping unit).')\n                    .min(1)\n                    .max(40)\n                    .optional()\n                    .nullable(),\n                  barcode: z\n                    .string()\n                    .describe('Variant barcode.')\n                    .min(1)\n                    .max(40)\n                    .optional()\n                    .nullable(),\n                  choices: z\n                    .array(\n                      z.object({\n                        optionChoiceIds: z\n                          .object({\n                            optionId: z\n                              .string()\n                              .describe('Option ID.')\n                              .min(1)\n                              .max(36),\n                            choiceId: z\n                              .string()\n                              .describe('Choice ID.')\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              ),\n                          })\n                          .describe(\n                            \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                          )\n                          .optional(),\n                        optionChoiceNames: z\n                          .object({\n                            optionName: z\n                              .string()\n                              .describe('Option name.')\n                              .min(1)\n                              .optional(),\n                            choiceName: z\n                              .string()\n                              .describe('Choice name.')\n                              .min(1)\n                              .optional(),\n                            renderType: z\n                              .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                              .optional(),\n                          })\n                          .describe(\n                            'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                      })\n                    )\n                    .min(0)\n                    .max(6)\n                    .optional(),\n                  price: z\n                    .object({\n                      actualPrice: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          \"Variant's current selling price. Must be greater than or equal to 0.\"\n                        ),\n                      compareAtPrice: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                        )\n                        .optional(),\n                      priceAfterDiscount: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                        )\n                        .optional(),\n                    })\n                    .describe('Variant price.'),\n                  revenueDetails: z\n                    .object({\n                      cost: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe('Item cost.')\n                        .optional(),\n                      profit: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                        )\n                        .optional(),\n                      profitMargin: z\n                        .number()\n                        .describe(\n                          'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                        )\n                        .min(0)\n                        .max(1)\n                        .optional(),\n                    })\n                    .describe(\n                      'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                    )\n                    .optional(),\n                  media: z\n                    .intersection(\n                      z.object({\n                        altText: z\n                          .string()\n                          .describe('Image alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        displayName: z\n                          .string()\n                          .describe(\n                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                          )\n                          .max(80)\n                          .optional()\n                          .nullable(),\n                        mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                        thumbnail: z\n                          .object({\n                            url: z\n                              .string()\n                              .describe('Thumbnail url.')\n                              .url()\n                              .optional(),\n                            height: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail height.')\n                              .optional(),\n                            width: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail width.')\n                              .optional(),\n                            altText: z\n                              .string()\n                              .describe('Thumbnail alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        uploadId: z\n                          .string()\n                          .describe(\n                            'ID used to upload media to Wix Media Manager.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                      }),\n                      z.intersection(\n                        z.xor([\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z.never().optional(),\n                          }),\n                          z.object({\n                            url: z.never().optional(),\n                            _id: z\n                              .string()\n                              .describe(\n                                'Set media by ID of an existing file in Wix Media Manager.'\n                              )\n                              .min(1)\n                              .max(200),\n                          }),\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z\n                              .string()\n                              .describe(\n                                'Set media using an external media URL.'\n                              )\n                              .url(),\n                          }),\n                        ]),\n                        z.xor([\n                          z.object({\n                            image: z.never().optional(),\n                            video: z.never().optional(),\n                          }),\n                          z.object({\n                            video: z.never().optional(),\n                            image: z\n                              .string()\n                              .describe(\n                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                              ),\n                          }),\n                          z.object({\n                            image: z.never().optional(),\n                            video: z\n                              .string()\n                              .describe(\n                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                    .describe('Variant media.')\n                    .optional(),\n                  subscriptionPricesInfo: z\n                    .object({\n                      subscriptionPrices: z\n                        .array(\n                          z.object({\n                            subscriptionId: z\n                              .string()\n                              .describe('Subscription ID.')\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                            price: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                              )\n                              .optional(),\n                            pricePerUnit: z\n                              .object({\n                                value: z\n                                  .string()\n                                  .describe(\n                                    'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                  )\n                                  .optional(),\n                                description: z\n                                  .string()\n                                  .describe(\n                                    'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                                priceAfterDiscount: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe('Price per unit info.')\n                              .optional(),\n                            priceAfterDiscount: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                              )\n                              .optional(),\n                          })\n                        )\n                        .max(6)\n                        .optional(),\n                    })\n                    .describe(\n                      'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                  inventoryStatus: z\n                    .object({\n                      inStock: z\n                        .boolean()\n                        .describe('Whether the variant is in stock.')\n                        .optional(),\n                      preorderEnabled: z\n                        .boolean()\n                        .describe(\n                          'Whether preorder is enabled for this variant.'\n                        )\n                        .optional(),\n                    })\n                    .describe('Variant inventory status.')\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    physicalProperties: z.never().optional(),\n                    digitalProperties: z.never().optional(),\n                  }),\n                  z.object({\n                    digitalProperties: z.never().optional(),\n                    physicalProperties: z\n                      .object({\n                        weight: z\n                          .number()\n                          .describe(\n                            'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                          )\n                          .min(0)\n                          .max(999999999.99)\n                          .optional()\n                          .nullable(),\n                        pricePerUnit: z\n                          .object({\n                            settings: z\n                              .object({\n                                quantity: z\n                                  .number()\n                                  .describe(\n                                    'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                  )\n                                  .min(0.01)\n                                  .max(999999999.99)\n                                  .optional(),\n                                measurementUnit: z\n                                  .enum([\n                                    'UNSPECIFIED',\n                                    'ML',\n                                    'CL',\n                                    'L',\n                                    'CBM',\n                                    'MG',\n                                    'G',\n                                    'KG',\n                                    'MM',\n                                    'CM',\n                                    'M',\n                                    'SQM',\n                                    'OZ',\n                                    'LB',\n                                    'FLOZ',\n                                    'PT',\n                                    'QT',\n                                    'GAL',\n                                    'IN',\n                                    'FT',\n                                    'YD',\n                                    'SQFT',\n                                  ])\n                                  .describe(\n                                    'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                              )\n                              .optional(),\n                            value: z\n                              .string()\n                              .describe(\n                                \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                              )\n                              .optional(),\n                            description: z\n                              .string()\n                              .describe(\n                                'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(100)\n                              .optional()\n                              .nullable(),\n                            priceAfterDiscount: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                          )\n                          .optional(),\n                        productDimensions: z\n                          .object({\n                            length: z\n                              .string()\n                              .describe(\n                                'Length. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            width: z\n                              .string()\n                              .describe(\n                                'Width. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            height: z\n                              .string()\n                              .describe(\n                                'Height. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            unit: z\n                              .enum([\n                                'UNKNOWN_DIMENSIONS_UNIT',\n                                'MM',\n                                'CM',\n                                'M',\n                                'IN',\n                                'FT',\n                                'YD',\n                              ])\n                              .describe(\n                                'Unit of measurement for dimensions (length, width, height).'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Product dimensions (length, width, height of the physical product).'\n                          )\n                          .optional(),\n                        packageDimensions: z\n                          .object({\n                            length: z\n                              .string()\n                              .describe(\n                                'Length. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            width: z\n                              .string()\n                              .describe(\n                                'Width. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            height: z\n                              .string()\n                              .describe(\n                                'Height. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            unit: z\n                              .enum([\n                                'UNKNOWN_DIMENSIONS_UNIT',\n                                'MM',\n                                'CM',\n                                'M',\n                                'IN',\n                                'FT',\n                                'YD',\n                              ])\n                              .describe(\n                                'Unit of measurement for dimensions (length, width, height).'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Package dimensions (length, width, height of the shipping package).'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Physical properties. Must be passed when `productType: PHYSICAL`'\n                      ),\n                  }),\n                  z.object({\n                    physicalProperties: z.never().optional(),\n                    digitalProperties: z\n                      .object({\n                        digitalFile: z\n                          .object({\n                            _id: z\n                              .string()\n                              .describe('Media ID in media manager.')\n                              .min(1)\n                              .max(100)\n                              .optional(),\n                            fileName: z\n                              .string()\n                              .describe('Original file name.')\n                              .min(1)\n                              .max(1000)\n                              .optional(),\n                            fileSize: z\n                              .string()\n                              .describe('Original file size.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                            fileType: z\n                              .enum([\n                                'UNSPECIFIED',\n                                'SECURE_PICTURE',\n                                'SECURE_VIDEO',\n                                'SECURE_DOCUMENT',\n                                'SECURE_MUSIC',\n                                'SECURE_ARCHIVE',\n                                'SECURE_RAW',\n                              ])\n                              .describe('File type.')\n                              .optional(),\n                          })\n                          .describe(\n                            'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Digital properties. Must be passed when `productType: DIGITAL`'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\n                'The variant with the lowest `actualPrice` among visible variants for this product.\\n\\nHidden variants are excluded; ties are broken by variant order. Empty if the product has no visible variants.\\n> **Note:** Returned only when you pass `\"MIN_PRICE_VARIANT\"` to the `fields` array in Products API requests.'\n              )\n              .optional(),\n          })\n          .describe('The total number of variants for the product.')\n          .optional(),\n      }),\n      z.xor([\n        z.object({ physicalProperties: z.never().optional() }),\n        z.object({\n          physicalProperties: z\n            .object({\n              pricePerUnit: z\n                .object({\n                  quantity: z\n                    .number()\n                    .describe(\n                      'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                    )\n                    .min(0.01)\n                    .max(999999999.99)\n                    .optional(),\n                  measurementUnit: z\n                    .enum([\n                      'UNSPECIFIED',\n                      'ML',\n                      'CL',\n                      'L',\n                      'CBM',\n                      'MG',\n                      'G',\n                      'KG',\n                      'MM',\n                      'CM',\n                      'M',\n                      'SQM',\n                      'OZ',\n                      'LB',\n                      'FLOZ',\n                      'PT',\n                      'QT',\n                      'GAL',\n                      'IN',\n                      'FT',\n                      'YD',\n                      'SQFT',\n                    ])\n                    .describe(\n                      'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n                )\n                .optional(),\n              fulfillerId: z\n                .string()\n                .describe('Fulfiller ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              shippingWeightRange: z\n                .object({\n                  minValue: z\n                    .number()\n                    .describe(\n                      'Minimum weight across all variants associated with this product.'\n                    )\n                    .min(0)\n                    .max(999999999.99)\n                    .optional(),\n                  maxValue: z\n                    .number()\n                    .describe(\n                      'Maximum weight across all variants associated with this product.'\n                    )\n                    .min(0)\n                    .max(999999999.99)\n                    .optional(),\n                })\n                .describe(\n                  'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n                )\n                .optional(),\n              pricePerUnitRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      value: z\n                        .string()\n                        .describe(\n                          \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                        )\n                        .optional(),\n                      description: z\n                        .string()\n                        .describe(\n                          'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                        )\n                        .max(100)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum price per unit across all variants.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      value: z\n                        .string()\n                        .describe(\n                          \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                        )\n                        .optional(),\n                      description: z\n                        .string()\n                        .describe(\n                          'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                        )\n                        .max(100)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum price per unit across all variants.')\n                    .optional(),\n                })\n                .describe(\n                  'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n                )\n                .optional(),\n              weightMeasurementUnitInfo: z\n                .object({\n                  weightMeasurementUnit: z\n                    .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                    .describe('Weight measurement unit.')\n                    .optional(),\n                })\n                .describe(\n                  'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              deliveryProfileId: z\n                .string()\n                .describe('Delivery profile ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n            ),\n        }),\n      ])\n    )\n    .describe(\n      'Product to create.\\n\\nAt least 1 variant must be provided, and each variant must have an item in the `choices` field for every item in `options`.\\nIf `options` is empty, 1 default variant must be provided with an empty `choices` list.'\n    ),\n  options: z\n    .object({\n      fields: z\n        .array(\n          z.enum([\n            'URL',\n            'CURRENCY',\n            'INFO_SECTION',\n            'MERCHANT_DATA',\n            'PLAIN_DESCRIPTION',\n            'INFO_SECTION_PLAIN_DESCRIPTION',\n            'SUBSCRIPTION_PRICES_INFO',\n            'BREADCRUMBS_INFO',\n            'WEIGHT_MEASUREMENT_UNIT_INFO',\n            'VARIANT_OPTION_CHOICE_NAMES',\n            'MEDIA_ITEMS_INFO',\n            'DESCRIPTION',\n            'DIRECT_CATEGORIES_INFO',\n            'ALL_CATEGORIES_INFO',\n            'INFO_SECTION_DESCRIPTION',\n            'THUMBNAIL',\n            'PRODUCT_CHOICES_MEDIA_REFERENCES',\n            'PRODUCT_CHOICES_DISPLAY_IMAGE',\n            'DISCOUNT_INFO',\n          ])\n        )\n        .max(100)\n        .optional(),\n    })\n    .optional(),\n});\nexport const CreateProductResponse = z.intersection(\n  z.object({\n    _id: z\n      .string()\n      .describe('Product ID.')\n      .min(1)\n      .max(36)\n      .optional()\n      .nullable(),\n    revision: z\n      .string()\n      .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n      .describe(\n        'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product.'\n      )\n      .optional()\n      .nullable(),\n    _createdDate: z\n      .date()\n      .describe('Date and time the product was created.')\n      .optional()\n      .nullable(),\n    _updatedDate: z\n      .date()\n      .describe('Date and time the product was updated.')\n      .optional()\n      .nullable(),\n    name: z\n      .string()\n      .describe('Product name. Translatable.')\n      .min(1)\n      .max(80)\n      .optional()\n      .nullable(),\n    slug: z\n      .string()\n      .describe(\n        'Product slug. A URL-friendly identifier used in the product page address.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n      )\n      .min(1)\n      .max(300)\n      .optional()\n      .nullable(),\n    url: z\n      .string()\n      .describe(\n        'URL to the site\\'s product page.\\n\\n> **Note:** Returned only when you pass `\"URL\"` to the `fields` array in Products API requests.'\n      )\n      .optional(),\n    description: z\n      .any()\n      .describe(\n        'Product description using rich content.\\n> **Note:** Returned only when you pass `\"DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n      )\n      .optional(),\n    plainDescription: z\n      .string()\n      .describe(\n        'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n      )\n      .max(16000)\n      .optional()\n      .nullable(),\n    visible: z\n      .boolean()\n      .describe(\n        \"Whether the product is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the default variant's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n      )\n      .optional()\n      .nullable(),\n    visibleInPos: z\n      .boolean()\n      .describe(\n        'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n      )\n      .optional()\n      .nullable(),\n    media: z\n      .object({\n        main: z\n          .intersection(\n            z.object({\n              altText: z\n                .string()\n                .describe('Image alt text.')\n                .min(1)\n                .max(1000)\n                .optional()\n                .nullable(),\n              displayName: z\n                .string()\n                .describe(\n                  \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                )\n                .max(80)\n                .optional()\n                .nullable(),\n              mediaType: z\n                .enum(['IMAGE', 'VIDEO'])\n                .describe('Media type.')\n                .optional(),\n              thumbnail: z\n                .object({\n                  url: z.string().describe('Thumbnail url.').url().optional(),\n                  height: z\n                    .number()\n                    .int()\n                    .describe('Thumbnail height.')\n                    .optional(),\n                  width: z\n                    .number()\n                    .int()\n                    .describe('Thumbnail width.')\n                    .optional(),\n                  altText: z\n                    .string()\n                    .describe('Thumbnail alt text.')\n                    .min(1)\n                    .max(1000)\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              uploadId: z\n                .string()\n                .describe('ID used to upload media to Wix Media Manager.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n            }),\n            z.intersection(\n              z.xor([\n                z.object({\n                  _id: z.never().optional(),\n                  url: z.never().optional(),\n                }),\n                z.object({\n                  url: z.never().optional(),\n                  _id: z\n                    .string()\n                    .describe(\n                      'Set media by ID of an existing file in Wix Media Manager.'\n                    )\n                    .min(1)\n                    .max(200),\n                }),\n                z.object({\n                  _id: z.never().optional(),\n                  url: z\n                    .string()\n                    .describe('Set media using an external media URL.')\n                    .url(),\n                }),\n              ]),\n              z.xor([\n                z.object({\n                  image: z.never().optional(),\n                  video: z.never().optional(),\n                }),\n                z.object({\n                  video: z.never().optional(),\n                  image: z\n                    .string()\n                    .describe(\n                      \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                    ),\n                }),\n                z.object({\n                  image: z.never().optional(),\n                  video: z\n                    .string()\n                    .describe(\n                      \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                    ),\n                }),\n              ])\n            )\n          )\n          .describe(\n            'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n          )\n          .optional(),\n        itemsInfo: z\n          .object({\n            items: z\n              .array(\n                z.intersection(\n                  z.object({\n                    altText: z\n                      .string()\n                      .describe('Image alt text.')\n                      .min(1)\n                      .max(1000)\n                      .optional()\n                      .nullable(),\n                    displayName: z\n                      .string()\n                      .describe(\n                        \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                      )\n                      .max(80)\n                      .optional()\n                      .nullable(),\n                    mediaType: z\n                      .enum(['IMAGE', 'VIDEO'])\n                      .describe('Media type.')\n                      .optional(),\n                    thumbnail: z\n                      .object({\n                        url: z\n                          .string()\n                          .describe('Thumbnail url.')\n                          .url()\n                          .optional(),\n                        height: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail height.')\n                          .optional(),\n                        width: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail width.')\n                          .optional(),\n                        altText: z\n                          .string()\n                          .describe('Thumbnail alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    uploadId: z\n                      .string()\n                      .describe('ID used to upload media to Wix Media Manager.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                  }),\n                  z.intersection(\n                    z.xor([\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z.never().optional(),\n                      }),\n                      z.object({\n                        url: z.never().optional(),\n                        _id: z\n                          .string()\n                          .describe(\n                            'Set media by ID of an existing file in Wix Media Manager.'\n                          )\n                          .min(1)\n                          .max(200),\n                      }),\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z\n                          .string()\n                          .describe('Set media using an external media URL.')\n                          .url(),\n                      }),\n                    ]),\n                    z.xor([\n                      z.object({\n                        image: z.never().optional(),\n                        video: z.never().optional(),\n                      }),\n                      z.object({\n                        video: z.never().optional(),\n                        image: z\n                          .string()\n                          .describe(\n                            \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                          ),\n                      }),\n                      z.object({\n                        image: z.never().optional(),\n                        video: z\n                          .string()\n                          .describe(\n                            \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                          ),\n                      }),\n                    ])\n                  )\n                )\n              )\n              .max(50)\n              .optional(),\n          })\n          .describe(\n            'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n      })\n      .describe(\n        'Product media items. For a detailed explanation of product media, see [About Product Media](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/about-product-media).'\n      )\n      .optional(),\n    seoData: z\n      .object({\n        tags: z\n          .array(\n            z.object({\n              type: z\n                .string()\n                .describe(\n                  'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                )\n                .optional(),\n              props: z\n                .record(z.string(), z.any())\n                .describe(\n                  'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                )\n                .optional()\n                .nullable(),\n              meta: z\n                .record(z.string(), z.any())\n                .describe(\n                  'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                )\n                .optional()\n                .nullable(),\n              children: z\n                .string()\n                .describe(\n                  'SEO tag inner content. For example, `<title> inner content </title>`.'\n                )\n                .optional(),\n              custom: z\n                .boolean()\n                .describe(\n                  'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                )\n                .optional(),\n              disabled: z\n                .boolean()\n                .describe(\n                  \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                )\n                .optional(),\n            })\n          )\n          .optional(),\n        settings: z\n          .object({\n            preventAutoRedirect: z\n              .boolean()\n              .describe(\n                'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n              )\n              .optional(),\n            keywords: z\n              .array(\n                z.object({\n                  term: z.string().describe('Keyword value.').optional(),\n                  isMain: z\n                    .boolean()\n                    .describe('Whether the keyword is the main focus keyword.')\n                    .optional(),\n                  origin: z\n                    .string()\n                    .describe(\n                      'The source that added the keyword terms to the SEO settings.'\n                    )\n                    .max(1000)\n                    .optional()\n                    .nullable(),\n                })\n              )\n              .max(5)\n              .optional(),\n          })\n          .describe('SEO general settings.')\n          .optional(),\n      })\n      .describe('Product SEO data.')\n      .optional(),\n    taxGroupId: z\n      .string()\n      .describe(\n        '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n      )\n      .regex(\n        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n        'Must be a valid GUID'\n      )\n      .optional()\n      .nullable(),\n    options: z\n      .array(\n        z.intersection(\n          z.object({\n            _id: z\n              .string()\n              .describe(\n                'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n              )\n              .min(1)\n              .max(36)\n              .optional()\n              .nullable(),\n            name: z\n              .string()\n              .describe('Option name.')\n              .min(1)\n              .max(50)\n              .optional()\n              .nullable(),\n            optionRenderType: z\n              .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n              .describe('Option render type.')\n              .optional(),\n            key: z\n              .string()\n              .describe(\n                'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n              )\n              .min(1)\n              .max(50)\n              .optional(),\n          }),\n          z.xor([\n            z.object({ choicesSettings: z.never().optional() }),\n            z.object({\n              choicesSettings: z\n                .object({\n                  choices: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          choiceId: z\n                            .string()\n                            .describe('Choice ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          linkedMedia: z\n                            .array(\n                              z.intersection(\n                                z.object({\n                                  altText: z\n                                    .string()\n                                    .describe('Image alt text.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                  displayName: z\n                                    .string()\n                                    .describe(\n                                      \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                    )\n                                    .max(80)\n                                    .optional()\n                                    .nullable(),\n                                  mediaType: z\n                                    .enum(['IMAGE', 'VIDEO'])\n                                    .describe('Media type.')\n                                    .optional(),\n                                  thumbnail: z\n                                    .object({\n                                      url: z\n                                        .string()\n                                        .describe('Thumbnail url.')\n                                        .url()\n                                        .optional(),\n                                      height: z\n                                        .number()\n                                        .int()\n                                        .describe('Thumbnail height.')\n                                        .optional(),\n                                      width: z\n                                        .number()\n                                        .int()\n                                        .describe('Thumbnail width.')\n                                        .optional(),\n                                      altText: z\n                                        .string()\n                                        .describe('Thumbnail alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .optional(),\n                                  uploadId: z\n                                    .string()\n                                    .describe(\n                                      'ID used to upload media to Wix Media Manager.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                }),\n                                z.intersection(\n                                  z.xor([\n                                    z.object({\n                                      _id: z.never().optional(),\n                                      url: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      url: z.never().optional(),\n                                      _id: z\n                                        .string()\n                                        .describe(\n                                          'Set media by ID of an existing file in Wix Media Manager.'\n                                        )\n                                        .min(1)\n                                        .max(200),\n                                    }),\n                                    z.object({\n                                      _id: z.never().optional(),\n                                      url: z\n                                        .string()\n                                        .describe(\n                                          'Set media using an external media URL.'\n                                        )\n                                        .url(),\n                                    }),\n                                  ]),\n                                  z.xor([\n                                    z.object({\n                                      image: z.never().optional(),\n                                      video: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      video: z.never().optional(),\n                                      image: z\n                                        .string()\n                                        .describe(\n                                          \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                        ),\n                                    }),\n                                    z.object({\n                                      image: z.never().optional(),\n                                      video: z\n                                        .string()\n                                        .describe(\n                                          \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                        ),\n                                    }),\n                                  ])\n                                )\n                              )\n                            )\n                            .max(15)\n                            .optional(),\n                          choiceType: z\n                            .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                            .describe('Choice type.')\n                            .optional(),\n                          key: z\n                            .string()\n                            .describe(\n                              'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                            )\n                            .min(1)\n                            .max(50)\n                            .optional(),\n                          name: z\n                            .string()\n                            .describe(\n                              'Choice name. For text choices, this field also contains the choice value.'\n                            )\n                            .min(1)\n                            .max(50)\n                            .optional()\n                            .nullable(),\n                          inStock: z\n                            .boolean()\n                            .describe(\n                              'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                            )\n                            .optional(),\n                          visible: z\n                            .boolean()\n                            .describe(\n                              'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                            )\n                            .optional(),\n                          displayImage: z\n                            .string()\n                            .describe(\n                              'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                            )\n                            .optional(),\n                          media: z\n                            .object({\n                              items: z\n                                .array(\n                                  z.intersection(\n                                    z.object({}),\n                                    z.xor([\n                                      z.object({\n                                        mediaId: z.never().optional(),\n                                        url: z.never().optional(),\n                                      }),\n                                      z.object({\n                                        url: z.never().optional(),\n                                        mediaId: z\n                                          .string()\n                                          .describe(\n                                            'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                          )\n                                          .min(1)\n                                          .max(200),\n                                      }),\n                                      z.object({\n                                        mediaId: z.never().optional(),\n                                        url: z\n                                          .string()\n                                          .describe(\n                                            'External media URL. Can be used only on write.'\n                                          )\n                                          .url(),\n                                      }),\n                                    ])\n                                  )\n                                )\n                                .max(15)\n                                .optional(),\n                            })\n                            .describe(\n                              'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                            )\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({ colorCode: z.never().optional() }),\n                          z.object({\n                            colorCode: z\n                              .string()\n                              .describe(\n                                'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                              )\n                              .min(3)\n                              .max(20),\n                          }),\n                        ])\n                      )\n                    )\n                    .min(1)\n                    .max(100)\n                    .optional(),\n                })\n                .describe('Choices settings.'),\n            }),\n          ])\n        )\n      )\n      .max(6)\n      .optional(),\n    modifiers: z\n      .array(\n        z.intersection(\n          z.object({\n            _id: z\n              .string()\n              .describe(\n                'ID of a customization with `customizationType: MODIFIER`.'\n              )\n              .min(1)\n              .max(36)\n              .optional()\n              .nullable(),\n            name: z\n              .string()\n              .describe('Modifier title.')\n              .min(1)\n              .max(50)\n              .optional()\n              .nullable(),\n            modifierRenderType: z\n              .enum(['FREE_TEXT', 'TEXT_CHOICES', 'SWATCH_CHOICES'])\n              .describe('Modifier render type.')\n              .optional(),\n            mandatory: z\n              .boolean()\n              .describe('Whether customer input is required for this modifier.')\n              .optional(),\n            key: z\n              .string()\n              .describe(\n                'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n              )\n              .min(1)\n              .max(50)\n              .optional(),\n          }),\n          z.xor([\n            z.object({\n              freeTextSettings: z.never().optional(),\n              choicesSettings: z.never().optional(),\n            }),\n            z.object({\n              choicesSettings: z.never().optional(),\n              freeTextSettings: z\n                .object({\n                  minCharCount: z\n                    .number()\n                    .int()\n                    .describe('Minimum number of characters.')\n                    .optional(),\n                  maxCharCount: z\n                    .number()\n                    .int()\n                    .describe('Maximum number of characters.')\n                    .max(500)\n                    .optional(),\n                  defaultAddedPrice: z\n                    .string()\n                    .describe(\n                      \"Default amount to be added to the product's price.\"\n                    )\n                    .optional()\n                    .nullable(),\n                  title: z\n                    .string()\n                    .describe('Title of the text to be input by the customer.')\n                    .min(1)\n                    .max(150)\n                    .optional(),\n                  key: z\n                    .string()\n                    .describe(\n                      'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                    )\n                    .min(1)\n                    .max(150)\n                    .optional(),\n                })\n                .describe('Free text modifier settings.'),\n            }),\n            z.object({\n              freeTextSettings: z.never().optional(),\n              choicesSettings: z\n                .object({\n                  choices: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          choiceId: z\n                            .string()\n                            .describe('Choice ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          linkedMedia: z\n                            .array(\n                              z.intersection(\n                                z.object({\n                                  altText: z\n                                    .string()\n                                    .describe('Image alt text.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                  displayName: z\n                                    .string()\n                                    .describe(\n                                      \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                    )\n                                    .max(80)\n                                    .optional()\n                                    .nullable(),\n                                  mediaType: z\n                                    .enum(['IMAGE', 'VIDEO'])\n                                    .describe('Media type.')\n                                    .optional(),\n                                  thumbnail: z\n                                    .object({\n                                      url: z\n                                        .string()\n                                        .describe('Thumbnail url.')\n                                        .url()\n                                        .optional(),\n                                      height: z\n                                        .number()\n                                        .int()\n                                        .describe('Thumbnail height.')\n                                        .optional(),\n                                      width: z\n                                        .number()\n                                        .int()\n                                        .describe('Thumbnail width.')\n                                        .optional(),\n                                      altText: z\n                                        .string()\n                                        .describe('Thumbnail alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .optional(),\n                                  uploadId: z\n                                    .string()\n                                    .describe(\n                                      'ID used to upload media to Wix Media Manager.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                }),\n                                z.intersection(\n                                  z.xor([\n                                    z.object({\n                                      _id: z.never().optional(),\n                                      url: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      url: z.never().optional(),\n                                      _id: z\n                                        .string()\n                                        .describe(\n                                          'Set media by ID of an existing file in Wix Media Manager.'\n                                        )\n                                        .min(1)\n                                        .max(200),\n                                    }),\n                                    z.object({\n                                      _id: z.never().optional(),\n                                      url: z\n                                        .string()\n                                        .describe(\n                                          'Set media using an external media URL.'\n                                        )\n                                        .url(),\n                                    }),\n                                  ]),\n                                  z.xor([\n                                    z.object({\n                                      image: z.never().optional(),\n                                      video: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      video: z.never().optional(),\n                                      image: z\n                                        .string()\n                                        .describe(\n                                          \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                        ),\n                                    }),\n                                    z.object({\n                                      image: z.never().optional(),\n                                      video: z\n                                        .string()\n                                        .describe(\n                                          \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                        ),\n                                    }),\n                                  ])\n                                )\n                              )\n                            )\n                            .max(15)\n                            .optional(),\n                          choiceType: z\n                            .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                            .describe('Choice type.')\n                            .optional(),\n                          key: z\n                            .string()\n                            .describe(\n                              'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                            )\n                            .min(1)\n                            .max(50)\n                            .optional(),\n                          name: z\n                            .string()\n                            .describe('Choice name.')\n                            .min(1)\n                            .max(50)\n                            .optional()\n                            .nullable(),\n                          addedPrice: z\n                            .string()\n                            .describe('Added price.')\n                            .optional()\n                            .nullable(),\n                          displayImage: z\n                            .string()\n                            .describe(\n                              'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                            )\n                            .optional(),\n                          media: z\n                            .object({\n                              items: z\n                                .array(\n                                  z.intersection(\n                                    z.object({}),\n                                    z.xor([\n                                      z.object({\n                                        mediaId: z.never().optional(),\n                                        url: z.never().optional(),\n                                      }),\n                                      z.object({\n                                        url: z.never().optional(),\n                                        mediaId: z\n                                          .string()\n                                          .describe(\n                                            'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                          )\n                                          .min(1)\n                                          .max(200),\n                                      }),\n                                      z.object({\n                                        mediaId: z.never().optional(),\n                                        url: z\n                                          .string()\n                                          .describe(\n                                            'External media URL. Can be used only on write.'\n                                          )\n                                          .url(),\n                                      }),\n                                    ])\n                                  )\n                                )\n                                .max(15)\n                                .optional(),\n                            })\n                            .describe(\n                              'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                            )\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({ colorCode: z.never().optional() }),\n                          z.object({\n                            colorCode: z\n                              .string()\n                              .describe(\n                                'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                              )\n                              .min(3)\n                              .max(20),\n                          }),\n                        ])\n                      )\n                    )\n                    .min(1)\n                    .max(100)\n                    .optional(),\n                })\n                .describe('Choice settings.'),\n            }),\n          ])\n        )\n      )\n      .max(10)\n      .optional(),\n    brand: z\n      .object({\n        _id: z\n          .string()\n          .describe('Brand ID.')\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        name: z.string().describe('Brand name.').max(50).optional().nullable(),\n      })\n      .describe(\n        \"Product [brand](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/brands-v3/introduction).\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n      )\n      .optional(),\n    infoSections: z\n      .array(\n        z.object({\n          _id: z\n            .string()\n            .describe('Info section ID.')\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          uniqueName: z\n            .string()\n            .describe(\n              'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n            )\n            .max(100)\n            .optional()\n            .nullable(),\n          title: z\n            .string()\n            .describe(\n              'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n            )\n            .min(1)\n            .max(50)\n            .optional()\n            .nullable(),\n          description: z\n            .any()\n            .describe(\n              'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n            )\n            .optional(),\n          plainDescription: z\n            .string()\n            .describe(\n              'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n            )\n            .max(16000)\n            .optional()\n            .nullable(),\n        })\n      )\n      .max(10)\n      .optional(),\n    ribbon: z\n      .object({\n        _id: z\n          .string()\n          .describe('Ribbon ID.')\n          .min(1)\n          .max(36)\n          .optional()\n          .nullable(),\n        name: z.string().describe('Ribbon name.').max(30).optional().nullable(),\n      })\n      .describe(\n        \"Primary [ribbon](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/ribbons-v3/introduction) displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n      )\n      .optional(),\n    directCategoriesInfo: z\n      .object({\n        categories: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('Category ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              index: z\n                .number()\n                .int()\n                .describe(\n                  'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                )\n                .min(0)\n                .max(200)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(2000)\n          .optional(),\n      })\n      .describe(\n        'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product.\\n\\nUpdated automatically when a product is added/removed from a category, when an item is moved within a category, or when a category is deleted.\\n> **Note:** Returned only when you pass `\"DIRECT_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n      )\n      .optional(),\n    allCategoriesInfo: z\n      .object({\n        categories: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('Category ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              index: z\n                .number()\n                .int()\n                .describe(\n                  'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                )\n                .min(0)\n                .max(200)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(2000)\n          .optional(),\n      })\n      .describe(\n        'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product, as well as their parent categories.\\n> **Note:** Returned only when you pass `\"ALL_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n      )\n      .optional(),\n    mainCategoryId: z\n      .string()\n      .describe(\n        'The ID of the product\\'s primary direct [category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction), which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n      )\n      .regex(\n        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n        'Must be a valid GUID'\n      )\n      .optional()\n      .nullable(),\n    costRange: z\n      .object({\n        minValue: z\n          .object({\n            amount: z\n              .string()\n              .describe(\n                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n              )\n              .optional(),\n            formattedAmount: z\n              .string()\n              .describe(\n                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n              )\n              .max(20)\n              .optional()\n              .nullable(),\n          })\n          .describe('Minimum value.')\n          .optional(),\n        maxValue: z\n          .object({\n            amount: z\n              .string()\n              .describe(\n                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n              )\n              .optional(),\n            formattedAmount: z\n              .string()\n              .describe(\n                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n              )\n              .max(20)\n              .optional()\n              .nullable(),\n          })\n          .describe('Maximum value.')\n          .optional(),\n      })\n      .describe(\n        'Product cost range - minimum and maximum costs of all product variants.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n      )\n      .optional(),\n    inventory: z\n      .object({\n        availabilityStatus: z\n          .enum(['IN_STOCK', 'OUT_OF_STOCK', 'PARTIALLY_OUT_OF_STOCK'])\n          .describe('Current availability status.')\n          .optional(),\n        preorderStatus: z\n          .enum(['ENABLED', 'DISABLED', 'PARTIALLY_ENABLED'])\n          .describe('Current preorder status.')\n          .optional(),\n        preorderAvailability: z\n          .enum(['ALL_VARIANTS', 'NO_VARIANTS', 'SOME_VARIANTS'])\n          .describe('Preorder availability status.')\n          .optional(),\n      })\n      .describe(\n        'Product inventory info.\\n\\n> **Note:** This field reflects the aggregated inventory status from the default location only. Use the [Inventory Items API](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/inventory-items-v3/introduction) to manage inventory for specific locations. Learn more about [inventory management](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-inventory-management).'\n      )\n      .optional(),\n    productType: z\n      .enum(['PHYSICAL', 'DIGITAL'])\n      .describe(\n        'Product type: `PHYSICAL` for tangible goods that require shipping, or `DIGITAL` for downloadable content.\\n\\nWhen passing `productType: PHYSICAL`, you must also pass `physicalProperties`. When passing `productType: DIGITAL`, you can optionally pass `digitalProperties` in each variant.'\n      )\n      .optional(),\n    handle: z\n      .string()\n      .describe(\n        \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n      )\n      .min(1)\n      .max(100)\n      .optional()\n      .nullable(),\n    currency: z\n      .string()\n      .describe(\n        'Currency used for the pricing of this product, in [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes) format.\\n\\nDefaults to the currency defined in the site settings, unless specified in the request\\'s `x-wix-currency` header.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n      )\n      .optional()\n      .nullable(),\n    breadcrumbsInfo: z\n      .object({\n        breadcrumbs: z\n          .array(\n            z.object({\n              categoryId: z\n                .string()\n                .describe('Category ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              categoryName: z\n                .string()\n                .describe('Category name.')\n                .min(1)\n                .max(80)\n                .optional(),\n              categorySlug: z\n                .string()\n                .describe('Category slug.')\n                .min(1)\n                .max(100)\n                .optional(),\n            })\n          )\n          .max(5)\n          .optional(),\n      })\n      .describe(\n        'Breadcrumbs of the `mainCategoryId`. Used to navigate to parent [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction). Useful for building navigation UI and for SEO purposes.\\n> **Note:** Returned only when you pass `\"BREADCRUMBS_INFO\"` to the `fields` array in Products API requests.'\n      )\n      .optional(),\n    actualPriceRange: z\n      .object({\n        minValue: z\n          .object({\n            amount: z\n              .string()\n              .describe(\n                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n              )\n              .optional(),\n            formattedAmount: z\n              .string()\n              .describe(\n                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n              )\n              .max(20)\n              .optional()\n              .nullable(),\n          })\n          .describe('Minimum value.')\n          .optional(),\n        maxValue: z\n          .object({\n            amount: z\n              .string()\n              .describe(\n                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n              )\n              .optional(),\n            formattedAmount: z\n              .string()\n              .describe(\n                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n              )\n              .max(20)\n              .optional()\n              .nullable(),\n          })\n          .describe('Maximum value.')\n          .optional(),\n      })\n      .describe(\n        'Minimum and maximum current selling prices across all product variants.'\n      )\n      .optional(),\n    compareAtPriceRange: z\n      .object({\n        minValue: z\n          .object({\n            amount: z\n              .string()\n              .describe(\n                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n              )\n              .optional(),\n            formattedAmount: z\n              .string()\n              .describe(\n                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n              )\n              .max(20)\n              .optional()\n              .nullable(),\n          })\n          .describe('Minimum value.')\n          .optional(),\n        maxValue: z\n          .object({\n            amount: z\n              .string()\n              .describe(\n                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n              )\n              .optional(),\n            formattedAmount: z\n              .string()\n              .describe(\n                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n              )\n              .max(20)\n              .optional()\n              .nullable(),\n          })\n          .describe('Maximum value.')\n          .optional(),\n      })\n      .describe(\n        'Minimum and maximum compare-at prices (original prices before discounts) across all product variants. Used to show savings to customers.'\n      )\n      .optional(),\n    variantsInfo: z\n      .object({\n        variants: z\n          .array(\n            z.intersection(\n              z.object({\n                _id: z\n                  .string()\n                  .describe('Variant ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                visible: z\n                  .boolean()\n                  .describe(\n                    \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                  )\n                  .optional()\n                  .nullable(),\n                sku: z\n                  .string()\n                  .describe('Variant SKU (stock keeping unit).')\n                  .min(1)\n                  .max(40)\n                  .optional()\n                  .nullable(),\n                barcode: z\n                  .string()\n                  .describe('Variant barcode.')\n                  .min(1)\n                  .max(40)\n                  .optional()\n                  .nullable(),\n                choices: z\n                  .array(\n                    z.object({\n                      optionChoiceIds: z\n                        .object({\n                          optionId: z\n                            .string()\n                            .describe('Option ID.')\n                            .min(1)\n                            .max(36)\n                            .optional(),\n                          choiceId: z\n                            .string()\n                            .describe('Choice ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                        )\n                        .optional(),\n                      optionChoiceNames: z\n                        .object({\n                          optionName: z\n                            .string()\n                            .describe('Option name.')\n                            .min(1)\n                            .optional(),\n                          choiceName: z\n                            .string()\n                            .describe('Choice name.')\n                            .min(1)\n                            .optional(),\n                          renderType: z\n                            .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                            .describe(\n                              'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                        )\n                        .optional(),\n                    })\n                  )\n                  .min(0)\n                  .max(6)\n                  .optional(),\n                price: z\n                  .object({\n                    actualPrice: z\n                      .object({\n                        amount: z\n                          .string()\n                          .describe(\n                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                          )\n                          .optional(),\n                        formattedAmount: z\n                          .string()\n                          .describe(\n                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(20)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        \"Variant's current selling price. Must be greater than or equal to 0.\"\n                      )\n                      .optional(),\n                    compareAtPrice: z\n                      .object({\n                        amount: z\n                          .string()\n                          .describe(\n                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                          )\n                          .optional(),\n                        formattedAmount: z\n                          .string()\n                          .describe(\n                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(20)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                      )\n                      .optional(),\n                    priceAfterDiscount: z\n                      .object({\n                        amount: z\n                          .string()\n                          .describe(\n                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                          )\n                          .optional(),\n                        formattedAmount: z\n                          .string()\n                          .describe(\n                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(20)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                      )\n                      .optional(),\n                  })\n                  .describe('Variant price.')\n                  .optional(),\n                revenueDetails: z\n                  .object({\n                    cost: z\n                      .object({\n                        amount: z\n                          .string()\n                          .describe(\n                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                          )\n                          .optional(),\n                        formattedAmount: z\n                          .string()\n                          .describe(\n                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(20)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe('Item cost.')\n                      .optional(),\n                    profit: z\n                      .object({\n                        amount: z\n                          .string()\n                          .describe(\n                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                          )\n                          .optional(),\n                        formattedAmount: z\n                          .string()\n                          .describe(\n                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(20)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                      )\n                      .optional(),\n                    profitMargin: z\n                      .number()\n                      .describe(\n                        'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                      )\n                      .min(0)\n                      .max(1)\n                      .optional(),\n                  })\n                  .describe(\n                    'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                  )\n                  .optional(),\n                media: z\n                  .intersection(\n                    z.object({\n                      altText: z\n                        .string()\n                        .describe('Image alt text.')\n                        .min(1)\n                        .max(1000)\n                        .optional()\n                        .nullable(),\n                      displayName: z\n                        .string()\n                        .describe(\n                          \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                        )\n                        .max(80)\n                        .optional()\n                        .nullable(),\n                      mediaType: z\n                        .enum(['IMAGE', 'VIDEO'])\n                        .describe('Media type.')\n                        .optional(),\n                      thumbnail: z\n                        .object({\n                          url: z\n                            .string()\n                            .describe('Thumbnail url.')\n                            .url()\n                            .optional(),\n                          height: z\n                            .number()\n                            .int()\n                            .describe('Thumbnail height.')\n                            .optional(),\n                          width: z\n                            .number()\n                            .int()\n                            .describe('Thumbnail width.')\n                            .optional(),\n                          altText: z\n                            .string()\n                            .describe('Thumbnail alt text.')\n                            .min(1)\n                            .max(1000)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                        )\n                        .optional(),\n                      uploadId: z\n                        .string()\n                        .describe(\n                          'ID used to upload media to Wix Media Manager.'\n                        )\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional(),\n                    }),\n                    z.intersection(\n                      z.xor([\n                        z.object({\n                          _id: z.never().optional(),\n                          url: z.never().optional(),\n                        }),\n                        z.object({\n                          url: z.never().optional(),\n                          _id: z\n                            .string()\n                            .describe(\n                              'Set media by ID of an existing file in Wix Media Manager.'\n                            )\n                            .min(1)\n                            .max(200),\n                        }),\n                        z.object({\n                          _id: z.never().optional(),\n                          url: z\n                            .string()\n                            .describe('Set media using an external media URL.')\n                            .url(),\n                        }),\n                      ]),\n                      z.xor([\n                        z.object({\n                          image: z.never().optional(),\n                          video: z.never().optional(),\n                        }),\n                        z.object({\n                          video: z.never().optional(),\n                          image: z\n                            .string()\n                            .describe(\n                              \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                            ),\n                        }),\n                        z.object({\n                          image: z.never().optional(),\n                          video: z\n                            .string()\n                            .describe(\n                              \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                            ),\n                        }),\n                      ])\n                    )\n                  )\n                  .describe('Variant media.')\n                  .optional(),\n                subscriptionPricesInfo: z\n                  .object({\n                    subscriptionPrices: z\n                      .array(\n                        z.object({\n                          subscriptionId: z\n                            .string()\n                            .describe('Subscription ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                          price: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                            )\n                            .optional(),\n                          pricePerUnit: z\n                            .object({\n                              value: z\n                                .string()\n                                .describe(\n                                  'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                )\n                                .optional(),\n                              description: z\n                                .string()\n                                .describe(\n                                  'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                            .describe('Price per unit info.')\n                            .optional(),\n                          priceAfterDiscount: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .max(6)\n                      .optional(),\n                  })\n                  .describe(\n                    'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                  )\n                  .optional(),\n                inventoryStatus: z\n                  .object({\n                    inStock: z\n                      .boolean()\n                      .describe('Whether the variant is in stock.')\n                      .optional(),\n                    preorderEnabled: z\n                      .boolean()\n                      .describe('Whether preorder is enabled for this variant.')\n                      .optional(),\n                  })\n                  .describe('Variant inventory status.')\n                  .optional(),\n              }),\n              z.xor([\n                z.object({\n                  physicalProperties: z.never().optional(),\n                  digitalProperties: z.never().optional(),\n                }),\n                z.object({\n                  digitalProperties: z.never().optional(),\n                  physicalProperties: z\n                    .object({\n                      weight: z\n                        .number()\n                        .describe(\n                          'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                        )\n                        .min(0)\n                        .max(999999999.99)\n                        .optional()\n                        .nullable(),\n                      pricePerUnit: z\n                        .object({\n                          settings: z\n                            .object({\n                              quantity: z\n                                .number()\n                                .describe(\n                                  'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                )\n                                .min(0.01)\n                                .max(999999999.99)\n                                .optional(),\n                              measurementUnit: z\n                                .enum([\n                                  'UNSPECIFIED',\n                                  'ML',\n                                  'CL',\n                                  'L',\n                                  'CBM',\n                                  'MG',\n                                  'G',\n                                  'KG',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'SQM',\n                                  'OZ',\n                                  'LB',\n                                  'FLOZ',\n                                  'PT',\n                                  'QT',\n                                  'GAL',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                  'SQFT',\n                                ])\n                                .describe(\n                                  'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                            )\n                            .optional(),\n                          value: z\n                            .string()\n                            .describe(\n                              \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                            )\n                            .optional(),\n                          description: z\n                            .string()\n                            .describe(\n                              'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(100)\n                            .optional()\n                            .nullable(),\n                          priceAfterDiscount: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                        )\n                        .optional(),\n                      productDimensions: z\n                        .object({\n                          length: z\n                            .string()\n                            .describe(\n                              'Length. Measurement unit is handled at the system level (metric/imperial).'\n                            )\n                            .optional()\n                            .nullable(),\n                          width: z\n                            .string()\n                            .describe(\n                              'Width. Measurement unit is handled at the system level (metric/imperial).'\n                            )\n                            .optional()\n                            .nullable(),\n                          height: z\n                            .string()\n                            .describe(\n                              'Height. Measurement unit is handled at the system level (metric/imperial).'\n                            )\n                            .optional()\n                            .nullable(),\n                          unit: z\n                            .enum([\n                              'UNKNOWN_DIMENSIONS_UNIT',\n                              'MM',\n                              'CM',\n                              'M',\n                              'IN',\n                              'FT',\n                              'YD',\n                            ])\n                            .describe(\n                              'Unit of measurement for dimensions (length, width, height).'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Product dimensions (length, width, height of the physical product).'\n                        )\n                        .optional(),\n                      packageDimensions: z\n                        .object({\n                          length: z\n                            .string()\n                            .describe(\n                              'Length. Measurement unit is handled at the system level (metric/imperial).'\n                            )\n                            .optional()\n                            .nullable(),\n                          width: z\n                            .string()\n                            .describe(\n                              'Width. Measurement unit is handled at the system level (metric/imperial).'\n                            )\n                            .optional()\n                            .nullable(),\n                          height: z\n                            .string()\n                            .describe(\n                              'Height. Measurement unit is handled at the system level (metric/imperial).'\n                            )\n                            .optional()\n                            .nullable(),\n                          unit: z\n                            .enum([\n                              'UNKNOWN_DIMENSIONS_UNIT',\n                              'MM',\n                              'CM',\n                              'M',\n                              'IN',\n                              'FT',\n                              'YD',\n                            ])\n                            .describe(\n                              'Unit of measurement for dimensions (length, width, height).'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Package dimensions (length, width, height of the shipping package).'\n                        )\n                        .optional(),\n                    })\n                    .describe(\n                      'Physical properties. Must be passed when `productType: PHYSICAL`'\n                    ),\n                }),\n                z.object({\n                  physicalProperties: z.never().optional(),\n                  digitalProperties: z\n                    .object({\n                      digitalFile: z\n                        .object({\n                          _id: z\n                            .string()\n                            .describe('Media ID in media manager.')\n                            .min(1)\n                            .max(100)\n                            .optional(),\n                          fileName: z\n                            .string()\n                            .describe('Original file name.')\n                            .min(1)\n                            .max(1000)\n                            .optional(),\n                          fileSize: z\n                            .string()\n                            .describe('Original file size.')\n                            .min(1)\n                            .max(1000)\n                            .optional()\n                            .nullable(),\n                          fileType: z\n                            .enum([\n                              'UNSPECIFIED',\n                              'SECURE_PICTURE',\n                              'SECURE_VIDEO',\n                              'SECURE_DOCUMENT',\n                              'SECURE_MUSIC',\n                              'SECURE_ARCHIVE',\n                              'SECURE_RAW',\n                            ])\n                            .describe('File type.')\n                            .optional(),\n                        })\n                        .describe(\n                          'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                        )\n                        .optional(),\n                    })\n                    .describe(\n                      'Digital properties. Must be passed when `productType: DIGITAL`'\n                    ),\n                }),\n              ])\n            )\n          )\n          .min(1)\n          .max(1000)\n          .optional(),\n      })\n      .describe(\n        'Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nYou must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).'\n      )\n      .optional(),\n    purchaseEligibility: z\n      .object({ userCriteria: z.enum(['MEMBERS_ONLY']).optional() })\n      .describe('Purchase eligibility settings for the product.')\n      .optional(),\n    additionalRibbons: z\n      .array(\n        z.object({\n          _id: z\n            .string()\n            .describe('Ribbon ID.')\n            .min(1)\n            .max(36)\n            .optional()\n            .nullable(),\n          name: z\n            .string()\n            .describe('Ribbon name.')\n            .max(30)\n            .optional()\n            .nullable(),\n        })\n      )\n      .max(4)\n      .optional(),\n    extendedFields: z\n      .object({\n        namespaces: z\n          .record(z.string(), z.record(z.string(), z.any()))\n          .describe(\n            'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n          )\n          .optional(),\n      })\n      .describe(\n        'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n      )\n      .optional(),\n    tags: z\n      .object({\n        privateTags: z\n          .object({ tagIds: z.array(z.string()).max(100).optional() })\n          .describe(\n            'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n          )\n          .optional(),\n        publicTags: z\n          .object({ tagIds: z.array(z.string()).max(100).optional() })\n          .describe(\n            'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n          )\n          .optional(),\n      })\n      .describe('Tags')\n      .optional(),\n    subscriptionDetails: z\n      .object({\n        subscriptions: z\n          .array(\n            z.intersection(\n              z.object({\n                _id: z\n                  .string()\n                  .describe('Subscription ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                title: z\n                  .string()\n                  .describe('Subscription title.')\n                  .min(1)\n                  .max(20)\n                  .optional(),\n                description: z\n                  .string()\n                  .describe('Subscription description.')\n                  .max(60)\n                  .optional()\n                  .nullable(),\n                visible: z\n                  .boolean()\n                  .describe(\n                    'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                  )\n                  .optional()\n                  .nullable(),\n                frequency: z\n                  .enum(['UNDEFINED', 'DAY', 'WEEK', 'MONTH', 'YEAR'])\n                  .describe(\n                    'Frequency of recurring payment.\\nFor example, if `frequency: MONTH` and `billingCycles: 6`; payment will be made monthly for 6 months.'\n                  )\n                  .optional(),\n                interval: z\n                  .number()\n                  .int()\n                  .describe(\n                    'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                discount: z\n                  .intersection(\n                    z.object({\n                      type: z\n                        .enum(['AMOUNT', 'PERCENT'])\n                        .describe('Discount type.')\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({\n                        amountOff: z.never().optional(),\n                        percentOff: z.never().optional(),\n                      }),\n                      z.object({\n                        percentOff: z.never().optional(),\n                        amountOff: z\n                          .string()\n                          .describe(\n                            'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                          ),\n                      }),\n                      z.object({\n                        amountOff: z.never().optional(),\n                        percentOff: z\n                          .number()\n                          .describe(\n                            'Percentage subtracted from the variant price when calculating subscription prices.'\n                          )\n                          .min(0.1)\n                          .max(99.9),\n                      }),\n                    ])\n                  )\n                  .describe(\n                    'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                  )\n                  .optional(),\n              }),\n              z.xor([\n                z.object({\n                  autoRenewal: z.never().optional(),\n                  billingCycles: z.never().optional(),\n                }),\n                z.object({\n                  billingCycles: z.never().optional(),\n                  autoRenewal: z\n                    .boolean()\n                    .describe(\n                      'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                    ),\n                }),\n                z.object({\n                  autoRenewal: z.never().optional(),\n                  billingCycles: z\n                    .number()\n                    .int()\n                    .describe(\n                      'Number of billing cycles before subscription ends.'\n                    )\n                    .min(2)\n                    .max(999),\n                }),\n              ])\n            )\n          )\n          .min(1)\n          .max(6)\n          .optional(),\n        allowOneTimePurchases: z\n          .boolean()\n          .describe(\n            'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n          )\n          .optional()\n          .nullable(),\n      })\n      .describe(\n        \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n      )\n      .optional(),\n    variantSummary: z\n      .object({\n        variantCount: z\n          .number()\n          .int()\n          .describe('The total number of variants for the product.')\n          .optional(),\n        minPriceVariant: z\n          .intersection(\n            z.object({\n              _id: z\n                .string()\n                .describe('Variant ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              visible: z\n                .boolean()\n                .describe(\n                  \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                )\n                .optional()\n                .nullable(),\n              sku: z\n                .string()\n                .describe('Variant SKU (stock keeping unit).')\n                .min(1)\n                .max(40)\n                .optional()\n                .nullable(),\n              barcode: z\n                .string()\n                .describe('Variant barcode.')\n                .min(1)\n                .max(40)\n                .optional()\n                .nullable(),\n              choices: z\n                .array(\n                  z.object({\n                    optionChoiceIds: z\n                      .object({\n                        optionId: z\n                          .string()\n                          .describe('Option ID.')\n                          .min(1)\n                          .max(36)\n                          .optional(),\n                        choiceId: z\n                          .string()\n                          .describe('Choice ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                      )\n                      .optional(),\n                    optionChoiceNames: z\n                      .object({\n                        optionName: z\n                          .string()\n                          .describe('Option name.')\n                          .min(1)\n                          .optional(),\n                        choiceName: z\n                          .string()\n                          .describe('Choice name.')\n                          .min(1)\n                          .optional(),\n                        renderType: z\n                          .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                          .describe(\n                            'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                  })\n                )\n                .min(0)\n                .max(6)\n                .optional(),\n              price: z\n                .object({\n                  actualPrice: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      \"Variant's current selling price. Must be greater than or equal to 0.\"\n                    )\n                    .optional(),\n                  compareAtPrice: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                    )\n                    .optional(),\n                  priceAfterDiscount: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                    )\n                    .optional(),\n                })\n                .describe('Variant price.')\n                .optional(),\n              revenueDetails: z\n                .object({\n                  cost: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Item cost.')\n                    .optional(),\n                  profit: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                    )\n                    .optional(),\n                  profitMargin: z\n                    .number()\n                    .describe(\n                      'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                    )\n                    .min(0)\n                    .max(1)\n                    .optional(),\n                })\n                .describe(\n                  'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                )\n                .optional(),\n              media: z\n                .intersection(\n                  z.object({\n                    altText: z\n                      .string()\n                      .describe('Image alt text.')\n                      .min(1)\n                      .max(1000)\n                      .optional()\n                      .nullable(),\n                    displayName: z\n                      .string()\n                      .describe(\n                        \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                      )\n                      .max(80)\n                      .optional()\n                      .nullable(),\n                    mediaType: z\n                      .enum(['IMAGE', 'VIDEO'])\n                      .describe('Media type.')\n                      .optional(),\n                    thumbnail: z\n                      .object({\n                        url: z\n                          .string()\n                          .describe('Thumbnail url.')\n                          .url()\n                          .optional(),\n                        height: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail height.')\n                          .optional(),\n                        width: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail width.')\n                          .optional(),\n                        altText: z\n                          .string()\n                          .describe('Thumbnail alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    uploadId: z\n                      .string()\n                      .describe('ID used to upload media to Wix Media Manager.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                  }),\n                  z.intersection(\n                    z.xor([\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z.never().optional(),\n                      }),\n                      z.object({\n                        url: z.never().optional(),\n                        _id: z\n                          .string()\n                          .describe(\n                            'Set media by ID of an existing file in Wix Media Manager.'\n                          )\n                          .min(1)\n                          .max(200),\n                      }),\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z\n                          .string()\n                          .describe('Set media using an external media URL.')\n                          .url(),\n                      }),\n                    ]),\n                    z.xor([\n                      z.object({\n                        image: z.never().optional(),\n                        video: z.never().optional(),\n                      }),\n                      z.object({\n                        video: z.never().optional(),\n                        image: z\n                          .string()\n                          .describe(\n                            \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                          ),\n                      }),\n                      z.object({\n                        image: z.never().optional(),\n                        video: z\n                          .string()\n                          .describe(\n                            \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                          ),\n                      }),\n                    ])\n                  )\n                )\n                .describe('Variant media.')\n                .optional(),\n              subscriptionPricesInfo: z\n                .object({\n                  subscriptionPrices: z\n                    .array(\n                      z.object({\n                        subscriptionId: z\n                          .string()\n                          .describe('Subscription ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        price: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                          )\n                          .optional(),\n                        pricePerUnit: z\n                          .object({\n                            value: z\n                              .string()\n                              .describe(\n                                'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                              )\n                              .optional(),\n                            description: z\n                              .string()\n                              .describe(\n                                'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                            priceAfterDiscount: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                              )\n                              .optional(),\n                          })\n                          .describe('Price per unit info.')\n                          .optional(),\n                        priceAfterDiscount: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                          )\n                          .optional(),\n                      })\n                    )\n                    .max(6)\n                    .optional(),\n                })\n                .describe(\n                  'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              inventoryStatus: z\n                .object({\n                  inStock: z\n                    .boolean()\n                    .describe('Whether the variant is in stock.')\n                    .optional(),\n                  preorderEnabled: z\n                    .boolean()\n                    .describe('Whether preorder is enabled for this variant.')\n                    .optional(),\n                })\n                .describe('Variant inventory status.')\n                .optional(),\n            }),\n            z.xor([\n              z.object({\n                physicalProperties: z.never().optional(),\n                digitalProperties: z.never().optional(),\n              }),\n              z.object({\n                digitalProperties: z.never().optional(),\n                physicalProperties: z\n                  .object({\n                    weight: z\n                      .number()\n                      .describe(\n                        'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                      )\n                      .min(0)\n                      .max(999999999.99)\n                      .optional()\n                      .nullable(),\n                    pricePerUnit: z\n                      .object({\n                        settings: z\n                          .object({\n                            quantity: z\n                              .number()\n                              .describe(\n                                'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                              )\n                              .min(0.01)\n                              .max(999999999.99)\n                              .optional(),\n                            measurementUnit: z\n                              .enum([\n                                'UNSPECIFIED',\n                                'ML',\n                                'CL',\n                                'L',\n                                'CBM',\n                                'MG',\n                                'G',\n                                'KG',\n                                'MM',\n                                'CM',\n                                'M',\n                                'SQM',\n                                'OZ',\n                                'LB',\n                                'FLOZ',\n                                'PT',\n                                'QT',\n                                'GAL',\n                                'IN',\n                                'FT',\n                                'YD',\n                                'SQFT',\n                              ])\n                              .describe(\n                                'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                          )\n                          .optional(),\n                        value: z\n                          .string()\n                          .describe(\n                            \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                          )\n                          .optional(),\n                        description: z\n                          .string()\n                          .describe(\n                            'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                        priceAfterDiscount: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                      )\n                      .optional(),\n                    productDimensions: z\n                      .object({\n                        length: z\n                          .string()\n                          .describe(\n                            'Length. Measurement unit is handled at the system level (metric/imperial).'\n                          )\n                          .optional()\n                          .nullable(),\n                        width: z\n                          .string()\n                          .describe(\n                            'Width. Measurement unit is handled at the system level (metric/imperial).'\n                          )\n                          .optional()\n                          .nullable(),\n                        height: z\n                          .string()\n                          .describe(\n                            'Height. Measurement unit is handled at the system level (metric/imperial).'\n                          )\n                          .optional()\n                          .nullable(),\n                        unit: z\n                          .enum([\n                            'UNKNOWN_DIMENSIONS_UNIT',\n                            'MM',\n                            'CM',\n                            'M',\n                            'IN',\n                            'FT',\n                            'YD',\n                          ])\n                          .describe(\n                            'Unit of measurement for dimensions (length, width, height).'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Product dimensions (length, width, height of the physical product).'\n                      )\n                      .optional(),\n                    packageDimensions: z\n                      .object({\n                        length: z\n                          .string()\n                          .describe(\n                            'Length. Measurement unit is handled at the system level (metric/imperial).'\n                          )\n                          .optional()\n                          .nullable(),\n                        width: z\n                          .string()\n                          .describe(\n                            'Width. Measurement unit is handled at the system level (metric/imperial).'\n                          )\n                          .optional()\n                          .nullable(),\n                        height: z\n                          .string()\n                          .describe(\n                            'Height. Measurement unit is handled at the system level (metric/imperial).'\n                          )\n                          .optional()\n                          .nullable(),\n                        unit: z\n                          .enum([\n                            'UNKNOWN_DIMENSIONS_UNIT',\n                            'MM',\n                            'CM',\n                            'M',\n                            'IN',\n                            'FT',\n                            'YD',\n                          ])\n                          .describe(\n                            'Unit of measurement for dimensions (length, width, height).'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Package dimensions (length, width, height of the shipping package).'\n                      )\n                      .optional(),\n                  })\n                  .describe(\n                    'Physical properties. Must be passed when `productType: PHYSICAL`'\n                  ),\n              }),\n              z.object({\n                physicalProperties: z.never().optional(),\n                digitalProperties: z\n                  .object({\n                    digitalFile: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe('Media ID in media manager.')\n                          .min(1)\n                          .max(100)\n                          .optional(),\n                        fileName: z\n                          .string()\n                          .describe('Original file name.')\n                          .min(1)\n                          .max(1000)\n                          .optional(),\n                        fileSize: z\n                          .string()\n                          .describe('Original file size.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        fileType: z\n                          .enum([\n                            'UNSPECIFIED',\n                            'SECURE_PICTURE',\n                            'SECURE_VIDEO',\n                            'SECURE_DOCUMENT',\n                            'SECURE_MUSIC',\n                            'SECURE_ARCHIVE',\n                            'SECURE_RAW',\n                          ])\n                          .describe('File type.')\n                          .optional(),\n                      })\n                      .describe(\n                        'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                      )\n                      .optional(),\n                  })\n                  .describe(\n                    'Digital properties. Must be passed when `productType: DIGITAL`'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'The variant with the lowest `actualPrice` among visible variants for this product.\\n\\nHidden variants are excluded; ties are broken by variant order. Empty if the product has no visible variants.\\n> **Note:** Returned only when you pass `\"MIN_PRICE_VARIANT\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n      })\n      .describe('The total number of variants for the product.')\n      .optional(),\n  }),\n  z.xor([\n    z.object({ physicalProperties: z.never().optional() }),\n    z.object({\n      physicalProperties: z\n        .object({\n          pricePerUnit: z\n            .object({\n              quantity: z\n                .number()\n                .describe(\n                  'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                )\n                .min(0.01)\n                .max(999999999.99)\n                .optional(),\n              measurementUnit: z\n                .enum([\n                  'UNSPECIFIED',\n                  'ML',\n                  'CL',\n                  'L',\n                  'CBM',\n                  'MG',\n                  'G',\n                  'KG',\n                  'MM',\n                  'CM',\n                  'M',\n                  'SQM',\n                  'OZ',\n                  'LB',\n                  'FLOZ',\n                  'PT',\n                  'QT',\n                  'GAL',\n                  'IN',\n                  'FT',\n                  'YD',\n                  'SQFT',\n                ])\n                .describe(\n                  'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                )\n                .optional(),\n            })\n            .describe(\n              'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n            )\n            .optional(),\n          fulfillerId: z\n            .string()\n            .describe('Fulfiller ID.')\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          shippingWeightRange: z\n            .object({\n              minValue: z\n                .number()\n                .describe(\n                  'Minimum weight across all variants associated with this product.'\n                )\n                .min(0)\n                .max(999999999.99)\n                .optional(),\n              maxValue: z\n                .number()\n                .describe(\n                  'Maximum weight across all variants associated with this product.'\n                )\n                .min(0)\n                .max(999999999.99)\n                .optional(),\n            })\n            .describe(\n              'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n            )\n            .optional(),\n          pricePerUnitRange: z\n            .object({\n              minValue: z\n                .object({\n                  value: z\n                    .string()\n                    .describe(\n                      \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                    )\n                    .optional(),\n                  description: z\n                    .string()\n                    .describe(\n                      'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                    )\n                    .max(100)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Minimum price per unit across all variants.')\n                .optional(),\n              maxValue: z\n                .object({\n                  value: z\n                    .string()\n                    .describe(\n                      \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                    )\n                    .optional(),\n                  description: z\n                    .string()\n                    .describe(\n                      'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                    )\n                    .max(100)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Maximum price per unit across all variants.')\n                .optional(),\n            })\n            .describe(\n              'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n            )\n            .optional(),\n          weightMeasurementUnitInfo: z\n            .object({\n              weightMeasurementUnit: z\n                .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                .describe('Weight measurement unit.')\n                .optional(),\n            })\n            .describe(\n              'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n            )\n            .optional(),\n          deliveryProfileId: z\n            .string()\n            .describe('Delivery profile ID.')\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n        })\n        .describe(\n          'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n        ),\n    }),\n  ])\n);\nexport const CreateProductWithInventoryRequest = z.object({\n  product: z\n    .intersection(\n      z.object({\n        _id: z\n          .string()\n          .describe('Product ID.')\n          .min(1)\n          .max(36)\n          .optional()\n          .nullable(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product with inventory.'\n          )\n          .optional()\n          .nullable(),\n        name: z.string().describe('Product name. Translatable.').min(1).max(80),\n        slug: z\n          .string()\n          .describe(\n            'Product slug.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n          )\n          .min(1)\n          .max(300)\n          .optional()\n          .nullable(),\n        plainDescription: z\n          .string()\n          .describe(\n            'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n          )\n          .max(16000)\n          .optional()\n          .nullable(),\n        visible: z\n          .boolean()\n          .describe(\n            'Whether the product is visible to site visitors.\\n\\nDefault: `true`'\n          )\n          .optional()\n          .nullable(),\n        visibleInPos: z\n          .boolean()\n          .describe(\n            'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n          )\n          .optional()\n          .nullable(),\n        media: z\n          .object({\n            main: z\n              .intersection(\n                z.object({\n                  altText: z\n                    .string()\n                    .describe('Image alt text.')\n                    .min(1)\n                    .max(1000)\n                    .optional()\n                    .nullable(),\n                  displayName: z\n                    .string()\n                    .describe(\n                      \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                    )\n                    .max(80)\n                    .optional()\n                    .nullable(),\n                  mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                  thumbnail: z\n                    .object({\n                      url: z\n                        .string()\n                        .describe('Thumbnail url.')\n                        .url()\n                        .optional(),\n                      height: z\n                        .number()\n                        .int()\n                        .describe('Thumbnail height.')\n                        .optional(),\n                      width: z\n                        .number()\n                        .int()\n                        .describe('Thumbnail width.')\n                        .optional(),\n                      altText: z\n                        .string()\n                        .describe('Thumbnail alt text.')\n                        .min(1)\n                        .max(1000)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                  uploadId: z\n                    .string()\n                    .describe('ID used to upload media to Wix Media Manager.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                }),\n                z.intersection(\n                  z.xor([\n                    z.object({\n                      _id: z.never().optional(),\n                      url: z.never().optional(),\n                    }),\n                    z.object({\n                      url: z.never().optional(),\n                      _id: z\n                        .string()\n                        .describe(\n                          'Set media by ID of an existing file in Wix Media Manager.'\n                        )\n                        .min(1)\n                        .max(200),\n                    }),\n                    z.object({\n                      _id: z.never().optional(),\n                      url: z\n                        .string()\n                        .describe('Set media using an external media URL.')\n                        .url(),\n                    }),\n                  ]),\n                  z.xor([\n                    z.object({\n                      image: z.never().optional(),\n                      video: z.never().optional(),\n                    }),\n                    z.object({\n                      video: z.never().optional(),\n                      image: z\n                        .string()\n                        .describe(\n                          \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                        ),\n                    }),\n                    z.object({\n                      image: z.never().optional(),\n                      video: z\n                        .string()\n                        .describe(\n                          \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                        ),\n                    }),\n                  ])\n                )\n              )\n              .describe(\n                'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n              )\n              .optional(),\n            itemsInfo: z\n              .object({\n                items: z\n                  .array(\n                    z.intersection(\n                      z.object({\n                        altText: z\n                          .string()\n                          .describe('Image alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        displayName: z\n                          .string()\n                          .describe(\n                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                          )\n                          .max(80)\n                          .optional()\n                          .nullable(),\n                        mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                        thumbnail: z\n                          .object({\n                            url: z\n                              .string()\n                              .describe('Thumbnail url.')\n                              .url()\n                              .optional(),\n                            height: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail height.')\n                              .optional(),\n                            width: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail width.')\n                              .optional(),\n                            altText: z\n                              .string()\n                              .describe('Thumbnail alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        uploadId: z\n                          .string()\n                          .describe(\n                            'ID used to upload media to Wix Media Manager.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                      }),\n                      z.intersection(\n                        z.xor([\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z.never().optional(),\n                          }),\n                          z.object({\n                            url: z.never().optional(),\n                            _id: z\n                              .string()\n                              .describe(\n                                'Set media by ID of an existing file in Wix Media Manager.'\n                              )\n                              .min(1)\n                              .max(200),\n                          }),\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z\n                              .string()\n                              .describe(\n                                'Set media using an external media URL.'\n                              )\n                              .url(),\n                          }),\n                        ]),\n                        z.xor([\n                          z.object({\n                            image: z.never().optional(),\n                            video: z.never().optional(),\n                          }),\n                          z.object({\n                            video: z.never().optional(),\n                            image: z\n                              .string()\n                              .describe(\n                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                              ),\n                          }),\n                          z.object({\n                            image: z.never().optional(),\n                            video: z\n                              .string()\n                              .describe(\n                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                  )\n                  .max(50)\n                  .optional(),\n              })\n              .describe(\n                'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n              )\n              .optional(),\n          })\n          .describe('Product media items.')\n          .optional(),\n        seoData: z\n          .object({\n            tags: z\n              .array(\n                z.object({\n                  type: z\n                    .string()\n                    .describe(\n                      'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                    )\n                    .optional(),\n                  props: z\n                    .record(z.string(), z.any())\n                    .describe(\n                      'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  meta: z\n                    .record(z.string(), z.any())\n                    .describe(\n                      'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  children: z\n                    .string()\n                    .describe(\n                      'SEO tag inner content. For example, `<title> inner content </title>`.'\n                    )\n                    .optional(),\n                  custom: z\n                    .boolean()\n                    .describe(\n                      'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                    )\n                    .optional(),\n                  disabled: z\n                    .boolean()\n                    .describe(\n                      \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                    )\n                    .optional(),\n                })\n              )\n              .optional(),\n            settings: z\n              .object({\n                preventAutoRedirect: z\n                  .boolean()\n                  .describe(\n                    'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n                  )\n                  .optional(),\n                keywords: z\n                  .array(\n                    z.object({\n                      term: z.string().describe('Keyword value.').optional(),\n                      isMain: z\n                        .boolean()\n                        .describe(\n                          'Whether the keyword is the main focus keyword.'\n                        )\n                        .optional(),\n                      origin: z\n                        .string()\n                        .describe(\n                          'The source that added the keyword terms to the SEO settings.'\n                        )\n                        .max(1000)\n                        .optional()\n                        .nullable(),\n                    })\n                  )\n                  .max(5)\n                  .optional(),\n              })\n              .describe('SEO general settings.')\n              .optional(),\n          })\n          .describe('Product SEO data.')\n          .optional(),\n        taxGroupId: z\n          .string()\n          .describe(\n            '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        options: z\n          .array(\n            z.intersection(\n              z.object({\n                _id: z\n                  .string()\n                  .describe(\n                    'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n                  )\n                  .min(1)\n                  .max(36)\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Option name.')\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                optionRenderType: z\n                  .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                  .optional(),\n                key: z\n                  .string()\n                  .describe(\n                    'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional(),\n              }),\n              z.xor([\n                z.object({\n                  choicesSettings: z\n                    .object({\n                      choices: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              linkedMedia: z\n                                .array(\n                                  z.intersection(\n                                    z.object({\n                                      altText: z\n                                        .string()\n                                        .describe('Image alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                      displayName: z\n                                        .string()\n                                        .describe(\n                                          \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                        )\n                                        .max(80)\n                                        .optional()\n                                        .nullable(),\n                                      mediaType: z\n                                        .enum(['IMAGE', 'VIDEO'])\n                                        .optional(),\n                                      thumbnail: z\n                                        .object({\n                                          url: z\n                                            .string()\n                                            .describe('Thumbnail url.')\n                                            .url()\n                                            .optional(),\n                                          height: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail height.')\n                                            .optional(),\n                                          width: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail width.')\n                                            .optional(),\n                                          altText: z\n                                            .string()\n                                            .describe('Thumbnail alt text.')\n                                            .min(1)\n                                            .max(1000)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .optional(),\n                                      uploadId: z\n                                        .string()\n                                        .describe(\n                                          'ID used to upload media to Wix Media Manager.'\n                                        )\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    }),\n                                    z.intersection(\n                                      z.xor([\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          url: z.never().optional(),\n                                          _id: z\n                                            .string()\n                                            .describe(\n                                              'Set media by ID of an existing file in Wix Media Manager.'\n                                            )\n                                            .min(1)\n                                            .max(200),\n                                        }),\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z\n                                            .string()\n                                            .describe(\n                                              'Set media using an external media URL.'\n                                            )\n                                            .url(),\n                                        }),\n                                      ]),\n                                      z.xor([\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          video: z.never().optional(),\n                                          image: z\n                                            .string()\n                                            .describe(\n                                              \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                            ),\n                                        }),\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z\n                                            .string()\n                                            .describe(\n                                              \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                            ),\n                                        }),\n                                      ])\n                                    )\n                                  )\n                                )\n                                .max(15)\n                                .optional(),\n                              choiceType: z\n                                .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                .optional(),\n                              key: z\n                                .string()\n                                .describe(\n                                  'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe(\n                                  'Choice name. For text choices, this field also contains the choice value.'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional()\n                                .nullable(),\n                              inStock: z\n                                .boolean()\n                                .describe(\n                                  'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                                )\n                                .optional(),\n                              visible: z\n                                .boolean()\n                                .describe(\n                                  'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                                )\n                                .optional(),\n                              displayImage: z\n                                .string()\n                                .describe(\n                                  'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                )\n                                .optional(),\n                              media: z\n                                .object({\n                                  items: z\n                                    .array(\n                                      z.intersection(\n                                        z.object({}),\n                                        z.xor([\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            mediaId: z\n                                              .string()\n                                              .describe(\n                                                'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'External media URL. Can be used only on write.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                    .max(15)\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                )\n                                .optional(),\n                            }),\n                            z.xor([\n                              z.object({ colorCode: z.never().optional() }),\n                              z.object({\n                                colorCode: z\n                                  .string()\n                                  .describe(\n                                    'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                                  )\n                                  .min(3)\n                                  .max(20),\n                              }),\n                            ])\n                          )\n                        )\n                        .min(1)\n                        .max(100)\n                        .optional(),\n                    })\n                    .describe('Choices settings.'),\n                }),\n              ])\n            )\n          )\n          .max(6)\n          .optional(),\n        modifiers: z\n          .array(\n            z.intersection(\n              z.object({\n                _id: z\n                  .string()\n                  .describe(\n                    'ID of a customization with `customizationType: MODIFIER`.'\n                  )\n                  .min(1)\n                  .max(36)\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Modifier title.')\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                modifierRenderType: z\n                  .enum(['FREE_TEXT', 'TEXT_CHOICES', 'SWATCH_CHOICES'])\n                  .optional(),\n                mandatory: z\n                  .boolean()\n                  .describe(\n                    'Whether customer input is required for this modifier.'\n                  )\n                  .optional(),\n                key: z\n                  .string()\n                  .describe(\n                    'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional(),\n              }),\n              z.xor([\n                z.object({\n                  choicesSettings: z.never().optional(),\n                  freeTextSettings: z\n                    .object({\n                      minCharCount: z\n                        .number()\n                        .int()\n                        .describe('Minimum number of characters.')\n                        .optional(),\n                      maxCharCount: z\n                        .number()\n                        .int()\n                        .describe('Maximum number of characters.')\n                        .max(500)\n                        .optional(),\n                      defaultAddedPrice: z\n                        .string()\n                        .describe(\n                          \"Default amount to be added to the product's price.\"\n                        )\n                        .optional()\n                        .nullable(),\n                      title: z\n                        .string()\n                        .describe(\n                          'Title of the text to be input by the customer.'\n                        )\n                        .min(1)\n                        .max(150)\n                        .optional(),\n                      key: z\n                        .string()\n                        .describe(\n                          'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                        )\n                        .min(1)\n                        .max(150)\n                        .optional(),\n                    })\n                    .describe('Free text modifier settings.'),\n                }),\n                z.object({\n                  freeTextSettings: z.never().optional(),\n                  choicesSettings: z\n                    .object({\n                      choices: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              linkedMedia: z\n                                .array(\n                                  z.intersection(\n                                    z.object({\n                                      altText: z\n                                        .string()\n                                        .describe('Image alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                      displayName: z\n                                        .string()\n                                        .describe(\n                                          \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                        )\n                                        .max(80)\n                                        .optional()\n                                        .nullable(),\n                                      mediaType: z\n                                        .enum(['IMAGE', 'VIDEO'])\n                                        .optional(),\n                                      thumbnail: z\n                                        .object({\n                                          url: z\n                                            .string()\n                                            .describe('Thumbnail url.')\n                                            .url()\n                                            .optional(),\n                                          height: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail height.')\n                                            .optional(),\n                                          width: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail width.')\n                                            .optional(),\n                                          altText: z\n                                            .string()\n                                            .describe('Thumbnail alt text.')\n                                            .min(1)\n                                            .max(1000)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .optional(),\n                                      uploadId: z\n                                        .string()\n                                        .describe(\n                                          'ID used to upload media to Wix Media Manager.'\n                                        )\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    }),\n                                    z.intersection(\n                                      z.xor([\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          url: z.never().optional(),\n                                          _id: z\n                                            .string()\n                                            .describe(\n                                              'Set media by ID of an existing file in Wix Media Manager.'\n                                            )\n                                            .min(1)\n                                            .max(200),\n                                        }),\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z\n                                            .string()\n                                            .describe(\n                                              'Set media using an external media URL.'\n                                            )\n                                            .url(),\n                                        }),\n                                      ]),\n                                      z.xor([\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          video: z.never().optional(),\n                                          image: z\n                                            .string()\n                                            .describe(\n                                              \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                            ),\n                                        }),\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z\n                                            .string()\n                                            .describe(\n                                              \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                            ),\n                                        }),\n                                      ])\n                                    )\n                                  )\n                                )\n                                .max(15)\n                                .optional(),\n                              choiceType: z\n                                .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                .optional(),\n                              key: z\n                                .string()\n                                .describe(\n                                  'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe('Choice name.')\n                                .min(1)\n                                .max(50)\n                                .optional()\n                                .nullable(),\n                              addedPrice: z\n                                .string()\n                                .describe('Added price.')\n                                .optional()\n                                .nullable(),\n                              displayImage: z\n                                .string()\n                                .describe(\n                                  'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                )\n                                .optional(),\n                              media: z\n                                .object({\n                                  items: z\n                                    .array(\n                                      z.intersection(\n                                        z.object({}),\n                                        z.xor([\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            mediaId: z\n                                              .string()\n                                              .describe(\n                                                'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'External media URL. Can be used only on write.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                    .max(15)\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                )\n                                .optional(),\n                            }),\n                            z.xor([\n                              z.object({ colorCode: z.never().optional() }),\n                              z.object({\n                                colorCode: z\n                                  .string()\n                                  .describe(\n                                    'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                                  )\n                                  .min(3)\n                                  .max(20),\n                              }),\n                            ])\n                          )\n                        )\n                        .min(1)\n                        .max(100)\n                        .optional(),\n                    })\n                    .describe('Choice settings.'),\n                }),\n              ])\n            )\n          )\n          .max(10)\n          .optional(),\n        brand: z\n          .object({\n            _id: z\n              .string()\n              .describe('Brand ID.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            name: z\n              .string()\n              .describe('Brand name.')\n              .max(50)\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            \"Product brand.\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n          )\n          .optional(),\n        infoSections: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('Info section ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              uniqueName: z\n                .string()\n                .describe(\n                  'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n              title: z\n                .string()\n                .describe(\n                  'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                )\n                .min(1)\n                .max(50)\n                .optional()\n                .nullable(),\n              description: z\n                .any()\n                .describe(\n                  'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                )\n                .optional(),\n              plainDescription: z\n                .string()\n                .describe(\n                  'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                )\n                .max(16000)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(10)\n          .optional(),\n        ribbon: z\n          .object({\n            _id: z\n              .string()\n              .describe('Ribbon ID.')\n              .min(1)\n              .max(36)\n              .optional()\n              .nullable(),\n            name: z\n              .string()\n              .describe('Ribbon name.')\n              .max(30)\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            \"Primary product ribbon displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n          )\n          .optional(),\n        additionalRibbons: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('Ribbon ID.')\n                .min(1)\n                .max(36)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Ribbon name.')\n                .max(30)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(4)\n          .optional(),\n        mainCategoryId: z\n          .string()\n          .describe(\n            'The ID of the product\\'s primary direct category, which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        productType: z.enum(['PHYSICAL', 'DIGITAL']),\n        handle: z\n          .string()\n          .describe(\n            \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n          )\n          .min(1)\n          .max(100)\n          .optional()\n          .nullable(),\n        variantsInfo: z\n          .object({\n            variants: z\n              .array(\n                z.intersection(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Variant ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    visible: z\n                      .boolean()\n                      .describe(\n                        'Whether the variant is visible to site visitors.\\n\\nDefault: `true`'\n                      )\n                      .optional()\n                      .nullable(),\n                    sku: z\n                      .string()\n                      .describe('Variant SKU (stock keeping unit).')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    barcode: z\n                      .string()\n                      .describe('Variant barcode.')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    price: z\n                      .object({\n                        actualPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            \"Variant's current selling price. Must be greater than or equal to 0.\"\n                          ),\n                        compareAtPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                          )\n                          .optional(),\n                        priceAfterDiscount: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                          )\n                          .optional(),\n                      })\n                      .describe('Variant price.'),\n                    revenueDetails: z\n                      .object({\n                        cost: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe('Item cost.')\n                          .optional(),\n                        profit: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                          )\n                          .optional(),\n                        profitMargin: z\n                          .number()\n                          .describe(\n                            'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                          )\n                          .min(0)\n                          .max(1)\n                          .optional(),\n                      })\n                      .describe(\n                        'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                      )\n                      .optional(),\n                    inventoryItem: z\n                      .intersection(\n                        z.object({\n                          _id: z\n                            .string()\n                            .describe(\n                              'Inventory item ID.\\nIf you want to update existing inventory item you must provide id,\\notherwise new inventory item with different id will be created.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          revision: z\n                            .string()\n                            .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                            .describe('Inventory item revision.')\n                            .optional()\n                            .nullable(),\n                          preorderInfo: z\n                            .object({\n                              enabled: z\n                                .boolean()\n                                .describe(\n                                  \"Whether preorder is enabled for this inventory item.\\n\\n> **Note:** Preorder can't be enabled for digital products or products with subscriptions.\\n\\nDefault: `false`\"\n                                )\n                                .optional()\n                                .nullable(),\n                              message: z\n                                .string()\n                                .describe(\n                                  'Message displayed to customers when the item is out of stock and preorder is enabled.'\n                                )\n                                .min(1)\n                                .max(250)\n                                .optional()\n                                .nullable(),\n                              limit: z\n                                .number()\n                                .int()\n                                .describe(\n                                  'Maximum number of items that can be preordered after stock reaches zero.\\n\\nSupported only for inventory items with `trackQuantity = true`.\\n\\nDefault: `100000`'\n                                )\n                                .min(0)\n                                .max(100000)\n                                .optional()\n                                .nullable(),\n                              counter: z\n                                .number()\n                                .int()\n                                .describe(\n                                  'Number of times this item has been preordered.\\n\\nSupported only for inventory items with `trackQuantity = true`.'\n                                )\n                                .min(0)\n                                .max(99999)\n                                .optional()\n                                .nullable(),\n                              quantity: z\n                                .number()\n                                .int()\n                                .describe(\n                                  'Remaining quantity available for preorder.\\n\\nSupported only for items with `trackQuantity` set to `true`.'\n                                )\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe('Item preorder info.')\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({\n                            inStock: z.never().optional(),\n                            quantity: z.never().optional(),\n                          }),\n                          z.object({\n                            quantity: z.never().optional(),\n                            inStock: z\n                              .boolean()\n                              .describe(\n                                'Tracking method - in stock.\\n\\nWhen set to `true`, the item is available for sale without a quantity limit.'\n                              ),\n                          }),\n                          z.object({\n                            inStock: z.never().optional(),\n                            quantity: z\n                              .number()\n                              .int()\n                              .describe(\n                                'Tracking method - quantity left in inventory.\\n\\nQuantity can be negative when decrementing inventory for an order that has already been paid.'\n                              )\n                              .min(-99999)\n                              .max(99999),\n                          }),\n                        ])\n                      )\n                      .describe(\n                        'Inventory item of the variant on the default location.'\n                      )\n                      .optional(),\n                    choices: z\n                      .array(\n                        z.object({\n                          optionChoiceIds: z\n                            .object({\n                              optionId: z\n                                .string()\n                                .describe('Option ID.')\n                                .min(1)\n                                .max(36),\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                ),\n                            })\n                            .describe('Option and choice IDs.')\n                            .optional(),\n                          optionChoiceNames: z\n                            .object({\n                              optionName: z\n                                .string()\n                                .describe('Option name.')\n                                .min(1)\n                                .optional(),\n                              choiceName: z\n                                .string()\n                                .describe('Choice name.')\n                                .min(1)\n                                .optional(),\n                              renderType: z\n                                .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                .optional(),\n                            })\n                            .describe('Option and choice names.')\n                            .optional(),\n                        })\n                      )\n                      .min(0)\n                      .max(6)\n                      .optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z.never().optional(),\n                    }),\n                    z.object({\n                      digitalProperties: z.never().optional(),\n                      physicalProperties: z\n                        .object({\n                          weight: z\n                            .number()\n                            .describe(\n                              'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                            )\n                            .min(0)\n                            .max(999999999.99)\n                            .optional()\n                            .nullable(),\n                          pricePerUnit: z\n                            .object({\n                              settings: z\n                                .object({\n                                  quantity: z\n                                    .number()\n                                    .describe(\n                                      'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                    )\n                                    .min(0.01)\n                                    .max(999999999.99)\n                                    .optional(),\n                                  measurementUnit: z\n                                    .enum([\n                                      'UNSPECIFIED',\n                                      'ML',\n                                      'CL',\n                                      'L',\n                                      'CBM',\n                                      'MG',\n                                      'G',\n                                      'KG',\n                                      'MM',\n                                      'CM',\n                                      'M',\n                                      'SQM',\n                                      'OZ',\n                                      'LB',\n                                      'FLOZ',\n                                      'PT',\n                                      'QT',\n                                      'GAL',\n                                      'IN',\n                                      'FT',\n                                      'YD',\n                                      'SQFT',\n                                    ])\n                                    .describe(\n                                      'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                )\n                                .optional(),\n                              value: z\n                                .string()\n                                .describe(\n                                  \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                )\n                                .optional(),\n                              description: z\n                                .string()\n                                .describe(\n                                  'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(100)\n                                .optional()\n                                .nullable(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                            )\n                            .optional(),\n                          productDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Product dimensions (length, width, height of the physical product).'\n                            )\n                            .optional(),\n                          packageDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Package dimensions (length, width, height of the shipping package).'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Physical properties. Must be passed when `productType: PHYSICAL`'\n                        ),\n                    }),\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z\n                        .object({\n                          digitalFile: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe('Media ID in media manager.')\n                                .min(1)\n                                .max(100)\n                                .optional(),\n                              fileName: z\n                                .string()\n                                .describe('Original file name.')\n                                .min(1)\n                                .max(1000)\n                                .optional(),\n                              fileSize: z\n                                .string()\n                                .describe('Original file size.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              fileType: z\n                                .enum([\n                                  'UNSPECIFIED',\n                                  'SECURE_PICTURE',\n                                  'SECURE_VIDEO',\n                                  'SECURE_DOCUMENT',\n                                  'SECURE_MUSIC',\n                                  'SECURE_ARCHIVE',\n                                  'SECURE_RAW',\n                                ])\n                                .describe('File type.')\n                                .optional(),\n                            })\n                            .describe(\n                              'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Digital properties. Must be passed when `productType: DIGITAL`'\n                        ),\n                    }),\n                  ])\n                )\n              )\n              .min(1)\n              .max(1000)\n              .optional(),\n          })\n          .describe(\n            \"Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nVariants aren't auto-generated. You must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).\"\n          ),\n        subscriptionDetails: z\n          .object({\n            subscriptions: z\n              .array(\n                z.intersection(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Subscription ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    title: z\n                      .string()\n                      .describe('Subscription title.')\n                      .min(1)\n                      .max(20),\n                    description: z\n                      .string()\n                      .describe('Subscription description.')\n                      .max(60)\n                      .optional()\n                      .nullable(),\n                    visible: z\n                      .boolean()\n                      .describe(\n                        'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                      )\n                      .optional()\n                      .nullable(),\n                    frequency: z.enum([\n                      'UNDEFINED',\n                      'DAY',\n                      'WEEK',\n                      'MONTH',\n                      'YEAR',\n                    ]),\n                    interval: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                      )\n                      .min(1)\n                      .max(50)\n                      .optional()\n                      .nullable(),\n                    discount: z\n                      .intersection(\n                        z.object({ type: z.enum(['AMOUNT', 'PERCENT']) }),\n                        z.xor([\n                          z.object({\n                            percentOff: z.never().optional(),\n                            amountOff: z\n                              .string()\n                              .describe(\n                                'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                              ),\n                          }),\n                          z.object({\n                            amountOff: z.never().optional(),\n                            percentOff: z\n                              .number()\n                              .describe(\n                                'Percentage subtracted from the variant price when calculating subscription prices.'\n                              )\n                              .min(0.1)\n                              .max(99.9),\n                          }),\n                        ])\n                      )\n                      .describe(\n                        'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                      )\n                      .optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      billingCycles: z.never().optional(),\n                      autoRenewal: z\n                        .boolean()\n                        .describe(\n                          'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                        ),\n                    }),\n                    z.object({\n                      autoRenewal: z.never().optional(),\n                      billingCycles: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Number of billing cycles before subscription ends.'\n                        )\n                        .min(2)\n                        .max(999),\n                    }),\n                  ])\n                )\n              )\n              .min(1)\n              .max(6),\n            allowOneTimePurchases: z\n              .boolean()\n              .describe(\n                'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n              )\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n          )\n          .optional(),\n        purchaseEligibility: z\n          .object({ userCriteria: z.enum(['MEMBERS_ONLY']).optional() })\n          .describe('Purchase eligibility settings for the product.')\n          .optional(),\n        extendedFields: z\n          .object({\n            namespaces: z\n              .record(z.string(), z.record(z.string(), z.any()))\n              .describe(\n                'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n              )\n              .optional(),\n          })\n          .describe(\n            'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the [app dashboard](https://dev.wix.com/dc3/my-apps/) before they can be accessed with API calls.'\n          )\n          .optional(),\n        tags: z\n          .object({\n            privateTags: z\n              .object({ tagIds: z.array(z.string()).max(100).optional() })\n              .describe(\n                'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n              )\n              .optional(),\n            publicTags: z\n              .object({ tagIds: z.array(z.string()).max(100).optional() })\n              .describe(\n                'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n              )\n              .optional(),\n          })\n          .describe('Tags')\n          .optional(),\n      }),\n      z.xor([\n        z.object({ physicalProperties: z.never().optional() }),\n        z.object({\n          physicalProperties: z\n            .object({\n              pricePerUnit: z\n                .object({\n                  quantity: z\n                    .number()\n                    .describe(\n                      'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                    )\n                    .min(0.01)\n                    .max(999999999.99)\n                    .optional(),\n                  measurementUnit: z\n                    .enum([\n                      'UNSPECIFIED',\n                      'ML',\n                      'CL',\n                      'L',\n                      'CBM',\n                      'MG',\n                      'G',\n                      'KG',\n                      'MM',\n                      'CM',\n                      'M',\n                      'SQM',\n                      'OZ',\n                      'LB',\n                      'FLOZ',\n                      'PT',\n                      'QT',\n                      'GAL',\n                      'IN',\n                      'FT',\n                      'YD',\n                      'SQFT',\n                    ])\n                    .describe(\n                      'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n                )\n                .optional(),\n              fulfillerId: z\n                .string()\n                .describe('Fulfiller ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              shippingWeightRange: z\n                .object({\n                  minValue: z\n                    .number()\n                    .describe(\n                      'Minimum weight across all variants associated with this product.'\n                    )\n                    .min(0)\n                    .max(999999999.99)\n                    .optional(),\n                  maxValue: z\n                    .number()\n                    .describe(\n                      'Maximum weight across all variants associated with this product.'\n                    )\n                    .min(0)\n                    .max(999999999.99)\n                    .optional(),\n                })\n                .describe(\n                  'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n                )\n                .optional(),\n              pricePerUnitRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      value: z\n                        .string()\n                        .describe(\n                          \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                        )\n                        .optional(),\n                      description: z\n                        .string()\n                        .describe(\n                          'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                        )\n                        .max(100)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum price per unit across all variants.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      value: z\n                        .string()\n                        .describe(\n                          \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                        )\n                        .optional(),\n                      description: z\n                        .string()\n                        .describe(\n                          'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                        )\n                        .max(100)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum price per unit across all variants.')\n                    .optional(),\n                })\n                .describe(\n                  'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n                )\n                .optional(),\n              weightMeasurementUnitInfo: z\n                .object({\n                  weightMeasurementUnit: z\n                    .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                    .describe('Weight measurement unit.')\n                    .optional(),\n                })\n                .describe(\n                  'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              deliveryProfileId: z\n                .string()\n                .describe('Delivery profile ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n            ),\n        }),\n      ])\n    )\n    .describe(\n      'Product to create with inventory.\\n\\nAt least one variant must be provided and each variant must have relevant item in `choices` field for every item in `options`.\\nIf `options` is empty one default variant must be provided with empty `choices` list.'\n    ),\n  options: z\n    .object({\n      returnEntity: z\n        .boolean()\n        .describe(\n          'Whether to return inventory entities in the response.\\n\\nDefault: `false`'\n        )\n        .optional(),\n      fields: z\n        .array(\n          z.enum([\n            'URL',\n            'CURRENCY',\n            'INFO_SECTION',\n            'MERCHANT_DATA',\n            'PLAIN_DESCRIPTION',\n            'INFO_SECTION_PLAIN_DESCRIPTION',\n            'SUBSCRIPTION_PRICES_INFO',\n            'BREADCRUMBS_INFO',\n            'WEIGHT_MEASUREMENT_UNIT_INFO',\n            'VARIANT_OPTION_CHOICE_NAMES',\n            'MEDIA_ITEMS_INFO',\n            'DESCRIPTION',\n            'DIRECT_CATEGORIES_INFO',\n            'ALL_CATEGORIES_INFO',\n            'INFO_SECTION_DESCRIPTION',\n            'THUMBNAIL',\n            'PRODUCT_CHOICES_MEDIA_REFERENCES',\n            'PRODUCT_CHOICES_DISPLAY_IMAGE',\n            'DISCOUNT_INFO',\n          ])\n        )\n        .max(100)\n        .optional(),\n    })\n    .optional(),\n});\nexport const CreateProductWithInventoryResponse = z.object({\n  product: z\n    .intersection(\n      z.object({\n        _id: z\n          .string()\n          .describe('Product ID.')\n          .min(1)\n          .max(36)\n          .optional()\n          .nullable(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product.'\n          )\n          .optional()\n          .nullable(),\n        _createdDate: z\n          .date()\n          .describe('Date and time the product was created.')\n          .optional()\n          .nullable(),\n        _updatedDate: z\n          .date()\n          .describe('Date and time the product was updated.')\n          .optional()\n          .nullable(),\n        name: z\n          .string()\n          .describe('Product name. Translatable.')\n          .min(1)\n          .max(80)\n          .optional()\n          .nullable(),\n        slug: z\n          .string()\n          .describe(\n            'Product slug. A URL-friendly identifier used in the product page address.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n          )\n          .min(1)\n          .max(300)\n          .optional()\n          .nullable(),\n        url: z\n          .string()\n          .describe(\n            'URL to the site\\'s product page.\\n\\n> **Note:** Returned only when you pass `\"URL\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n        description: z\n          .any()\n          .describe(\n            'Product description using rich content.\\n> **Note:** Returned only when you pass `\"DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n          )\n          .optional(),\n        plainDescription: z\n          .string()\n          .describe(\n            'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n          )\n          .max(16000)\n          .optional()\n          .nullable(),\n        visible: z\n          .boolean()\n          .describe(\n            \"Whether the product is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the default variant's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n          )\n          .optional()\n          .nullable(),\n        visibleInPos: z\n          .boolean()\n          .describe(\n            'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n          )\n          .optional()\n          .nullable(),\n        media: z\n          .object({\n            main: z\n              .intersection(\n                z.object({\n                  altText: z\n                    .string()\n                    .describe('Image alt text.')\n                    .min(1)\n                    .max(1000)\n                    .optional()\n                    .nullable(),\n                  displayName: z\n                    .string()\n                    .describe(\n                      \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                    )\n                    .max(80)\n                    .optional()\n                    .nullable(),\n                  mediaType: z\n                    .enum(['IMAGE', 'VIDEO'])\n                    .describe('Media type.')\n                    .optional(),\n                  thumbnail: z\n                    .object({\n                      url: z\n                        .string()\n                        .describe('Thumbnail url.')\n                        .url()\n                        .optional(),\n                      height: z\n                        .number()\n                        .int()\n                        .describe('Thumbnail height.')\n                        .optional(),\n                      width: z\n                        .number()\n                        .int()\n                        .describe('Thumbnail width.')\n                        .optional(),\n                      altText: z\n                        .string()\n                        .describe('Thumbnail alt text.')\n                        .min(1)\n                        .max(1000)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                  uploadId: z\n                    .string()\n                    .describe('ID used to upload media to Wix Media Manager.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                }),\n                z.intersection(\n                  z.xor([\n                    z.object({\n                      _id: z.never().optional(),\n                      url: z.never().optional(),\n                    }),\n                    z.object({\n                      url: z.never().optional(),\n                      _id: z\n                        .string()\n                        .describe(\n                          'Set media by ID of an existing file in Wix Media Manager.'\n                        )\n                        .min(1)\n                        .max(200),\n                    }),\n                    z.object({\n                      _id: z.never().optional(),\n                      url: z\n                        .string()\n                        .describe('Set media using an external media URL.')\n                        .url(),\n                    }),\n                  ]),\n                  z.xor([\n                    z.object({\n                      image: z.never().optional(),\n                      video: z.never().optional(),\n                    }),\n                    z.object({\n                      video: z.never().optional(),\n                      image: z\n                        .string()\n                        .describe(\n                          \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                        ),\n                    }),\n                    z.object({\n                      image: z.never().optional(),\n                      video: z\n                        .string()\n                        .describe(\n                          \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                        ),\n                    }),\n                  ])\n                )\n              )\n              .describe(\n                'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n              )\n              .optional(),\n            itemsInfo: z\n              .object({\n                items: z\n                  .array(\n                    z.intersection(\n                      z.object({\n                        altText: z\n                          .string()\n                          .describe('Image alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        displayName: z\n                          .string()\n                          .describe(\n                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                          )\n                          .max(80)\n                          .optional()\n                          .nullable(),\n                        mediaType: z\n                          .enum(['IMAGE', 'VIDEO'])\n                          .describe('Media type.')\n                          .optional(),\n                        thumbnail: z\n                          .object({\n                            url: z\n                              .string()\n                              .describe('Thumbnail url.')\n                              .url()\n                              .optional(),\n                            height: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail height.')\n                              .optional(),\n                            width: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail width.')\n                              .optional(),\n                            altText: z\n                              .string()\n                              .describe('Thumbnail alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        uploadId: z\n                          .string()\n                          .describe(\n                            'ID used to upload media to Wix Media Manager.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                      }),\n                      z.intersection(\n                        z.xor([\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z.never().optional(),\n                          }),\n                          z.object({\n                            url: z.never().optional(),\n                            _id: z\n                              .string()\n                              .describe(\n                                'Set media by ID of an existing file in Wix Media Manager.'\n                              )\n                              .min(1)\n                              .max(200),\n                          }),\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z\n                              .string()\n                              .describe(\n                                'Set media using an external media URL.'\n                              )\n                              .url(),\n                          }),\n                        ]),\n                        z.xor([\n                          z.object({\n                            image: z.never().optional(),\n                            video: z.never().optional(),\n                          }),\n                          z.object({\n                            video: z.never().optional(),\n                            image: z\n                              .string()\n                              .describe(\n                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                              ),\n                          }),\n                          z.object({\n                            image: z.never().optional(),\n                            video: z\n                              .string()\n                              .describe(\n                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                  )\n                  .max(50)\n                  .optional(),\n              })\n              .describe(\n                'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n              )\n              .optional(),\n          })\n          .describe(\n            'Product media items. For a detailed explanation of product media, see [About Product Media](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/about-product-media).'\n          )\n          .optional(),\n        seoData: z\n          .object({\n            tags: z\n              .array(\n                z.object({\n                  type: z\n                    .string()\n                    .describe(\n                      'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                    )\n                    .optional(),\n                  props: z\n                    .record(z.string(), z.any())\n                    .describe(\n                      'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  meta: z\n                    .record(z.string(), z.any())\n                    .describe(\n                      'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  children: z\n                    .string()\n                    .describe(\n                      'SEO tag inner content. For example, `<title> inner content </title>`.'\n                    )\n                    .optional(),\n                  custom: z\n                    .boolean()\n                    .describe(\n                      'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                    )\n                    .optional(),\n                  disabled: z\n                    .boolean()\n                    .describe(\n                      \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                    )\n                    .optional(),\n                })\n              )\n              .optional(),\n            settings: z\n              .object({\n                preventAutoRedirect: z\n                  .boolean()\n                  .describe(\n                    'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n                  )\n                  .optional(),\n                keywords: z\n                  .array(\n                    z.object({\n                      term: z.string().describe('Keyword value.').optional(),\n                      isMain: z\n                        .boolean()\n                        .describe(\n                          'Whether the keyword is the main focus keyword.'\n                        )\n                        .optional(),\n                      origin: z\n                        .string()\n                        .describe(\n                          'The source that added the keyword terms to the SEO settings.'\n                        )\n                        .max(1000)\n                        .optional()\n                        .nullable(),\n                    })\n                  )\n                  .max(5)\n                  .optional(),\n              })\n              .describe('SEO general settings.')\n              .optional(),\n          })\n          .describe('Product SEO data.')\n          .optional(),\n        taxGroupId: z\n          .string()\n          .describe(\n            '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        options: z\n          .array(\n            z.intersection(\n              z.object({\n                _id: z\n                  .string()\n                  .describe(\n                    'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n                  )\n                  .min(1)\n                  .max(36)\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Option name.')\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                optionRenderType: z\n                  .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                  .describe('Option render type.')\n                  .optional(),\n                key: z\n                  .string()\n                  .describe(\n                    'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional(),\n              }),\n              z.xor([\n                z.object({ choicesSettings: z.never().optional() }),\n                z.object({\n                  choicesSettings: z\n                    .object({\n                      choices: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              linkedMedia: z\n                                .array(\n                                  z.intersection(\n                                    z.object({\n                                      altText: z\n                                        .string()\n                                        .describe('Image alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                      displayName: z\n                                        .string()\n                                        .describe(\n                                          \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                        )\n                                        .max(80)\n                                        .optional()\n                                        .nullable(),\n                                      mediaType: z\n                                        .enum(['IMAGE', 'VIDEO'])\n                                        .describe('Media type.')\n                                        .optional(),\n                                      thumbnail: z\n                                        .object({\n                                          url: z\n                                            .string()\n                                            .describe('Thumbnail url.')\n                                            .url()\n                                            .optional(),\n                                          height: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail height.')\n                                            .optional(),\n                                          width: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail width.')\n                                            .optional(),\n                                          altText: z\n                                            .string()\n                                            .describe('Thumbnail alt text.')\n                                            .min(1)\n                                            .max(1000)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .optional(),\n                                      uploadId: z\n                                        .string()\n                                        .describe(\n                                          'ID used to upload media to Wix Media Manager.'\n                                        )\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    }),\n                                    z.intersection(\n                                      z.xor([\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          url: z.never().optional(),\n                                          _id: z\n                                            .string()\n                                            .describe(\n                                              'Set media by ID of an existing file in Wix Media Manager.'\n                                            )\n                                            .min(1)\n                                            .max(200),\n                                        }),\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z\n                                            .string()\n                                            .describe(\n                                              'Set media using an external media URL.'\n                                            )\n                                            .url(),\n                                        }),\n                                      ]),\n                                      z.xor([\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          video: z.never().optional(),\n                                          image: z\n                                            .string()\n                                            .describe(\n                                              \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                            ),\n                                        }),\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z\n                                            .string()\n                                            .describe(\n                                              \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                            ),\n                                        }),\n                                      ])\n                                    )\n                                  )\n                                )\n                                .max(15)\n                                .optional(),\n                              choiceType: z\n                                .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                .describe('Choice type.')\n                                .optional(),\n                              key: z\n                                .string()\n                                .describe(\n                                  'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe(\n                                  'Choice name. For text choices, this field also contains the choice value.'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional()\n                                .nullable(),\n                              inStock: z\n                                .boolean()\n                                .describe(\n                                  'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                                )\n                                .optional(),\n                              visible: z\n                                .boolean()\n                                .describe(\n                                  'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                                )\n                                .optional(),\n                              displayImage: z\n                                .string()\n                                .describe(\n                                  'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                )\n                                .optional(),\n                              media: z\n                                .object({\n                                  items: z\n                                    .array(\n                                      z.intersection(\n                                        z.object({}),\n                                        z.xor([\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            mediaId: z\n                                              .string()\n                                              .describe(\n                                                'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'External media URL. Can be used only on write.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                    .max(15)\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                )\n                                .optional(),\n                            }),\n                            z.xor([\n                              z.object({ colorCode: z.never().optional() }),\n                              z.object({\n                                colorCode: z\n                                  .string()\n                                  .describe(\n                                    'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                                  )\n                                  .min(3)\n                                  .max(20),\n                              }),\n                            ])\n                          )\n                        )\n                        .min(1)\n                        .max(100)\n                        .optional(),\n                    })\n                    .describe('Choices settings.'),\n                }),\n              ])\n            )\n          )\n          .max(6)\n          .optional(),\n        modifiers: z\n          .array(\n            z.intersection(\n              z.object({\n                _id: z\n                  .string()\n                  .describe(\n                    'ID of a customization with `customizationType: MODIFIER`.'\n                  )\n                  .min(1)\n                  .max(36)\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Modifier title.')\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                modifierRenderType: z\n                  .enum(['FREE_TEXT', 'TEXT_CHOICES', 'SWATCH_CHOICES'])\n                  .describe('Modifier render type.')\n                  .optional(),\n                mandatory: z\n                  .boolean()\n                  .describe(\n                    'Whether customer input is required for this modifier.'\n                  )\n                  .optional(),\n                key: z\n                  .string()\n                  .describe(\n                    'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional(),\n              }),\n              z.xor([\n                z.object({\n                  freeTextSettings: z.never().optional(),\n                  choicesSettings: z.never().optional(),\n                }),\n                z.object({\n                  choicesSettings: z.never().optional(),\n                  freeTextSettings: z\n                    .object({\n                      minCharCount: z\n                        .number()\n                        .int()\n                        .describe('Minimum number of characters.')\n                        .optional(),\n                      maxCharCount: z\n                        .number()\n                        .int()\n                        .describe('Maximum number of characters.')\n                        .max(500)\n                        .optional(),\n                      defaultAddedPrice: z\n                        .string()\n                        .describe(\n                          \"Default amount to be added to the product's price.\"\n                        )\n                        .optional()\n                        .nullable(),\n                      title: z\n                        .string()\n                        .describe(\n                          'Title of the text to be input by the customer.'\n                        )\n                        .min(1)\n                        .max(150)\n                        .optional(),\n                      key: z\n                        .string()\n                        .describe(\n                          'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                        )\n                        .min(1)\n                        .max(150)\n                        .optional(),\n                    })\n                    .describe('Free text modifier settings.'),\n                }),\n                z.object({\n                  freeTextSettings: z.never().optional(),\n                  choicesSettings: z\n                    .object({\n                      choices: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              linkedMedia: z\n                                .array(\n                                  z.intersection(\n                                    z.object({\n                                      altText: z\n                                        .string()\n                                        .describe('Image alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                      displayName: z\n                                        .string()\n                                        .describe(\n                                          \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                        )\n                                        .max(80)\n                                        .optional()\n                                        .nullable(),\n                                      mediaType: z\n                                        .enum(['IMAGE', 'VIDEO'])\n                                        .describe('Media type.')\n                                        .optional(),\n                                      thumbnail: z\n                                        .object({\n                                          url: z\n                                            .string()\n                                            .describe('Thumbnail url.')\n                                            .url()\n                                            .optional(),\n                                          height: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail height.')\n                                            .optional(),\n                                          width: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail width.')\n                                            .optional(),\n                                          altText: z\n                                            .string()\n                                            .describe('Thumbnail alt text.')\n                                            .min(1)\n                                            .max(1000)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .optional(),\n                                      uploadId: z\n                                        .string()\n                                        .describe(\n                                          'ID used to upload media to Wix Media Manager.'\n                                        )\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    }),\n                                    z.intersection(\n                                      z.xor([\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          url: z.never().optional(),\n                                          _id: z\n                                            .string()\n                                            .describe(\n                                              'Set media by ID of an existing file in Wix Media Manager.'\n                                            )\n                                            .min(1)\n                                            .max(200),\n                                        }),\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z\n                                            .string()\n                                            .describe(\n                                              'Set media using an external media URL.'\n                                            )\n                                            .url(),\n                                        }),\n                                      ]),\n                                      z.xor([\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          video: z.never().optional(),\n                                          image: z\n                                            .string()\n                                            .describe(\n                                              \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                            ),\n                                        }),\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z\n                                            .string()\n                                            .describe(\n                                              \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                            ),\n                                        }),\n                                      ])\n                                    )\n                                  )\n                                )\n                                .max(15)\n                                .optional(),\n                              choiceType: z\n                                .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                .describe('Choice type.')\n                                .optional(),\n                              key: z\n                                .string()\n                                .describe(\n                                  'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe('Choice name.')\n                                .min(1)\n                                .max(50)\n                                .optional()\n                                .nullable(),\n                              addedPrice: z\n                                .string()\n                                .describe('Added price.')\n                                .optional()\n                                .nullable(),\n                              displayImage: z\n                                .string()\n                                .describe(\n                                  'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                )\n                                .optional(),\n                              media: z\n                                .object({\n                                  items: z\n                                    .array(\n                                      z.intersection(\n                                        z.object({}),\n                                        z.xor([\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            mediaId: z\n                                              .string()\n                                              .describe(\n                                                'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'External media URL. Can be used only on write.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                    .max(15)\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                )\n                                .optional(),\n                            }),\n                            z.xor([\n                              z.object({ colorCode: z.never().optional() }),\n                              z.object({\n                                colorCode: z\n                                  .string()\n                                  .describe(\n                                    'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                                  )\n                                  .min(3)\n                                  .max(20),\n                              }),\n                            ])\n                          )\n                        )\n                        .min(1)\n                        .max(100)\n                        .optional(),\n                    })\n                    .describe('Choice settings.'),\n                }),\n              ])\n            )\n          )\n          .max(10)\n          .optional(),\n        brand: z\n          .object({\n            _id: z\n              .string()\n              .describe('Brand ID.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            name: z\n              .string()\n              .describe('Brand name.')\n              .max(50)\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            \"Product [brand](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/brands-v3/introduction).\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n          )\n          .optional(),\n        infoSections: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('Info section ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              uniqueName: z\n                .string()\n                .describe(\n                  'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n              title: z\n                .string()\n                .describe(\n                  'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                )\n                .min(1)\n                .max(50)\n                .optional()\n                .nullable(),\n              description: z\n                .any()\n                .describe(\n                  'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                )\n                .optional(),\n              plainDescription: z\n                .string()\n                .describe(\n                  'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                )\n                .max(16000)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(10)\n          .optional(),\n        ribbon: z\n          .object({\n            _id: z\n              .string()\n              .describe('Ribbon ID.')\n              .min(1)\n              .max(36)\n              .optional()\n              .nullable(),\n            name: z\n              .string()\n              .describe('Ribbon name.')\n              .max(30)\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            \"Primary [ribbon](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/ribbons-v3/introduction) displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n          )\n          .optional(),\n        directCategoriesInfo: z\n          .object({\n            categories: z\n              .array(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Category ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                  index: z\n                    .number()\n                    .int()\n                    .describe(\n                      'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                    )\n                    .min(0)\n                    .max(200)\n                    .optional()\n                    .nullable(),\n                })\n              )\n              .max(2000)\n              .optional(),\n          })\n          .describe(\n            'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product.\\n\\nUpdated automatically when a product is added/removed from a category, when an item is moved within a category, or when a category is deleted.\\n> **Note:** Returned only when you pass `\"DIRECT_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n        allCategoriesInfo: z\n          .object({\n            categories: z\n              .array(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Category ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                  index: z\n                    .number()\n                    .int()\n                    .describe(\n                      'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                    )\n                    .min(0)\n                    .max(200)\n                    .optional()\n                    .nullable(),\n                })\n              )\n              .max(2000)\n              .optional(),\n          })\n          .describe(\n            'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product, as well as their parent categories.\\n> **Note:** Returned only when you pass `\"ALL_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n        mainCategoryId: z\n          .string()\n          .describe(\n            'The ID of the product\\'s primary direct [category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction), which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        costRange: z\n          .object({\n            minValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Minimum value.')\n              .optional(),\n            maxValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Maximum value.')\n              .optional(),\n          })\n          .describe(\n            'Product cost range - minimum and maximum costs of all product variants.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n          )\n          .optional(),\n        inventory: z\n          .object({\n            availabilityStatus: z\n              .enum(['IN_STOCK', 'OUT_OF_STOCK', 'PARTIALLY_OUT_OF_STOCK'])\n              .describe('Current availability status.')\n              .optional(),\n            preorderStatus: z\n              .enum(['ENABLED', 'DISABLED', 'PARTIALLY_ENABLED'])\n              .describe('Current preorder status.')\n              .optional(),\n            preorderAvailability: z\n              .enum(['ALL_VARIANTS', 'NO_VARIANTS', 'SOME_VARIANTS'])\n              .describe('Preorder availability status.')\n              .optional(),\n          })\n          .describe(\n            'Product inventory info.\\n\\n> **Note:** This field reflects the aggregated inventory status from the default location only. Use the [Inventory Items API](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/inventory-items-v3/introduction) to manage inventory for specific locations. Learn more about [inventory management](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-inventory-management).'\n          )\n          .optional(),\n        productType: z\n          .enum(['PHYSICAL', 'DIGITAL'])\n          .describe(\n            'Product type: `PHYSICAL` for tangible goods that require shipping, or `DIGITAL` for downloadable content.\\n\\nWhen passing `productType: PHYSICAL`, you must also pass `physicalProperties`. When passing `productType: DIGITAL`, you can optionally pass `digitalProperties` in each variant.'\n          )\n          .optional(),\n        handle: z\n          .string()\n          .describe(\n            \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n          )\n          .min(1)\n          .max(100)\n          .optional()\n          .nullable(),\n        currency: z\n          .string()\n          .describe(\n            'Currency used for the pricing of this product, in [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes) format.\\n\\nDefaults to the currency defined in the site settings, unless specified in the request\\'s `x-wix-currency` header.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n          )\n          .optional()\n          .nullable(),\n        breadcrumbsInfo: z\n          .object({\n            breadcrumbs: z\n              .array(\n                z.object({\n                  categoryId: z\n                    .string()\n                    .describe('Category ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                  categoryName: z\n                    .string()\n                    .describe('Category name.')\n                    .min(1)\n                    .max(80)\n                    .optional(),\n                  categorySlug: z\n                    .string()\n                    .describe('Category slug.')\n                    .min(1)\n                    .max(100)\n                    .optional(),\n                })\n              )\n              .max(5)\n              .optional(),\n          })\n          .describe(\n            'Breadcrumbs of the `mainCategoryId`. Used to navigate to parent [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction). Useful for building navigation UI and for SEO purposes.\\n> **Note:** Returned only when you pass `\"BREADCRUMBS_INFO\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n        actualPriceRange: z\n          .object({\n            minValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Minimum value.')\n              .optional(),\n            maxValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Maximum value.')\n              .optional(),\n          })\n          .describe(\n            'Minimum and maximum current selling prices across all product variants.'\n          )\n          .optional(),\n        compareAtPriceRange: z\n          .object({\n            minValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Minimum value.')\n              .optional(),\n            maxValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Maximum value.')\n              .optional(),\n          })\n          .describe(\n            'Minimum and maximum compare-at prices (original prices before discounts) across all product variants. Used to show savings to customers.'\n          )\n          .optional(),\n        variantsInfo: z\n          .object({\n            variants: z\n              .array(\n                z.intersection(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Variant ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    visible: z\n                      .boolean()\n                      .describe(\n                        \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                      )\n                      .optional()\n                      .nullable(),\n                    sku: z\n                      .string()\n                      .describe('Variant SKU (stock keeping unit).')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    barcode: z\n                      .string()\n                      .describe('Variant barcode.')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.object({\n                          optionChoiceIds: z\n                            .object({\n                              optionId: z\n                                .string()\n                                .describe('Option ID.')\n                                .min(1)\n                                .max(36)\n                                .optional(),\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                            )\n                            .optional(),\n                          optionChoiceNames: z\n                            .object({\n                              optionName: z\n                                .string()\n                                .describe('Option name.')\n                                .min(1)\n                                .optional(),\n                              choiceName: z\n                                .string()\n                                .describe('Choice name.')\n                                .min(1)\n                                .optional(),\n                              renderType: z\n                                .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                .describe(\n                                  'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .min(0)\n                      .max(6)\n                      .optional(),\n                    price: z\n                      .object({\n                        actualPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            \"Variant's current selling price. Must be greater than or equal to 0.\"\n                          )\n                          .optional(),\n                        compareAtPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                          )\n                          .optional(),\n                        priceAfterDiscount: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                          )\n                          .optional(),\n                      })\n                      .describe('Variant price.')\n                      .optional(),\n                    revenueDetails: z\n                      .object({\n                        cost: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe('Item cost.')\n                          .optional(),\n                        profit: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                          )\n                          .optional(),\n                        profitMargin: z\n                          .number()\n                          .describe(\n                            'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                          )\n                          .min(0)\n                          .max(1)\n                          .optional(),\n                      })\n                      .describe(\n                        'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                      )\n                      .optional(),\n                    media: z\n                      .intersection(\n                        z.object({\n                          altText: z\n                            .string()\n                            .describe('Image alt text.')\n                            .min(1)\n                            .max(1000)\n                            .optional()\n                            .nullable(),\n                          displayName: z\n                            .string()\n                            .describe(\n                              \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                            )\n                            .max(80)\n                            .optional()\n                            .nullable(),\n                          mediaType: z\n                            .enum(['IMAGE', 'VIDEO'])\n                            .describe('Media type.')\n                            .optional(),\n                          thumbnail: z\n                            .object({\n                              url: z\n                                .string()\n                                .describe('Thumbnail url.')\n                                .url()\n                                .optional(),\n                              height: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail height.')\n                                .optional(),\n                              width: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail width.')\n                                .optional(),\n                              altText: z\n                                .string()\n                                .describe('Thumbnail alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                          uploadId: z\n                            .string()\n                            .describe(\n                              'ID used to upload media to Wix Media Manager.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                        }),\n                        z.intersection(\n                          z.xor([\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z.never().optional(),\n                            }),\n                            z.object({\n                              url: z.never().optional(),\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Set media by ID of an existing file in Wix Media Manager.'\n                                )\n                                .min(1)\n                                .max(200),\n                            }),\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z\n                                .string()\n                                .describe(\n                                  'Set media using an external media URL.'\n                                )\n                                .url(),\n                            }),\n                          ]),\n                          z.xor([\n                            z.object({\n                              image: z.never().optional(),\n                              video: z.never().optional(),\n                            }),\n                            z.object({\n                              video: z.never().optional(),\n                              image: z\n                                .string()\n                                .describe(\n                                  \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                ),\n                            }),\n                            z.object({\n                              image: z.never().optional(),\n                              video: z\n                                .string()\n                                .describe(\n                                  \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                ),\n                            }),\n                          ])\n                        )\n                      )\n                      .describe('Variant media.')\n                      .optional(),\n                    subscriptionPricesInfo: z\n                      .object({\n                        subscriptionPrices: z\n                          .array(\n                            z.object({\n                              subscriptionId: z\n                                .string()\n                                .describe('Subscription ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                              price: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                )\n                                .optional(),\n                              pricePerUnit: z\n                                .object({\n                                  value: z\n                                    .string()\n                                    .describe(\n                                      'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                    )\n                                    .optional(),\n                                  description: z\n                                    .string()\n                                    .describe(\n                                      'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                  priceAfterDiscount: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe('Price per unit info.')\n                                .optional(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                          )\n                          .max(6)\n                          .optional(),\n                      })\n                      .describe(\n                        'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    inventoryStatus: z\n                      .object({\n                        inStock: z\n                          .boolean()\n                          .describe('Whether the variant is in stock.')\n                          .optional(),\n                        preorderEnabled: z\n                          .boolean()\n                          .describe(\n                            'Whether preorder is enabled for this variant.'\n                          )\n                          .optional(),\n                      })\n                      .describe('Variant inventory status.')\n                      .optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z.never().optional(),\n                    }),\n                    z.object({\n                      digitalProperties: z.never().optional(),\n                      physicalProperties: z\n                        .object({\n                          weight: z\n                            .number()\n                            .describe(\n                              'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                            )\n                            .min(0)\n                            .max(999999999.99)\n                            .optional()\n                            .nullable(),\n                          pricePerUnit: z\n                            .object({\n                              settings: z\n                                .object({\n                                  quantity: z\n                                    .number()\n                                    .describe(\n                                      'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                    )\n                                    .min(0.01)\n                                    .max(999999999.99)\n                                    .optional(),\n                                  measurementUnit: z\n                                    .enum([\n                                      'UNSPECIFIED',\n                                      'ML',\n                                      'CL',\n                                      'L',\n                                      'CBM',\n                                      'MG',\n                                      'G',\n                                      'KG',\n                                      'MM',\n                                      'CM',\n                                      'M',\n                                      'SQM',\n                                      'OZ',\n                                      'LB',\n                                      'FLOZ',\n                                      'PT',\n                                      'QT',\n                                      'GAL',\n                                      'IN',\n                                      'FT',\n                                      'YD',\n                                      'SQFT',\n                                    ])\n                                    .describe(\n                                      'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                )\n                                .optional(),\n                              value: z\n                                .string()\n                                .describe(\n                                  \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                )\n                                .optional(),\n                              description: z\n                                .string()\n                                .describe(\n                                  'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(100)\n                                .optional()\n                                .nullable(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                            )\n                            .optional(),\n                          productDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Product dimensions (length, width, height of the physical product).'\n                            )\n                            .optional(),\n                          packageDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Package dimensions (length, width, height of the shipping package).'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Physical properties. Must be passed when `productType: PHYSICAL`'\n                        ),\n                    }),\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z\n                        .object({\n                          digitalFile: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe('Media ID in media manager.')\n                                .min(1)\n                                .max(100)\n                                .optional(),\n                              fileName: z\n                                .string()\n                                .describe('Original file name.')\n                                .min(1)\n                                .max(1000)\n                                .optional(),\n                              fileSize: z\n                                .string()\n                                .describe('Original file size.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              fileType: z\n                                .enum([\n                                  'UNSPECIFIED',\n                                  'SECURE_PICTURE',\n                                  'SECURE_VIDEO',\n                                  'SECURE_DOCUMENT',\n                                  'SECURE_MUSIC',\n                                  'SECURE_ARCHIVE',\n                                  'SECURE_RAW',\n                                ])\n                                .describe('File type.')\n                                .optional(),\n                            })\n                            .describe(\n                              'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Digital properties. Must be passed when `productType: DIGITAL`'\n                        ),\n                    }),\n                  ])\n                )\n              )\n              .min(1)\n              .max(1000)\n              .optional(),\n          })\n          .describe(\n            'Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nYou must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).'\n          )\n          .optional(),\n        purchaseEligibility: z\n          .object({ userCriteria: z.enum(['MEMBERS_ONLY']).optional() })\n          .describe('Purchase eligibility settings for the product.')\n          .optional(),\n        additionalRibbons: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('Ribbon ID.')\n                .min(1)\n                .max(36)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Ribbon name.')\n                .max(30)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(4)\n          .optional(),\n        extendedFields: z\n          .object({\n            namespaces: z\n              .record(z.string(), z.record(z.string(), z.any()))\n              .describe(\n                'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n              )\n              .optional(),\n          })\n          .describe(\n            'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n          )\n          .optional(),\n        tags: z\n          .object({\n            privateTags: z\n              .object({ tagIds: z.array(z.string()).max(100).optional() })\n              .describe(\n                'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n              )\n              .optional(),\n            publicTags: z\n              .object({ tagIds: z.array(z.string()).max(100).optional() })\n              .describe(\n                'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n              )\n              .optional(),\n          })\n          .describe('Tags')\n          .optional(),\n        subscriptionDetails: z\n          .object({\n            subscriptions: z\n              .array(\n                z.intersection(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Subscription ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    title: z\n                      .string()\n                      .describe('Subscription title.')\n                      .min(1)\n                      .max(20)\n                      .optional(),\n                    description: z\n                      .string()\n                      .describe('Subscription description.')\n                      .max(60)\n                      .optional()\n                      .nullable(),\n                    visible: z\n                      .boolean()\n                      .describe(\n                        'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                      )\n                      .optional()\n                      .nullable(),\n                    frequency: z\n                      .enum(['UNDEFINED', 'DAY', 'WEEK', 'MONTH', 'YEAR'])\n                      .describe(\n                        'Frequency of recurring payment.\\nFor example, if `frequency: MONTH` and `billingCycles: 6`; payment will be made monthly for 6 months.'\n                      )\n                      .optional(),\n                    interval: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                      )\n                      .min(1)\n                      .max(50)\n                      .optional()\n                      .nullable(),\n                    discount: z\n                      .intersection(\n                        z.object({\n                          type: z\n                            .enum(['AMOUNT', 'PERCENT'])\n                            .describe('Discount type.')\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({\n                            amountOff: z.never().optional(),\n                            percentOff: z.never().optional(),\n                          }),\n                          z.object({\n                            percentOff: z.never().optional(),\n                            amountOff: z\n                              .string()\n                              .describe(\n                                'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                              ),\n                          }),\n                          z.object({\n                            amountOff: z.never().optional(),\n                            percentOff: z\n                              .number()\n                              .describe(\n                                'Percentage subtracted from the variant price when calculating subscription prices.'\n                              )\n                              .min(0.1)\n                              .max(99.9),\n                          }),\n                        ])\n                      )\n                      .describe(\n                        'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                      )\n                      .optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      autoRenewal: z.never().optional(),\n                      billingCycles: z.never().optional(),\n                    }),\n                    z.object({\n                      billingCycles: z.never().optional(),\n                      autoRenewal: z\n                        .boolean()\n                        .describe(\n                          'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                        ),\n                    }),\n                    z.object({\n                      autoRenewal: z.never().optional(),\n                      billingCycles: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Number of billing cycles before subscription ends.'\n                        )\n                        .min(2)\n                        .max(999),\n                    }),\n                  ])\n                )\n              )\n              .min(1)\n              .max(6)\n              .optional(),\n            allowOneTimePurchases: z\n              .boolean()\n              .describe(\n                'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n              )\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n          )\n          .optional(),\n        variantSummary: z\n          .object({\n            variantCount: z\n              .number()\n              .int()\n              .describe('The total number of variants for the product.')\n              .optional(),\n            minPriceVariant: z\n              .intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Variant ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  visible: z\n                    .boolean()\n                    .describe(\n                      \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                    )\n                    .optional()\n                    .nullable(),\n                  sku: z\n                    .string()\n                    .describe('Variant SKU (stock keeping unit).')\n                    .min(1)\n                    .max(40)\n                    .optional()\n                    .nullable(),\n                  barcode: z\n                    .string()\n                    .describe('Variant barcode.')\n                    .min(1)\n                    .max(40)\n                    .optional()\n                    .nullable(),\n                  choices: z\n                    .array(\n                      z.object({\n                        optionChoiceIds: z\n                          .object({\n                            optionId: z\n                              .string()\n                              .describe('Option ID.')\n                              .min(1)\n                              .max(36)\n                              .optional(),\n                            choiceId: z\n                              .string()\n                              .describe('Choice ID.')\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                          )\n                          .optional(),\n                        optionChoiceNames: z\n                          .object({\n                            optionName: z\n                              .string()\n                              .describe('Option name.')\n                              .min(1)\n                              .optional(),\n                            choiceName: z\n                              .string()\n                              .describe('Choice name.')\n                              .min(1)\n                              .optional(),\n                            renderType: z\n                              .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                              .describe(\n                                'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                      })\n                    )\n                    .min(0)\n                    .max(6)\n                    .optional(),\n                  price: z\n                    .object({\n                      actualPrice: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          \"Variant's current selling price. Must be greater than or equal to 0.\"\n                        )\n                        .optional(),\n                      compareAtPrice: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                        )\n                        .optional(),\n                      priceAfterDiscount: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                        )\n                        .optional(),\n                    })\n                    .describe('Variant price.')\n                    .optional(),\n                  revenueDetails: z\n                    .object({\n                      cost: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe('Item cost.')\n                        .optional(),\n                      profit: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                        )\n                        .optional(),\n                      profitMargin: z\n                        .number()\n                        .describe(\n                          'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                        )\n                        .min(0)\n                        .max(1)\n                        .optional(),\n                    })\n                    .describe(\n                      'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                    )\n                    .optional(),\n                  media: z\n                    .intersection(\n                      z.object({\n                        altText: z\n                          .string()\n                          .describe('Image alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        displayName: z\n                          .string()\n                          .describe(\n                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                          )\n                          .max(80)\n                          .optional()\n                          .nullable(),\n                        mediaType: z\n                          .enum(['IMAGE', 'VIDEO'])\n                          .describe('Media type.')\n                          .optional(),\n                        thumbnail: z\n                          .object({\n                            url: z\n                              .string()\n                              .describe('Thumbnail url.')\n                              .url()\n                              .optional(),\n                            height: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail height.')\n                              .optional(),\n                            width: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail width.')\n                              .optional(),\n                            altText: z\n                              .string()\n                              .describe('Thumbnail alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        uploadId: z\n                          .string()\n                          .describe(\n                            'ID used to upload media to Wix Media Manager.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                      }),\n                      z.intersection(\n                        z.xor([\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z.never().optional(),\n                          }),\n                          z.object({\n                            url: z.never().optional(),\n                            _id: z\n                              .string()\n                              .describe(\n                                'Set media by ID of an existing file in Wix Media Manager.'\n                              )\n                              .min(1)\n                              .max(200),\n                          }),\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z\n                              .string()\n                              .describe(\n                                'Set media using an external media URL.'\n                              )\n                              .url(),\n                          }),\n                        ]),\n                        z.xor([\n                          z.object({\n                            image: z.never().optional(),\n                            video: z.never().optional(),\n                          }),\n                          z.object({\n                            video: z.never().optional(),\n                            image: z\n                              .string()\n                              .describe(\n                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                              ),\n                          }),\n                          z.object({\n                            image: z.never().optional(),\n                            video: z\n                              .string()\n                              .describe(\n                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                    .describe('Variant media.')\n                    .optional(),\n                  subscriptionPricesInfo: z\n                    .object({\n                      subscriptionPrices: z\n                        .array(\n                          z.object({\n                            subscriptionId: z\n                              .string()\n                              .describe('Subscription ID.')\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                            price: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                              )\n                              .optional(),\n                            pricePerUnit: z\n                              .object({\n                                value: z\n                                  .string()\n                                  .describe(\n                                    'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                  )\n                                  .optional(),\n                                description: z\n                                  .string()\n                                  .describe(\n                                    'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                                priceAfterDiscount: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe('Price per unit info.')\n                              .optional(),\n                            priceAfterDiscount: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                              )\n                              .optional(),\n                          })\n                        )\n                        .max(6)\n                        .optional(),\n                    })\n                    .describe(\n                      'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                  inventoryStatus: z\n                    .object({\n                      inStock: z\n                        .boolean()\n                        .describe('Whether the variant is in stock.')\n                        .optional(),\n                      preorderEnabled: z\n                        .boolean()\n                        .describe(\n                          'Whether preorder is enabled for this variant.'\n                        )\n                        .optional(),\n                    })\n                    .describe('Variant inventory status.')\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    physicalProperties: z.never().optional(),\n                    digitalProperties: z.never().optional(),\n                  }),\n                  z.object({\n                    digitalProperties: z.never().optional(),\n                    physicalProperties: z\n                      .object({\n                        weight: z\n                          .number()\n                          .describe(\n                            'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                          )\n                          .min(0)\n                          .max(999999999.99)\n                          .optional()\n                          .nullable(),\n                        pricePerUnit: z\n                          .object({\n                            settings: z\n                              .object({\n                                quantity: z\n                                  .number()\n                                  .describe(\n                                    'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                  )\n                                  .min(0.01)\n                                  .max(999999999.99)\n                                  .optional(),\n                                measurementUnit: z\n                                  .enum([\n                                    'UNSPECIFIED',\n                                    'ML',\n                                    'CL',\n                                    'L',\n                                    'CBM',\n                                    'MG',\n                                    'G',\n                                    'KG',\n                                    'MM',\n                                    'CM',\n                                    'M',\n                                    'SQM',\n                                    'OZ',\n                                    'LB',\n                                    'FLOZ',\n                                    'PT',\n                                    'QT',\n                                    'GAL',\n                                    'IN',\n                                    'FT',\n                                    'YD',\n                                    'SQFT',\n                                  ])\n                                  .describe(\n                                    'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                              )\n                              .optional(),\n                            value: z\n                              .string()\n                              .describe(\n                                \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                              )\n                              .optional(),\n                            description: z\n                              .string()\n                              .describe(\n                                'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(100)\n                              .optional()\n                              .nullable(),\n                            priceAfterDiscount: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                          )\n                          .optional(),\n                        productDimensions: z\n                          .object({\n                            length: z\n                              .string()\n                              .describe(\n                                'Length. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            width: z\n                              .string()\n                              .describe(\n                                'Width. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            height: z\n                              .string()\n                              .describe(\n                                'Height. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            unit: z\n                              .enum([\n                                'UNKNOWN_DIMENSIONS_UNIT',\n                                'MM',\n                                'CM',\n                                'M',\n                                'IN',\n                                'FT',\n                                'YD',\n                              ])\n                              .describe(\n                                'Unit of measurement for dimensions (length, width, height).'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Product dimensions (length, width, height of the physical product).'\n                          )\n                          .optional(),\n                        packageDimensions: z\n                          .object({\n                            length: z\n                              .string()\n                              .describe(\n                                'Length. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            width: z\n                              .string()\n                              .describe(\n                                'Width. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            height: z\n                              .string()\n                              .describe(\n                                'Height. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            unit: z\n                              .enum([\n                                'UNKNOWN_DIMENSIONS_UNIT',\n                                'MM',\n                                'CM',\n                                'M',\n                                'IN',\n                                'FT',\n                                'YD',\n                              ])\n                              .describe(\n                                'Unit of measurement for dimensions (length, width, height).'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Package dimensions (length, width, height of the shipping package).'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Physical properties. Must be passed when `productType: PHYSICAL`'\n                      ),\n                  }),\n                  z.object({\n                    physicalProperties: z.never().optional(),\n                    digitalProperties: z\n                      .object({\n                        digitalFile: z\n                          .object({\n                            _id: z\n                              .string()\n                              .describe('Media ID in media manager.')\n                              .min(1)\n                              .max(100)\n                              .optional(),\n                            fileName: z\n                              .string()\n                              .describe('Original file name.')\n                              .min(1)\n                              .max(1000)\n                              .optional(),\n                            fileSize: z\n                              .string()\n                              .describe('Original file size.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                            fileType: z\n                              .enum([\n                                'UNSPECIFIED',\n                                'SECURE_PICTURE',\n                                'SECURE_VIDEO',\n                                'SECURE_DOCUMENT',\n                                'SECURE_MUSIC',\n                                'SECURE_ARCHIVE',\n                                'SECURE_RAW',\n                              ])\n                              .describe('File type.')\n                              .optional(),\n                          })\n                          .describe(\n                            'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Digital properties. Must be passed when `productType: DIGITAL`'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\n                'The variant with the lowest `actualPrice` among visible variants for this product.\\n\\nHidden variants are excluded; ties are broken by variant order. Empty if the product has no visible variants.\\n> **Note:** Returned only when you pass `\"MIN_PRICE_VARIANT\"` to the `fields` array in Products API requests.'\n              )\n              .optional(),\n          })\n          .describe('The total number of variants for the product.')\n          .optional(),\n      }),\n      z.xor([\n        z.object({ physicalProperties: z.never().optional() }),\n        z.object({\n          physicalProperties: z\n            .object({\n              pricePerUnit: z\n                .object({\n                  quantity: z\n                    .number()\n                    .describe(\n                      'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                    )\n                    .min(0.01)\n                    .max(999999999.99)\n                    .optional(),\n                  measurementUnit: z\n                    .enum([\n                      'UNSPECIFIED',\n                      'ML',\n                      'CL',\n                      'L',\n                      'CBM',\n                      'MG',\n                      'G',\n                      'KG',\n                      'MM',\n                      'CM',\n                      'M',\n                      'SQM',\n                      'OZ',\n                      'LB',\n                      'FLOZ',\n                      'PT',\n                      'QT',\n                      'GAL',\n                      'IN',\n                      'FT',\n                      'YD',\n                      'SQFT',\n                    ])\n                    .describe(\n                      'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n                )\n                .optional(),\n              fulfillerId: z\n                .string()\n                .describe('Fulfiller ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              shippingWeightRange: z\n                .object({\n                  minValue: z\n                    .number()\n                    .describe(\n                      'Minimum weight across all variants associated with this product.'\n                    )\n                    .min(0)\n                    .max(999999999.99)\n                    .optional(),\n                  maxValue: z\n                    .number()\n                    .describe(\n                      'Maximum weight across all variants associated with this product.'\n                    )\n                    .min(0)\n                    .max(999999999.99)\n                    .optional(),\n                })\n                .describe(\n                  'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n                )\n                .optional(),\n              pricePerUnitRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      value: z\n                        .string()\n                        .describe(\n                          \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                        )\n                        .optional(),\n                      description: z\n                        .string()\n                        .describe(\n                          'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                        )\n                        .max(100)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum price per unit across all variants.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      value: z\n                        .string()\n                        .describe(\n                          \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                        )\n                        .optional(),\n                      description: z\n                        .string()\n                        .describe(\n                          'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                        )\n                        .max(100)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum price per unit across all variants.')\n                    .optional(),\n                })\n                .describe(\n                  'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n                )\n                .optional(),\n              weightMeasurementUnitInfo: z\n                .object({\n                  weightMeasurementUnit: z\n                    .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                    .describe('Weight measurement unit.')\n                    .optional(),\n                })\n                .describe(\n                  'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              deliveryProfileId: z\n                .string()\n                .describe('Delivery profile ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n            ),\n        }),\n      ])\n    )\n    .describe('Created product.')\n    .optional(),\n  inventoryResults: z\n    .object({\n      results: z\n        .array(\n          z.object({\n            itemMetadata: z\n              .object({\n                _id: z\n                  .string()\n                  .describe(\n                    \"Item ID. Should always be available, unless it's impossible (for example, when failing to create an item).\"\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                originalIndex: z\n                  .number()\n                  .int()\n                  .describe(\n                    'Index of the item within the request array. Allows for correlation between request and response items.'\n                  )\n                  .optional(),\n                success: z\n                  .boolean()\n                  .describe(\n                    'Whether the requested action was successful for this item. When `false`, the `error` field is populated.'\n                  )\n                  .optional(),\n                error: z\n                  .object({\n                    code: z.string().describe('Error code.').optional(),\n                    description: z\n                      .string()\n                      .describe('Description of the error.')\n                      .optional(),\n                    data: z\n                      .record(z.string(), z.any())\n                      .describe('Data related to the error.')\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe('Details about the error in case of failure.')\n                  .optional(),\n              })\n              .describe('Bulk action metadata for inventory item.')\n              .optional(),\n            item: z\n              .intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Inventory item ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  revision: z\n                    .string()\n                    .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                    .describe(\n                      'Revision number, which increments by 1 each time the inventory item is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the inventory item.\\n\\nIgnored when creating an inventory item.'\n                    )\n                    .optional()\n                    .nullable(),\n                  _createdDate: z\n                    .date()\n                    .describe('Date and time the inventory item was created.')\n                    .optional()\n                    .nullable(),\n                  _updatedDate: z\n                    .date()\n                    .describe(\n                      'Date and time the inventory item was last updated.'\n                    )\n                    .optional()\n                    .nullable(),\n                  variantId: z\n                    .string()\n                    .describe('Variant ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                  locationId: z\n                    .string()\n                    .describe(\n                      \"Stores location ID. If not specified when creating an inventory item, the store's default location is used.\"\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  productId: z\n                    .string()\n                    .describe('Product ID.')\n                    .min(1)\n                    .max(36)\n                    .optional(),\n                  trackQuantity: z\n                    .boolean()\n                    .describe('Whether the quantity is being tracked.')\n                    .optional(),\n                  availabilityStatus: z\n                    .enum(['OUT_OF_STOCK', 'IN_STOCK', 'PREORDER'])\n                    .describe('Inventory item availability status.')\n                    .optional(),\n                  preorderInfo: z\n                    .object({\n                      enabled: z\n                        .boolean()\n                        .describe(\n                          \"Whether preorder is enabled for this inventory item.\\n\\n> **Note:** Preorder can't be enabled for digital products or products with subscriptions.\\n\\nDefault: `false`\"\n                        )\n                        .optional()\n                        .nullable(),\n                      message: z\n                        .string()\n                        .describe(\n                          'Message displayed to customers when the item is out of stock and preorder is enabled.'\n                        )\n                        .min(1)\n                        .max(250)\n                        .optional()\n                        .nullable(),\n                      limit: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Maximum number of items that can be preordered after stock reaches zero.\\n\\nSupported only for inventory items with `trackQuantity = true`.\\n\\nDefault: `100000`'\n                        )\n                        .min(0)\n                        .max(100000)\n                        .optional()\n                        .nullable(),\n                      counter: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Number of times this item has been preordered.\\n\\nSupported only for inventory items with `trackQuantity = true`.'\n                        )\n                        .min(0)\n                        .max(99999)\n                        .optional()\n                        .nullable(),\n                      quantity: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Remaining quantity available for preorder.\\n\\nSupported only for items with `trackQuantity` set to `true`.'\n                        )\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      \"Item preorder info.\\n\\nPreorder settings are configured per inventory item, so each variant-location combination can have its own preorder configuration.\\n\\n> **Note:** The product entity's `inventory.preorderStatus` and `inventory.preorderAvailability` fields reflect only the default location's preorder state.\"\n                    )\n                    .optional(),\n                  product: z\n                    .object({\n                      name: z\n                        .string()\n                        .describe('Product name.')\n                        .max(80)\n                        .optional()\n                        .nullable(),\n                      directCategoryIds: z\n                        .array(z.string())\n                        .max(2000)\n                        .optional(),\n                      variantName: z\n                        .string()\n                        .describe('Variant name.')\n                        .min(1)\n                        .max(250)\n                        .optional()\n                        .nullable(),\n                      variantSku: z\n                        .string()\n                        .describe('Variant SKU (stock keeping unit).')\n                        .min(1)\n                        .max(40)\n                        .optional()\n                        .nullable(),\n                      variantVisible: z\n                        .boolean()\n                        .describe(\n                          'Whether the variant is visible in the store.'\n                        )\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Associated product and variant details.')\n                    .optional(),\n                  extendedFields: z\n                    .object({\n                      namespaces: z\n                        .record(z.string(), z.record(z.string(), z.any()))\n                        .describe(\n                          'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                        )\n                        .optional(),\n                    })\n                    .describe(\n                      'Custom field data for the inventory item object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n                    )\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    inStock: z.never().optional(),\n                    quantity: z.never().optional(),\n                  }),\n                  z.object({\n                    quantity: z.never().optional(),\n                    inStock: z\n                      .boolean()\n                      .describe(\n                        \"Indicates that inventory is tracked by status rather than quantity.\\n\\nWhen set to `true`, the item is marked as available for sale without tracking exact quantities.\\nWhen set to `false`, the item is marked as out of stock.\\nThis tracking method is useful for made-to-order products or items with unlimited inventory.\\n\\nWhen using this tracking method, `trackQuantity` is `false` and preorder limits aren't supported.\"\n                      ),\n                  }),\n                  z.object({\n                    inStock: z.never().optional(),\n                    quantity: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Indicates that inventory is tracked by quantity.\\n\\nSet this field to the number of items currently in stock.\\nThis tracking method is useful when you need to know exactly how many items are available.\\n\\nWhen using this tracking method, `trackQuantity` is `true`.\\nQuantity can be negative when inventory is decremented for an order that has already been paid.'\n                      )\n                      .min(-99999)\n                      .max(99999),\n                  }),\n                ])\n              )\n              .describe(\n                'Full inventory item entity.\\n\\nReturned only if `returnEntity: true` is passed in the request.'\n              )\n              .optional(),\n          })\n        )\n        .min(0)\n        .max(1000)\n        .optional(),\n      bulkActionMetadata: z\n        .object({\n          totalSuccesses: z\n            .number()\n            .int()\n            .describe('Number of items that were successfully processed.')\n            .optional(),\n          totalFailures: z\n            .number()\n            .int()\n            .describe(\"Number of items that couldn't be processed.\")\n            .optional(),\n          undetailedFailures: z\n            .number()\n            .int()\n            .describe(\n              'Number of failures without details because detailed failure threshold was exceeded.'\n            )\n            .optional(),\n        })\n        .describe('Bulk action metadata.')\n        .optional(),\n      error: z\n        .object({\n          code: z.string().describe('Error code.').optional(),\n          description: z\n            .string()\n            .describe('Description of the error.')\n            .optional(),\n          data: z\n            .record(z.string(), z.any())\n            .describe('Data related to the error.')\n            .optional()\n            .nullable(),\n        })\n        .describe('Error details in case of failed action.')\n        .optional(),\n    })\n    .describe('Inventories created by bulk action.')\n    .optional(),\n});\nexport const UpdateProductRequest = z.object({\n  _id: z.string().describe('Product ID.').min(1).max(36),\n  product: z\n    .intersection(\n      z.object({\n        _id: z\n          .string()\n          .describe('Product ID.')\n          .min(1)\n          .max(36)\n          .optional()\n          .nullable(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product.'\n          ),\n        _createdDate: z\n          .date()\n          .describe('Date and time the product was created.')\n          .optional()\n          .nullable(),\n        _updatedDate: z\n          .date()\n          .describe('Date and time the product was updated.')\n          .optional()\n          .nullable(),\n        name: z\n          .string()\n          .describe('Product name. Translatable.')\n          .min(1)\n          .max(80)\n          .optional()\n          .nullable(),\n        slug: z\n          .string()\n          .describe(\n            'Product slug. A URL-friendly identifier used in the product page address.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n          )\n          .min(1)\n          .max(300)\n          .optional()\n          .nullable(),\n        url: z\n          .string()\n          .describe(\n            'URL to the site\\'s product page.\\n\\n> **Note:** Returned only when you pass `\"URL\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n        description: z\n          .any()\n          .describe(\n            'Product description using rich content.\\n> **Note:** Returned only when you pass `\"DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n          )\n          .optional(),\n        plainDescription: z\n          .string()\n          .describe(\n            'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n          )\n          .max(16000)\n          .optional()\n          .nullable(),\n        visible: z\n          .boolean()\n          .describe(\n            \"Whether the product is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the default variant's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n          )\n          .optional()\n          .nullable(),\n        visibleInPos: z\n          .boolean()\n          .describe(\n            'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n          )\n          .optional()\n          .nullable(),\n        media: z\n          .object({\n            main: z\n              .intersection(\n                z.object({\n                  altText: z\n                    .string()\n                    .describe('Image alt text.')\n                    .min(1)\n                    .max(1000)\n                    .optional()\n                    .nullable(),\n                  displayName: z\n                    .string()\n                    .describe(\n                      \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                    )\n                    .max(80)\n                    .optional()\n                    .nullable(),\n                  mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                  thumbnail: z\n                    .object({\n                      url: z\n                        .string()\n                        .describe('Thumbnail url.')\n                        .url()\n                        .optional(),\n                      height: z\n                        .number()\n                        .int()\n                        .describe('Thumbnail height.')\n                        .optional(),\n                      width: z\n                        .number()\n                        .int()\n                        .describe('Thumbnail width.')\n                        .optional(),\n                      altText: z\n                        .string()\n                        .describe('Thumbnail alt text.')\n                        .min(1)\n                        .max(1000)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                  uploadId: z\n                    .string()\n                    .describe('ID used to upload media to Wix Media Manager.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                }),\n                z.intersection(\n                  z.xor([\n                    z.object({\n                      _id: z.never().optional(),\n                      url: z.never().optional(),\n                    }),\n                    z.object({\n                      url: z.never().optional(),\n                      _id: z\n                        .string()\n                        .describe(\n                          'Set media by ID of an existing file in Wix Media Manager.'\n                        )\n                        .min(1)\n                        .max(200),\n                    }),\n                    z.object({\n                      _id: z.never().optional(),\n                      url: z\n                        .string()\n                        .describe('Set media using an external media URL.')\n                        .url(),\n                    }),\n                  ]),\n                  z.xor([\n                    z.object({\n                      image: z.never().optional(),\n                      video: z.never().optional(),\n                    }),\n                    z.object({\n                      video: z.never().optional(),\n                      image: z\n                        .string()\n                        .describe(\n                          \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                        ),\n                    }),\n                    z.object({\n                      image: z.never().optional(),\n                      video: z\n                        .string()\n                        .describe(\n                          \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                        ),\n                    }),\n                  ])\n                )\n              )\n              .describe(\n                'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n              )\n              .optional(),\n            itemsInfo: z\n              .object({\n                items: z\n                  .array(\n                    z.intersection(\n                      z.object({\n                        altText: z\n                          .string()\n                          .describe('Image alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        displayName: z\n                          .string()\n                          .describe(\n                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                          )\n                          .max(80)\n                          .optional()\n                          .nullable(),\n                        mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                        thumbnail: z\n                          .object({\n                            url: z\n                              .string()\n                              .describe('Thumbnail url.')\n                              .url()\n                              .optional(),\n                            height: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail height.')\n                              .optional(),\n                            width: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail width.')\n                              .optional(),\n                            altText: z\n                              .string()\n                              .describe('Thumbnail alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        uploadId: z\n                          .string()\n                          .describe(\n                            'ID used to upload media to Wix Media Manager.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                      }),\n                      z.intersection(\n                        z.xor([\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z.never().optional(),\n                          }),\n                          z.object({\n                            url: z.never().optional(),\n                            _id: z\n                              .string()\n                              .describe(\n                                'Set media by ID of an existing file in Wix Media Manager.'\n                              )\n                              .min(1)\n                              .max(200),\n                          }),\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z\n                              .string()\n                              .describe(\n                                'Set media using an external media URL.'\n                              )\n                              .url(),\n                          }),\n                        ]),\n                        z.xor([\n                          z.object({\n                            image: z.never().optional(),\n                            video: z.never().optional(),\n                          }),\n                          z.object({\n                            video: z.never().optional(),\n                            image: z\n                              .string()\n                              .describe(\n                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                              ),\n                          }),\n                          z.object({\n                            image: z.never().optional(),\n                            video: z\n                              .string()\n                              .describe(\n                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                  )\n                  .max(50)\n                  .optional(),\n              })\n              .describe(\n                'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n              )\n              .optional(),\n          })\n          .describe(\n            'Product media items. For a detailed explanation of product media, see [About Product Media](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/about-product-media).'\n          )\n          .optional(),\n        seoData: z\n          .object({\n            tags: z\n              .array(\n                z.object({\n                  type: z\n                    .string()\n                    .describe(\n                      'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                    )\n                    .optional(),\n                  props: z\n                    .record(z.string(), z.any())\n                    .describe(\n                      'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  meta: z\n                    .record(z.string(), z.any())\n                    .describe(\n                      'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  children: z\n                    .string()\n                    .describe(\n                      'SEO tag inner content. For example, `<title> inner content </title>`.'\n                    )\n                    .optional(),\n                  custom: z\n                    .boolean()\n                    .describe(\n                      'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                    )\n                    .optional(),\n                  disabled: z\n                    .boolean()\n                    .describe(\n                      \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                    )\n                    .optional(),\n                })\n              )\n              .optional(),\n            settings: z\n              .object({\n                preventAutoRedirect: z\n                  .boolean()\n                  .describe(\n                    'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n                  )\n                  .optional(),\n                keywords: z\n                  .array(\n                    z.object({\n                      term: z.string().describe('Keyword value.').optional(),\n                      isMain: z\n                        .boolean()\n                        .describe(\n                          'Whether the keyword is the main focus keyword.'\n                        )\n                        .optional(),\n                      origin: z\n                        .string()\n                        .describe(\n                          'The source that added the keyword terms to the SEO settings.'\n                        )\n                        .max(1000)\n                        .optional()\n                        .nullable(),\n                    })\n                  )\n                  .max(5)\n                  .optional(),\n              })\n              .describe('SEO general settings.')\n              .optional(),\n          })\n          .describe('Product SEO data.')\n          .optional(),\n        taxGroupId: z\n          .string()\n          .describe(\n            '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        options: z\n          .array(\n            z.intersection(\n              z.object({\n                _id: z\n                  .string()\n                  .describe(\n                    'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n                  )\n                  .min(1)\n                  .max(36)\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Option name.')\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                optionRenderType: z\n                  .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                  .optional(),\n                key: z\n                  .string()\n                  .describe(\n                    'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional(),\n              }),\n              z.xor([\n                z.object({\n                  choicesSettings: z\n                    .object({\n                      choices: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              linkedMedia: z\n                                .array(\n                                  z.intersection(\n                                    z.object({\n                                      altText: z\n                                        .string()\n                                        .describe('Image alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                      displayName: z\n                                        .string()\n                                        .describe(\n                                          \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                        )\n                                        .max(80)\n                                        .optional()\n                                        .nullable(),\n                                      mediaType: z\n                                        .enum(['IMAGE', 'VIDEO'])\n                                        .optional(),\n                                      thumbnail: z\n                                        .object({\n                                          url: z\n                                            .string()\n                                            .describe('Thumbnail url.')\n                                            .url()\n                                            .optional(),\n                                          height: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail height.')\n                                            .optional(),\n                                          width: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail width.')\n                                            .optional(),\n                                          altText: z\n                                            .string()\n                                            .describe('Thumbnail alt text.')\n                                            .min(1)\n                                            .max(1000)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .optional(),\n                                      uploadId: z\n                                        .string()\n                                        .describe(\n                                          'ID used to upload media to Wix Media Manager.'\n                                        )\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    }),\n                                    z.intersection(\n                                      z.xor([\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          url: z.never().optional(),\n                                          _id: z\n                                            .string()\n                                            .describe(\n                                              'Set media by ID of an existing file in Wix Media Manager.'\n                                            )\n                                            .min(1)\n                                            .max(200),\n                                        }),\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z\n                                            .string()\n                                            .describe(\n                                              'Set media using an external media URL.'\n                                            )\n                                            .url(),\n                                        }),\n                                      ]),\n                                      z.xor([\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          video: z.never().optional(),\n                                          image: z\n                                            .string()\n                                            .describe(\n                                              \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                            ),\n                                        }),\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z\n                                            .string()\n                                            .describe(\n                                              \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                            ),\n                                        }),\n                                      ])\n                                    )\n                                  )\n                                )\n                                .max(15)\n                                .optional(),\n                              choiceType: z\n                                .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                .optional(),\n                              key: z\n                                .string()\n                                .describe(\n                                  'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe(\n                                  'Choice name. For text choices, this field also contains the choice value.'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional()\n                                .nullable(),\n                              inStock: z\n                                .boolean()\n                                .describe(\n                                  'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                                )\n                                .optional(),\n                              visible: z\n                                .boolean()\n                                .describe(\n                                  'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                                )\n                                .optional(),\n                              displayImage: z\n                                .string()\n                                .describe(\n                                  'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                )\n                                .optional(),\n                              media: z\n                                .object({\n                                  items: z\n                                    .array(\n                                      z.intersection(\n                                        z.object({}),\n                                        z.xor([\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            mediaId: z\n                                              .string()\n                                              .describe(\n                                                'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'External media URL. Can be used only on write.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                    .max(15)\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                )\n                                .optional(),\n                            }),\n                            z.xor([\n                              z.object({ colorCode: z.never().optional() }),\n                              z.object({\n                                colorCode: z\n                                  .string()\n                                  .describe(\n                                    'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                                  )\n                                  .min(3)\n                                  .max(20),\n                              }),\n                            ])\n                          )\n                        )\n                        .min(1)\n                        .max(100)\n                        .optional(),\n                    })\n                    .describe('Choices settings.'),\n                }),\n              ])\n            )\n          )\n          .max(6)\n          .optional(),\n        modifiers: z\n          .array(\n            z.intersection(\n              z.object({\n                _id: z\n                  .string()\n                  .describe(\n                    'ID of a customization with `customizationType: MODIFIER`.'\n                  )\n                  .min(1)\n                  .max(36)\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Modifier title.')\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                modifierRenderType: z\n                  .enum(['FREE_TEXT', 'TEXT_CHOICES', 'SWATCH_CHOICES'])\n                  .optional(),\n                mandatory: z\n                  .boolean()\n                  .describe(\n                    'Whether customer input is required for this modifier.'\n                  )\n                  .optional(),\n                key: z\n                  .string()\n                  .describe(\n                    'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional(),\n              }),\n              z.xor([\n                z.object({\n                  choicesSettings: z.never().optional(),\n                  freeTextSettings: z\n                    .object({\n                      minCharCount: z\n                        .number()\n                        .int()\n                        .describe('Minimum number of characters.')\n                        .optional(),\n                      maxCharCount: z\n                        .number()\n                        .int()\n                        .describe('Maximum number of characters.')\n                        .max(500)\n                        .optional(),\n                      defaultAddedPrice: z\n                        .string()\n                        .describe(\n                          \"Default amount to be added to the product's price.\"\n                        )\n                        .optional()\n                        .nullable(),\n                      title: z\n                        .string()\n                        .describe(\n                          'Title of the text to be input by the customer.'\n                        )\n                        .min(1)\n                        .max(150)\n                        .optional(),\n                      key: z\n                        .string()\n                        .describe(\n                          'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                        )\n                        .min(1)\n                        .max(150)\n                        .optional(),\n                    })\n                    .describe('Free text modifier settings.'),\n                }),\n                z.object({\n                  freeTextSettings: z.never().optional(),\n                  choicesSettings: z\n                    .object({\n                      choices: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              linkedMedia: z\n                                .array(\n                                  z.intersection(\n                                    z.object({\n                                      altText: z\n                                        .string()\n                                        .describe('Image alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                      displayName: z\n                                        .string()\n                                        .describe(\n                                          \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                        )\n                                        .max(80)\n                                        .optional()\n                                        .nullable(),\n                                      mediaType: z\n                                        .enum(['IMAGE', 'VIDEO'])\n                                        .optional(),\n                                      thumbnail: z\n                                        .object({\n                                          url: z\n                                            .string()\n                                            .describe('Thumbnail url.')\n                                            .url()\n                                            .optional(),\n                                          height: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail height.')\n                                            .optional(),\n                                          width: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail width.')\n                                            .optional(),\n                                          altText: z\n                                            .string()\n                                            .describe('Thumbnail alt text.')\n                                            .min(1)\n                                            .max(1000)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .optional(),\n                                      uploadId: z\n                                        .string()\n                                        .describe(\n                                          'ID used to upload media to Wix Media Manager.'\n                                        )\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    }),\n                                    z.intersection(\n                                      z.xor([\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          url: z.never().optional(),\n                                          _id: z\n                                            .string()\n                                            .describe(\n                                              'Set media by ID of an existing file in Wix Media Manager.'\n                                            )\n                                            .min(1)\n                                            .max(200),\n                                        }),\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z\n                                            .string()\n                                            .describe(\n                                              'Set media using an external media URL.'\n                                            )\n                                            .url(),\n                                        }),\n                                      ]),\n                                      z.xor([\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          video: z.never().optional(),\n                                          image: z\n                                            .string()\n                                            .describe(\n                                              \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                            ),\n                                        }),\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z\n                                            .string()\n                                            .describe(\n                                              \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                            ),\n                                        }),\n                                      ])\n                                    )\n                                  )\n                                )\n                                .max(15)\n                                .optional(),\n                              choiceType: z\n                                .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                .optional(),\n                              key: z\n                                .string()\n                                .describe(\n                                  'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe('Choice name.')\n                                .min(1)\n                                .max(50)\n                                .optional()\n                                .nullable(),\n                              addedPrice: z\n                                .string()\n                                .describe('Added price.')\n                                .optional()\n                                .nullable(),\n                              displayImage: z\n                                .string()\n                                .describe(\n                                  'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                )\n                                .optional(),\n                              media: z\n                                .object({\n                                  items: z\n                                    .array(\n                                      z.intersection(\n                                        z.object({}),\n                                        z.xor([\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            mediaId: z\n                                              .string()\n                                              .describe(\n                                                'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'External media URL. Can be used only on write.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                    .max(15)\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                )\n                                .optional(),\n                            }),\n                            z.xor([\n                              z.object({ colorCode: z.never().optional() }),\n                              z.object({\n                                colorCode: z\n                                  .string()\n                                  .describe(\n                                    'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                                  )\n                                  .min(3)\n                                  .max(20),\n                              }),\n                            ])\n                          )\n                        )\n                        .min(1)\n                        .max(100)\n                        .optional(),\n                    })\n                    .describe('Choice settings.'),\n                }),\n              ])\n            )\n          )\n          .max(10)\n          .optional(),\n        brand: z\n          .object({\n            _id: z\n              .string()\n              .describe('Brand ID.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            name: z\n              .string()\n              .describe('Brand name.')\n              .max(50)\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            \"Product [brand](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/brands-v3/introduction).\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n          )\n          .optional(),\n        infoSections: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('Info section ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              uniqueName: z\n                .string()\n                .describe(\n                  'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n              title: z\n                .string()\n                .describe(\n                  'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                )\n                .min(1)\n                .max(50)\n                .optional()\n                .nullable(),\n              description: z\n                .any()\n                .describe(\n                  'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                )\n                .optional(),\n              plainDescription: z\n                .string()\n                .describe(\n                  'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                )\n                .max(16000)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(10)\n          .optional(),\n        ribbon: z\n          .object({\n            _id: z\n              .string()\n              .describe('Ribbon ID.')\n              .min(1)\n              .max(36)\n              .optional()\n              .nullable(),\n            name: z\n              .string()\n              .describe('Ribbon name.')\n              .max(30)\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            \"Primary [ribbon](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/ribbons-v3/introduction) displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n          )\n          .optional(),\n        directCategoriesInfo: z\n          .object({\n            categories: z\n              .array(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Category ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                  index: z\n                    .number()\n                    .int()\n                    .describe(\n                      'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                    )\n                    .min(0)\n                    .max(200)\n                    .optional()\n                    .nullable(),\n                })\n              )\n              .max(2000)\n              .optional(),\n          })\n          .describe(\n            'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product.\\n\\nUpdated automatically when a product is added/removed from a category, when an item is moved within a category, or when a category is deleted.\\n> **Note:** Returned only when you pass `\"DIRECT_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n        allCategoriesInfo: z\n          .object({\n            categories: z\n              .array(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Category ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                  index: z\n                    .number()\n                    .int()\n                    .describe(\n                      'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                    )\n                    .min(0)\n                    .max(200)\n                    .optional()\n                    .nullable(),\n                })\n              )\n              .max(2000)\n              .optional(),\n          })\n          .describe(\n            'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product, as well as their parent categories.\\n> **Note:** Returned only when you pass `\"ALL_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n        mainCategoryId: z\n          .string()\n          .describe(\n            'The ID of the product\\'s primary direct [category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction), which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        costRange: z\n          .object({\n            minValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Minimum value.')\n              .optional(),\n            maxValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Maximum value.')\n              .optional(),\n          })\n          .describe(\n            'Product cost range - minimum and maximum costs of all product variants.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n          )\n          .optional(),\n        inventory: z\n          .object({\n            availabilityStatus: z\n              .enum(['IN_STOCK', 'OUT_OF_STOCK', 'PARTIALLY_OUT_OF_STOCK'])\n              .optional(),\n            preorderStatus: z\n              .enum(['ENABLED', 'DISABLED', 'PARTIALLY_ENABLED'])\n              .optional(),\n            preorderAvailability: z\n              .enum(['ALL_VARIANTS', 'NO_VARIANTS', 'SOME_VARIANTS'])\n              .optional(),\n          })\n          .describe(\n            'Product inventory info.\\n\\n> **Note:** This field reflects the aggregated inventory status from the default location only. Use the [Inventory Items API](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/inventory-items-v3/introduction) to manage inventory for specific locations. Learn more about [inventory management](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-inventory-management).'\n          )\n          .optional(),\n        productType: z.enum(['PHYSICAL', 'DIGITAL']).optional(),\n        handle: z\n          .string()\n          .describe(\n            \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n          )\n          .min(1)\n          .max(100)\n          .optional()\n          .nullable(),\n        currency: z\n          .string()\n          .describe(\n            'Currency used for the pricing of this product, in [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes) format.\\n\\nDefaults to the currency defined in the site settings, unless specified in the request\\'s `x-wix-currency` header.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n          )\n          .optional()\n          .nullable(),\n        breadcrumbsInfo: z\n          .object({\n            breadcrumbs: z\n              .array(\n                z.object({\n                  categoryId: z\n                    .string()\n                    .describe('Category ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                  categoryName: z\n                    .string()\n                    .describe('Category name.')\n                    .min(1)\n                    .max(80)\n                    .optional(),\n                  categorySlug: z\n                    .string()\n                    .describe('Category slug.')\n                    .min(1)\n                    .max(100)\n                    .optional(),\n                })\n              )\n              .max(5)\n              .optional(),\n          })\n          .describe(\n            'Breadcrumbs of the `mainCategoryId`. Used to navigate to parent [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction). Useful for building navigation UI and for SEO purposes.\\n> **Note:** Returned only when you pass `\"BREADCRUMBS_INFO\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n        actualPriceRange: z\n          .object({\n            minValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Minimum value.')\n              .optional(),\n            maxValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Maximum value.')\n              .optional(),\n          })\n          .describe(\n            'Minimum and maximum current selling prices across all product variants.'\n          )\n          .optional(),\n        compareAtPriceRange: z\n          .object({\n            minValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Minimum value.')\n              .optional(),\n            maxValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Maximum value.')\n              .optional(),\n          })\n          .describe(\n            'Minimum and maximum compare-at prices (original prices before discounts) across all product variants. Used to show savings to customers.'\n          )\n          .optional(),\n        variantsInfo: z\n          .object({\n            variants: z\n              .array(\n                z.intersection(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Variant ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    visible: z\n                      .boolean()\n                      .describe(\n                        \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                      )\n                      .optional()\n                      .nullable(),\n                    sku: z\n                      .string()\n                      .describe('Variant SKU (stock keeping unit).')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    barcode: z\n                      .string()\n                      .describe('Variant barcode.')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.object({\n                          optionChoiceIds: z\n                            .object({\n                              optionId: z\n                                .string()\n                                .describe('Option ID.')\n                                .min(1)\n                                .max(36),\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                ),\n                            })\n                            .describe(\n                              \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                            )\n                            .optional(),\n                          optionChoiceNames: z\n                            .object({\n                              optionName: z\n                                .string()\n                                .describe('Option name.')\n                                .min(1)\n                                .optional(),\n                              choiceName: z\n                                .string()\n                                .describe('Choice name.')\n                                .min(1)\n                                .optional(),\n                              renderType: z\n                                .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                .optional(),\n                            })\n                            .describe(\n                              'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .min(0)\n                      .max(6)\n                      .optional(),\n                    price: z\n                      .object({\n                        actualPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            \"Variant's current selling price. Must be greater than or equal to 0.\"\n                          ),\n                        compareAtPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                          )\n                          .optional(),\n                        priceAfterDiscount: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                          )\n                          .optional(),\n                      })\n                      .describe('Variant price.'),\n                    revenueDetails: z\n                      .object({\n                        cost: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe('Item cost.')\n                          .optional(),\n                        profit: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                          )\n                          .optional(),\n                        profitMargin: z\n                          .number()\n                          .describe(\n                            'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                          )\n                          .min(0)\n                          .max(1)\n                          .optional(),\n                      })\n                      .describe(\n                        'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                      )\n                      .optional(),\n                    media: z\n                      .intersection(\n                        z.object({\n                          altText: z\n                            .string()\n                            .describe('Image alt text.')\n                            .min(1)\n                            .max(1000)\n                            .optional()\n                            .nullable(),\n                          displayName: z\n                            .string()\n                            .describe(\n                              \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                            )\n                            .max(80)\n                            .optional()\n                            .nullable(),\n                          mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                          thumbnail: z\n                            .object({\n                              url: z\n                                .string()\n                                .describe('Thumbnail url.')\n                                .url()\n                                .optional(),\n                              height: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail height.')\n                                .optional(),\n                              width: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail width.')\n                                .optional(),\n                              altText: z\n                                .string()\n                                .describe('Thumbnail alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                          uploadId: z\n                            .string()\n                            .describe(\n                              'ID used to upload media to Wix Media Manager.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                        }),\n                        z.intersection(\n                          z.xor([\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z.never().optional(),\n                            }),\n                            z.object({\n                              url: z.never().optional(),\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Set media by ID of an existing file in Wix Media Manager.'\n                                )\n                                .min(1)\n                                .max(200),\n                            }),\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z\n                                .string()\n                                .describe(\n                                  'Set media using an external media URL.'\n                                )\n                                .url(),\n                            }),\n                          ]),\n                          z.xor([\n                            z.object({\n                              image: z.never().optional(),\n                              video: z.never().optional(),\n                            }),\n                            z.object({\n                              video: z.never().optional(),\n                              image: z\n                                .string()\n                                .describe(\n                                  \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                ),\n                            }),\n                            z.object({\n                              image: z.never().optional(),\n                              video: z\n                                .string()\n                                .describe(\n                                  \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                ),\n                            }),\n                          ])\n                        )\n                      )\n                      .describe('Variant media.')\n                      .optional(),\n                    subscriptionPricesInfo: z\n                      .object({\n                        subscriptionPrices: z\n                          .array(\n                            z.object({\n                              subscriptionId: z\n                                .string()\n                                .describe('Subscription ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                              price: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                )\n                                .optional(),\n                              pricePerUnit: z\n                                .object({\n                                  value: z\n                                    .string()\n                                    .describe(\n                                      'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                    )\n                                    .optional(),\n                                  description: z\n                                    .string()\n                                    .describe(\n                                      'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                  priceAfterDiscount: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe('Price per unit info.')\n                                .optional(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                          )\n                          .max(6)\n                          .optional(),\n                      })\n                      .describe(\n                        'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    inventoryStatus: z\n                      .object({\n                        inStock: z\n                          .boolean()\n                          .describe('Whether the variant is in stock.')\n                          .optional(),\n                        preorderEnabled: z\n                          .boolean()\n                          .describe(\n                            'Whether preorder is enabled for this variant.'\n                          )\n                          .optional(),\n                      })\n                      .describe('Variant inventory status.')\n                      .optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z.never().optional(),\n                    }),\n                    z.object({\n                      digitalProperties: z.never().optional(),\n                      physicalProperties: z\n                        .object({\n                          weight: z\n                            .number()\n                            .describe(\n                              'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                            )\n                            .min(0)\n                            .max(999999999.99)\n                            .optional()\n                            .nullable(),\n                          pricePerUnit: z\n                            .object({\n                              settings: z\n                                .object({\n                                  quantity: z\n                                    .number()\n                                    .describe(\n                                      'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                    )\n                                    .min(0.01)\n                                    .max(999999999.99)\n                                    .optional(),\n                                  measurementUnit: z\n                                    .enum([\n                                      'UNSPECIFIED',\n                                      'ML',\n                                      'CL',\n                                      'L',\n                                      'CBM',\n                                      'MG',\n                                      'G',\n                                      'KG',\n                                      'MM',\n                                      'CM',\n                                      'M',\n                                      'SQM',\n                                      'OZ',\n                                      'LB',\n                                      'FLOZ',\n                                      'PT',\n                                      'QT',\n                                      'GAL',\n                                      'IN',\n                                      'FT',\n                                      'YD',\n                                      'SQFT',\n                                    ])\n                                    .describe(\n                                      'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                )\n                                .optional(),\n                              value: z\n                                .string()\n                                .describe(\n                                  \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                )\n                                .optional(),\n                              description: z\n                                .string()\n                                .describe(\n                                  'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(100)\n                                .optional()\n                                .nullable(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                            )\n                            .optional(),\n                          productDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Product dimensions (length, width, height of the physical product).'\n                            )\n                            .optional(),\n                          packageDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Package dimensions (length, width, height of the shipping package).'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Physical properties. Must be passed when `productType: PHYSICAL`'\n                        ),\n                    }),\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z\n                        .object({\n                          digitalFile: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe('Media ID in media manager.')\n                                .min(1)\n                                .max(100)\n                                .optional(),\n                              fileName: z\n                                .string()\n                                .describe('Original file name.')\n                                .min(1)\n                                .max(1000)\n                                .optional(),\n                              fileSize: z\n                                .string()\n                                .describe('Original file size.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              fileType: z\n                                .enum([\n                                  'UNSPECIFIED',\n                                  'SECURE_PICTURE',\n                                  'SECURE_VIDEO',\n                                  'SECURE_DOCUMENT',\n                                  'SECURE_MUSIC',\n                                  'SECURE_ARCHIVE',\n                                  'SECURE_RAW',\n                                ])\n                                .describe('File type.')\n                                .optional(),\n                            })\n                            .describe(\n                              'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Digital properties. Must be passed when `productType: DIGITAL`'\n                        ),\n                    }),\n                  ])\n                )\n              )\n              .min(1)\n              .max(1000)\n              .optional(),\n          })\n          .describe(\n            'Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nYou must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).'\n          )\n          .optional(),\n        purchaseEligibility: z\n          .object({ userCriteria: z.enum(['MEMBERS_ONLY']).optional() })\n          .describe('Purchase eligibility settings for the product.')\n          .optional(),\n        additionalRibbons: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('Ribbon ID.')\n                .min(1)\n                .max(36)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Ribbon name.')\n                .max(30)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(4)\n          .optional(),\n        extendedFields: z\n          .object({\n            namespaces: z\n              .record(z.string(), z.record(z.string(), z.any()))\n              .describe(\n                'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n              )\n              .optional(),\n          })\n          .describe(\n            'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n          )\n          .optional(),\n        tags: z\n          .object({\n            privateTags: z\n              .object({ tagIds: z.array(z.string()).max(100).optional() })\n              .describe(\n                'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n              )\n              .optional(),\n            publicTags: z\n              .object({ tagIds: z.array(z.string()).max(100).optional() })\n              .describe(\n                'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n              )\n              .optional(),\n          })\n          .describe('Tags')\n          .optional(),\n        subscriptionDetails: z\n          .object({\n            subscriptions: z\n              .array(\n                z.intersection(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Subscription ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    title: z\n                      .string()\n                      .describe('Subscription title.')\n                      .min(1)\n                      .max(20),\n                    description: z\n                      .string()\n                      .describe('Subscription description.')\n                      .max(60)\n                      .optional()\n                      .nullable(),\n                    visible: z\n                      .boolean()\n                      .describe(\n                        'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                      )\n                      .optional()\n                      .nullable(),\n                    frequency: z.enum([\n                      'UNDEFINED',\n                      'DAY',\n                      'WEEK',\n                      'MONTH',\n                      'YEAR',\n                    ]),\n                    interval: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                      )\n                      .min(1)\n                      .max(50)\n                      .optional()\n                      .nullable(),\n                    discount: z\n                      .intersection(\n                        z.object({ type: z.enum(['AMOUNT', 'PERCENT']) }),\n                        z.xor([\n                          z.object({\n                            percentOff: z.never().optional(),\n                            amountOff: z\n                              .string()\n                              .describe(\n                                'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                              ),\n                          }),\n                          z.object({\n                            amountOff: z.never().optional(),\n                            percentOff: z\n                              .number()\n                              .describe(\n                                'Percentage subtracted from the variant price when calculating subscription prices.'\n                              )\n                              .min(0.1)\n                              .max(99.9),\n                          }),\n                        ])\n                      )\n                      .describe(\n                        'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                      )\n                      .optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      billingCycles: z.never().optional(),\n                      autoRenewal: z\n                        .boolean()\n                        .describe(\n                          'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                        ),\n                    }),\n                    z.object({\n                      autoRenewal: z.never().optional(),\n                      billingCycles: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Number of billing cycles before subscription ends.'\n                        )\n                        .min(2)\n                        .max(999),\n                    }),\n                  ])\n                )\n              )\n              .min(1)\n              .max(6)\n              .optional(),\n            allowOneTimePurchases: z\n              .boolean()\n              .describe(\n                'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n              )\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n          )\n          .optional(),\n        variantSummary: z\n          .object({\n            variantCount: z\n              .number()\n              .int()\n              .describe('The total number of variants for the product.')\n              .optional(),\n            minPriceVariant: z\n              .intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Variant ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  visible: z\n                    .boolean()\n                    .describe(\n                      \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                    )\n                    .optional()\n                    .nullable(),\n                  sku: z\n                    .string()\n                    .describe('Variant SKU (stock keeping unit).')\n                    .min(1)\n                    .max(40)\n                    .optional()\n                    .nullable(),\n                  barcode: z\n                    .string()\n                    .describe('Variant barcode.')\n                    .min(1)\n                    .max(40)\n                    .optional()\n                    .nullable(),\n                  choices: z\n                    .array(\n                      z.object({\n                        optionChoiceIds: z\n                          .object({\n                            optionId: z\n                              .string()\n                              .describe('Option ID.')\n                              .min(1)\n                              .max(36),\n                            choiceId: z\n                              .string()\n                              .describe('Choice ID.')\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              ),\n                          })\n                          .describe(\n                            \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                          )\n                          .optional(),\n                        optionChoiceNames: z\n                          .object({\n                            optionName: z\n                              .string()\n                              .describe('Option name.')\n                              .min(1)\n                              .optional(),\n                            choiceName: z\n                              .string()\n                              .describe('Choice name.')\n                              .min(1)\n                              .optional(),\n                            renderType: z\n                              .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                              .optional(),\n                          })\n                          .describe(\n                            'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                      })\n                    )\n                    .min(0)\n                    .max(6)\n                    .optional(),\n                  price: z\n                    .object({\n                      actualPrice: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          \"Variant's current selling price. Must be greater than or equal to 0.\"\n                        ),\n                      compareAtPrice: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                        )\n                        .optional(),\n                      priceAfterDiscount: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                        )\n                        .optional(),\n                    })\n                    .describe('Variant price.'),\n                  revenueDetails: z\n                    .object({\n                      cost: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe('Item cost.')\n                        .optional(),\n                      profit: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                        )\n                        .optional(),\n                      profitMargin: z\n                        .number()\n                        .describe(\n                          'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                        )\n                        .min(0)\n                        .max(1)\n                        .optional(),\n                    })\n                    .describe(\n                      'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                    )\n                    .optional(),\n                  media: z\n                    .intersection(\n                      z.object({\n                        altText: z\n                          .string()\n                          .describe('Image alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        displayName: z\n                          .string()\n                          .describe(\n                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                          )\n                          .max(80)\n                          .optional()\n                          .nullable(),\n                        mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                        thumbnail: z\n                          .object({\n                            url: z\n                              .string()\n                              .describe('Thumbnail url.')\n                              .url()\n                              .optional(),\n                            height: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail height.')\n                              .optional(),\n                            width: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail width.')\n                              .optional(),\n                            altText: z\n                              .string()\n                              .describe('Thumbnail alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        uploadId: z\n                          .string()\n                          .describe(\n                            'ID used to upload media to Wix Media Manager.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                      }),\n                      z.intersection(\n                        z.xor([\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z.never().optional(),\n                          }),\n                          z.object({\n                            url: z.never().optional(),\n                            _id: z\n                              .string()\n                              .describe(\n                                'Set media by ID of an existing file in Wix Media Manager.'\n                              )\n                              .min(1)\n                              .max(200),\n                          }),\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z\n                              .string()\n                              .describe(\n                                'Set media using an external media URL.'\n                              )\n                              .url(),\n                          }),\n                        ]),\n                        z.xor([\n                          z.object({\n                            image: z.never().optional(),\n                            video: z.never().optional(),\n                          }),\n                          z.object({\n                            video: z.never().optional(),\n                            image: z\n                              .string()\n                              .describe(\n                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                              ),\n                          }),\n                          z.object({\n                            image: z.never().optional(),\n                            video: z\n                              .string()\n                              .describe(\n                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                    .describe('Variant media.')\n                    .optional(),\n                  subscriptionPricesInfo: z\n                    .object({\n                      subscriptionPrices: z\n                        .array(\n                          z.object({\n                            subscriptionId: z\n                              .string()\n                              .describe('Subscription ID.')\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                            price: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                              )\n                              .optional(),\n                            pricePerUnit: z\n                              .object({\n                                value: z\n                                  .string()\n                                  .describe(\n                                    'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                  )\n                                  .optional(),\n                                description: z\n                                  .string()\n                                  .describe(\n                                    'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                                priceAfterDiscount: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe('Price per unit info.')\n                              .optional(),\n                            priceAfterDiscount: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                              )\n                              .optional(),\n                          })\n                        )\n                        .max(6)\n                        .optional(),\n                    })\n                    .describe(\n                      'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                  inventoryStatus: z\n                    .object({\n                      inStock: z\n                        .boolean()\n                        .describe('Whether the variant is in stock.')\n                        .optional(),\n                      preorderEnabled: z\n                        .boolean()\n                        .describe(\n                          'Whether preorder is enabled for this variant.'\n                        )\n                        .optional(),\n                    })\n                    .describe('Variant inventory status.')\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    physicalProperties: z.never().optional(),\n                    digitalProperties: z.never().optional(),\n                  }),\n                  z.object({\n                    digitalProperties: z.never().optional(),\n                    physicalProperties: z\n                      .object({\n                        weight: z\n                          .number()\n                          .describe(\n                            'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                          )\n                          .min(0)\n                          .max(999999999.99)\n                          .optional()\n                          .nullable(),\n                        pricePerUnit: z\n                          .object({\n                            settings: z\n                              .object({\n                                quantity: z\n                                  .number()\n                                  .describe(\n                                    'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                  )\n                                  .min(0.01)\n                                  .max(999999999.99)\n                                  .optional(),\n                                measurementUnit: z\n                                  .enum([\n                                    'UNSPECIFIED',\n                                    'ML',\n                                    'CL',\n                                    'L',\n                                    'CBM',\n                                    'MG',\n                                    'G',\n                                    'KG',\n                                    'MM',\n                                    'CM',\n                                    'M',\n                                    'SQM',\n                                    'OZ',\n                                    'LB',\n                                    'FLOZ',\n                                    'PT',\n                                    'QT',\n                                    'GAL',\n                                    'IN',\n                                    'FT',\n                                    'YD',\n                                    'SQFT',\n                                  ])\n                                  .describe(\n                                    'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                              )\n                              .optional(),\n                            value: z\n                              .string()\n                              .describe(\n                                \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                              )\n                              .optional(),\n                            description: z\n                              .string()\n                              .describe(\n                                'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(100)\n                              .optional()\n                              .nullable(),\n                            priceAfterDiscount: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                          )\n                          .optional(),\n                        productDimensions: z\n                          .object({\n                            length: z\n                              .string()\n                              .describe(\n                                'Length. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            width: z\n                              .string()\n                              .describe(\n                                'Width. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            height: z\n                              .string()\n                              .describe(\n                                'Height. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            unit: z\n                              .enum([\n                                'UNKNOWN_DIMENSIONS_UNIT',\n                                'MM',\n                                'CM',\n                                'M',\n                                'IN',\n                                'FT',\n                                'YD',\n                              ])\n                              .describe(\n                                'Unit of measurement for dimensions (length, width, height).'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Product dimensions (length, width, height of the physical product).'\n                          )\n                          .optional(),\n                        packageDimensions: z\n                          .object({\n                            length: z\n                              .string()\n                              .describe(\n                                'Length. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            width: z\n                              .string()\n                              .describe(\n                                'Width. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            height: z\n                              .string()\n                              .describe(\n                                'Height. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            unit: z\n                              .enum([\n                                'UNKNOWN_DIMENSIONS_UNIT',\n                                'MM',\n                                'CM',\n                                'M',\n                                'IN',\n                                'FT',\n                                'YD',\n                              ])\n                              .describe(\n                                'Unit of measurement for dimensions (length, width, height).'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Package dimensions (length, width, height of the shipping package).'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Physical properties. Must be passed when `productType: PHYSICAL`'\n                      ),\n                  }),\n                  z.object({\n                    physicalProperties: z.never().optional(),\n                    digitalProperties: z\n                      .object({\n                        digitalFile: z\n                          .object({\n                            _id: z\n                              .string()\n                              .describe('Media ID in media manager.')\n                              .min(1)\n                              .max(100)\n                              .optional(),\n                            fileName: z\n                              .string()\n                              .describe('Original file name.')\n                              .min(1)\n                              .max(1000)\n                              .optional(),\n                            fileSize: z\n                              .string()\n                              .describe('Original file size.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                            fileType: z\n                              .enum([\n                                'UNSPECIFIED',\n                                'SECURE_PICTURE',\n                                'SECURE_VIDEO',\n                                'SECURE_DOCUMENT',\n                                'SECURE_MUSIC',\n                                'SECURE_ARCHIVE',\n                                'SECURE_RAW',\n                              ])\n                              .describe('File type.')\n                              .optional(),\n                          })\n                          .describe(\n                            'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Digital properties. Must be passed when `productType: DIGITAL`'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\n                'The variant with the lowest `actualPrice` among visible variants for this product.\\n\\nHidden variants are excluded; ties are broken by variant order. Empty if the product has no visible variants.\\n> **Note:** Returned only when you pass `\"MIN_PRICE_VARIANT\"` to the `fields` array in Products API requests.'\n              )\n              .optional(),\n          })\n          .describe('The total number of variants for the product.')\n          .optional(),\n      }),\n      z.xor([\n        z.object({ physicalProperties: z.never().optional() }),\n        z.object({\n          physicalProperties: z\n            .object({\n              pricePerUnit: z\n                .object({\n                  quantity: z\n                    .number()\n                    .describe(\n                      'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                    )\n                    .min(0.01)\n                    .max(999999999.99)\n                    .optional(),\n                  measurementUnit: z\n                    .enum([\n                      'UNSPECIFIED',\n                      'ML',\n                      'CL',\n                      'L',\n                      'CBM',\n                      'MG',\n                      'G',\n                      'KG',\n                      'MM',\n                      'CM',\n                      'M',\n                      'SQM',\n                      'OZ',\n                      'LB',\n                      'FLOZ',\n                      'PT',\n                      'QT',\n                      'GAL',\n                      'IN',\n                      'FT',\n                      'YD',\n                      'SQFT',\n                    ])\n                    .describe(\n                      'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n                )\n                .optional(),\n              fulfillerId: z\n                .string()\n                .describe('Fulfiller ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              shippingWeightRange: z\n                .object({\n                  minValue: z\n                    .number()\n                    .describe(\n                      'Minimum weight across all variants associated with this product.'\n                    )\n                    .min(0)\n                    .max(999999999.99)\n                    .optional(),\n                  maxValue: z\n                    .number()\n                    .describe(\n                      'Maximum weight across all variants associated with this product.'\n                    )\n                    .min(0)\n                    .max(999999999.99)\n                    .optional(),\n                })\n                .describe(\n                  'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n                )\n                .optional(),\n              pricePerUnitRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      value: z\n                        .string()\n                        .describe(\n                          \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                        )\n                        .optional(),\n                      description: z\n                        .string()\n                        .describe(\n                          'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                        )\n                        .max(100)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum price per unit across all variants.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      value: z\n                        .string()\n                        .describe(\n                          \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                        )\n                        .optional(),\n                      description: z\n                        .string()\n                        .describe(\n                          'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                        )\n                        .max(100)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum price per unit across all variants.')\n                    .optional(),\n                })\n                .describe(\n                  'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n                )\n                .optional(),\n              weightMeasurementUnitInfo: z\n                .object({\n                  weightMeasurementUnit: z\n                    .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                    .describe('Weight measurement unit.')\n                    .optional(),\n                })\n                .describe(\n                  'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              deliveryProfileId: z\n                .string()\n                .describe('Delivery profile ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n            ),\n        }),\n      ])\n    )\n    .describe('Product to update.'),\n  options: z\n    .object({\n      fields: z\n        .array(\n          z.enum([\n            'URL',\n            'CURRENCY',\n            'INFO_SECTION',\n            'MERCHANT_DATA',\n            'PLAIN_DESCRIPTION',\n            'INFO_SECTION_PLAIN_DESCRIPTION',\n            'SUBSCRIPTION_PRICES_INFO',\n            'BREADCRUMBS_INFO',\n            'WEIGHT_MEASUREMENT_UNIT_INFO',\n            'VARIANT_OPTION_CHOICE_NAMES',\n            'MEDIA_ITEMS_INFO',\n            'DESCRIPTION',\n            'DIRECT_CATEGORIES_INFO',\n            'ALL_CATEGORIES_INFO',\n            'INFO_SECTION_DESCRIPTION',\n            'THUMBNAIL',\n            'PRODUCT_CHOICES_MEDIA_REFERENCES',\n            'PRODUCT_CHOICES_DISPLAY_IMAGE',\n            'DISCOUNT_INFO',\n          ])\n        )\n        .max(100)\n        .optional(),\n    })\n    .optional(),\n});\nexport const UpdateProductResponse = z.intersection(\n  z.object({\n    _id: z\n      .string()\n      .describe('Product ID.')\n      .min(1)\n      .max(36)\n      .optional()\n      .nullable(),\n    revision: z\n      .string()\n      .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n      .describe(\n        'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product.'\n      )\n      .optional()\n      .nullable(),\n    _createdDate: z\n      .date()\n      .describe('Date and time the product was created.')\n      .optional()\n      .nullable(),\n    _updatedDate: z\n      .date()\n      .describe('Date and time the product was updated.')\n      .optional()\n      .nullable(),\n    name: z\n      .string()\n      .describe('Product name. Translatable.')\n      .min(1)\n      .max(80)\n      .optional()\n      .nullable(),\n    slug: z\n      .string()\n      .describe(\n        'Product slug. A URL-friendly identifier used in the product page address.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n      )\n      .min(1)\n      .max(300)\n      .optional()\n      .nullable(),\n    url: z\n      .string()\n      .describe(\n        'URL to the site\\'s product page.\\n\\n> **Note:** Returned only when you pass `\"URL\"` to the `fields` array in Products API requests.'\n      )\n      .optional(),\n    description: z\n      .any()\n      .describe(\n        'Product description using rich content.\\n> **Note:** Returned only when you pass `\"DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n      )\n      .optional(),\n    plainDescription: z\n      .string()\n      .describe(\n        'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n      )\n      .max(16000)\n      .optional()\n      .nullable(),\n    visible: z\n      .boolean()\n      .describe(\n        \"Whether the product is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the default variant's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n      )\n      .optional()\n      .nullable(),\n    visibleInPos: z\n      .boolean()\n      .describe(\n        'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n      )\n      .optional()\n      .nullable(),\n    media: z\n      .object({\n        main: z\n          .intersection(\n            z.object({\n              altText: z\n                .string()\n                .describe('Image alt text.')\n                .min(1)\n                .max(1000)\n                .optional()\n                .nullable(),\n              displayName: z\n                .string()\n                .describe(\n                  \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                )\n                .max(80)\n                .optional()\n                .nullable(),\n              mediaType: z\n                .enum(['IMAGE', 'VIDEO'])\n                .describe('Media type.')\n                .optional(),\n              thumbnail: z\n                .object({\n                  url: z.string().describe('Thumbnail url.').url().optional(),\n                  height: z\n                    .number()\n                    .int()\n                    .describe('Thumbnail height.')\n                    .optional(),\n                  width: z\n                    .number()\n                    .int()\n                    .describe('Thumbnail width.')\n                    .optional(),\n                  altText: z\n                    .string()\n                    .describe('Thumbnail alt text.')\n                    .min(1)\n                    .max(1000)\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              uploadId: z\n                .string()\n                .describe('ID used to upload media to Wix Media Manager.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n            }),\n            z.intersection(\n              z.xor([\n                z.object({\n                  _id: z.never().optional(),\n                  url: z.never().optional(),\n                }),\n                z.object({\n                  url: z.never().optional(),\n                  _id: z\n                    .string()\n                    .describe(\n                      'Set media by ID of an existing file in Wix Media Manager.'\n                    )\n                    .min(1)\n                    .max(200),\n                }),\n                z.object({\n                  _id: z.never().optional(),\n                  url: z\n                    .string()\n                    .describe('Set media using an external media URL.')\n                    .url(),\n                }),\n              ]),\n              z.xor([\n                z.object({\n                  image: z.never().optional(),\n                  video: z.never().optional(),\n                }),\n                z.object({\n                  video: z.never().optional(),\n                  image: z\n                    .string()\n                    .describe(\n                      \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                    ),\n                }),\n                z.object({\n                  image: z.never().optional(),\n                  video: z\n                    .string()\n                    .describe(\n                      \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                    ),\n                }),\n              ])\n            )\n          )\n          .describe(\n            'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n          )\n          .optional(),\n        itemsInfo: z\n          .object({\n            items: z\n              .array(\n                z.intersection(\n                  z.object({\n                    altText: z\n                      .string()\n                      .describe('Image alt text.')\n                      .min(1)\n                      .max(1000)\n                      .optional()\n                      .nullable(),\n                    displayName: z\n                      .string()\n                      .describe(\n                        \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                      )\n                      .max(80)\n                      .optional()\n                      .nullable(),\n                    mediaType: z\n                      .enum(['IMAGE', 'VIDEO'])\n                      .describe('Media type.')\n                      .optional(),\n                    thumbnail: z\n                      .object({\n                        url: z\n                          .string()\n                          .describe('Thumbnail url.')\n                          .url()\n                          .optional(),\n                        height: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail height.')\n                          .optional(),\n                        width: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail width.')\n                          .optional(),\n                        altText: z\n                          .string()\n                          .describe('Thumbnail alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    uploadId: z\n                      .string()\n                      .describe('ID used to upload media to Wix Media Manager.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                  }),\n                  z.intersection(\n                    z.xor([\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z.never().optional(),\n                      }),\n                      z.object({\n                        url: z.never().optional(),\n                        _id: z\n                          .string()\n                          .describe(\n                            'Set media by ID of an existing file in Wix Media Manager.'\n                          )\n                          .min(1)\n                          .max(200),\n                      }),\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z\n                          .string()\n                          .describe('Set media using an external media URL.')\n                          .url(),\n                      }),\n                    ]),\n                    z.xor([\n                      z.object({\n                        image: z.never().optional(),\n                        video: z.never().optional(),\n                      }),\n                      z.object({\n                        video: z.never().optional(),\n                        image: z\n                          .string()\n                          .describe(\n                            \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                          ),\n                      }),\n                      z.object({\n                        image: z.never().optional(),\n                        video: z\n                          .string()\n                          .describe(\n                            \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                          ),\n                      }),\n                    ])\n                  )\n                )\n              )\n              .max(50)\n              .optional(),\n          })\n          .describe(\n            'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n      })\n      .describe(\n        'Product media items. For a detailed explanation of product media, see [About Product Media](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/about-product-media).'\n      )\n      .optional(),\n    seoData: z\n      .object({\n        tags: z\n          .array(\n            z.object({\n              type: z\n                .string()\n                .describe(\n                  'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                )\n                .optional(),\n              props: z\n                .record(z.string(), z.any())\n                .describe(\n                  'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                )\n                .optional()\n                .nullable(),\n              meta: z\n                .record(z.string(), z.any())\n                .describe(\n                  'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                )\n                .optional()\n                .nullable(),\n              children: z\n                .string()\n                .describe(\n                  'SEO tag inner content. For example, `<title> inner content </title>`.'\n                )\n                .optional(),\n              custom: z\n                .boolean()\n                .describe(\n                  'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                )\n                .optional(),\n              disabled: z\n                .boolean()\n                .describe(\n                  \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                )\n                .optional(),\n            })\n          )\n          .optional(),\n        settings: z\n          .object({\n            preventAutoRedirect: z\n              .boolean()\n              .describe(\n                'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n              )\n              .optional(),\n            keywords: z\n              .array(\n                z.object({\n                  term: z.string().describe('Keyword value.').optional(),\n                  isMain: z\n                    .boolean()\n                    .describe('Whether the keyword is the main focus keyword.')\n                    .optional(),\n                  origin: z\n                    .string()\n                    .describe(\n                      'The source that added the keyword terms to the SEO settings.'\n                    )\n                    .max(1000)\n                    .optional()\n                    .nullable(),\n                })\n              )\n              .max(5)\n              .optional(),\n          })\n          .describe('SEO general settings.')\n          .optional(),\n      })\n      .describe('Product SEO data.')\n      .optional(),\n    taxGroupId: z\n      .string()\n      .describe(\n        '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n      )\n      .regex(\n        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n        'Must be a valid GUID'\n      )\n      .optional()\n      .nullable(),\n    options: z\n      .array(\n        z.intersection(\n          z.object({\n            _id: z\n              .string()\n              .describe(\n                'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n              )\n              .min(1)\n              .max(36)\n              .optional()\n              .nullable(),\n            name: z\n              .string()\n              .describe('Option name.')\n              .min(1)\n              .max(50)\n              .optional()\n              .nullable(),\n            optionRenderType: z\n              .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n              .describe('Option render type.')\n              .optional(),\n            key: z\n              .string()\n              .describe(\n                'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n              )\n              .min(1)\n              .max(50)\n              .optional(),\n          }),\n          z.xor([\n            z.object({ choicesSettings: z.never().optional() }),\n            z.object({\n              choicesSettings: z\n                .object({\n                  choices: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          choiceId: z\n                            .string()\n                            .describe('Choice ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          linkedMedia: z\n                            .array(\n                              z.intersection(\n                                z.object({\n                                  altText: z\n                                    .string()\n                                    .describe('Image alt text.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                  displayName: z\n                                    .string()\n                                    .describe(\n                                      \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                    )\n                                    .max(80)\n                                    .optional()\n                                    .nullable(),\n                                  mediaType: z\n                                    .enum(['IMAGE', 'VIDEO'])\n                                    .describe('Media type.')\n                                    .optional(),\n                                  thumbnail: z\n                                    .object({\n                                      url: z\n                                        .string()\n                                        .describe('Thumbnail url.')\n                                        .url()\n                                        .optional(),\n                                      height: z\n                                        .number()\n                                        .int()\n                                        .describe('Thumbnail height.')\n                                        .optional(),\n                                      width: z\n                                        .number()\n                                        .int()\n                                        .describe('Thumbnail width.')\n                                        .optional(),\n                                      altText: z\n                                        .string()\n                                        .describe('Thumbnail alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .optional(),\n                                  uploadId: z\n                                    .string()\n                                    .describe(\n                                      'ID used to upload media to Wix Media Manager.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                }),\n                                z.intersection(\n                                  z.xor([\n                                    z.object({\n                                      _id: z.never().optional(),\n                                      url: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      url: z.never().optional(),\n                                      _id: z\n                                        .string()\n                                        .describe(\n                                          'Set media by ID of an existing file in Wix Media Manager.'\n                                        )\n                                        .min(1)\n                                        .max(200),\n                                    }),\n                                    z.object({\n                                      _id: z.never().optional(),\n                                      url: z\n                                        .string()\n                                        .describe(\n                                          'Set media using an external media URL.'\n                                        )\n                                        .url(),\n                                    }),\n                                  ]),\n                                  z.xor([\n                                    z.object({\n                                      image: z.never().optional(),\n                                      video: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      video: z.never().optional(),\n                                      image: z\n                                        .string()\n                                        .describe(\n                                          \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                        ),\n                                    }),\n                                    z.object({\n                                      image: z.never().optional(),\n                                      video: z\n                                        .string()\n                                        .describe(\n                                          \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                        ),\n                                    }),\n                                  ])\n                                )\n                              )\n                            )\n                            .max(15)\n                            .optional(),\n                          choiceType: z\n                            .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                            .describe('Choice type.')\n                            .optional(),\n                          key: z\n                            .string()\n                            .describe(\n                              'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                            )\n                            .min(1)\n                            .max(50)\n                            .optional(),\n                          name: z\n                            .string()\n                            .describe(\n                              'Choice name. For text choices, this field also contains the choice value.'\n                            )\n                            .min(1)\n                            .max(50)\n                            .optional()\n                            .nullable(),\n                          inStock: z\n                            .boolean()\n                            .describe(\n                              'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                            )\n                            .optional(),\n                          visible: z\n                            .boolean()\n                            .describe(\n                              'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                            )\n                            .optional(),\n                          displayImage: z\n                            .string()\n                            .describe(\n                              'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                            )\n                            .optional(),\n                          media: z\n                            .object({\n                              items: z\n                                .array(\n                                  z.intersection(\n                                    z.object({}),\n                                    z.xor([\n                                      z.object({\n                                        mediaId: z.never().optional(),\n                                        url: z.never().optional(),\n                                      }),\n                                      z.object({\n                                        url: z.never().optional(),\n                                        mediaId: z\n                                          .string()\n                                          .describe(\n                                            'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                          )\n                                          .min(1)\n                                          .max(200),\n                                      }),\n                                      z.object({\n                                        mediaId: z.never().optional(),\n                                        url: z\n                                          .string()\n                                          .describe(\n                                            'External media URL. Can be used only on write.'\n                                          )\n                                          .url(),\n                                      }),\n                                    ])\n                                  )\n                                )\n                                .max(15)\n                                .optional(),\n                            })\n                            .describe(\n                              'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                            )\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({ colorCode: z.never().optional() }),\n                          z.object({\n                            colorCode: z\n                              .string()\n                              .describe(\n                                'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                              )\n                              .min(3)\n                              .max(20),\n                          }),\n                        ])\n                      )\n                    )\n                    .min(1)\n                    .max(100)\n                    .optional(),\n                })\n                .describe('Choices settings.'),\n            }),\n          ])\n        )\n      )\n      .max(6)\n      .optional(),\n    modifiers: z\n      .array(\n        z.intersection(\n          z.object({\n            _id: z\n              .string()\n              .describe(\n                'ID of a customization with `customizationType: MODIFIER`.'\n              )\n              .min(1)\n              .max(36)\n              .optional()\n              .nullable(),\n            name: z\n              .string()\n              .describe('Modifier title.')\n              .min(1)\n              .max(50)\n              .optional()\n              .nullable(),\n            modifierRenderType: z\n              .enum(['FREE_TEXT', 'TEXT_CHOICES', 'SWATCH_CHOICES'])\n              .describe('Modifier render type.')\n              .optional(),\n            mandatory: z\n              .boolean()\n              .describe('Whether customer input is required for this modifier.')\n              .optional(),\n            key: z\n              .string()\n              .describe(\n                'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n              )\n              .min(1)\n              .max(50)\n              .optional(),\n          }),\n          z.xor([\n            z.object({\n              freeTextSettings: z.never().optional(),\n              choicesSettings: z.never().optional(),\n            }),\n            z.object({\n              choicesSettings: z.never().optional(),\n              freeTextSettings: z\n                .object({\n                  minCharCount: z\n                    .number()\n                    .int()\n                    .describe('Minimum number of characters.')\n                    .optional(),\n                  maxCharCount: z\n                    .number()\n                    .int()\n                    .describe('Maximum number of characters.')\n                    .max(500)\n                    .optional(),\n                  defaultAddedPrice: z\n                    .string()\n                    .describe(\n                      \"Default amount to be added to the product's price.\"\n                    )\n                    .optional()\n                    .nullable(),\n                  title: z\n                    .string()\n                    .describe('Title of the text to be input by the customer.')\n                    .min(1)\n                    .max(150)\n                    .optional(),\n                  key: z\n                    .string()\n                    .describe(\n                      'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                    )\n                    .min(1)\n                    .max(150)\n                    .optional(),\n                })\n                .describe('Free text modifier settings.'),\n            }),\n            z.object({\n              freeTextSettings: z.never().optional(),\n              choicesSettings: z\n                .object({\n                  choices: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          choiceId: z\n                            .string()\n                            .describe('Choice ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          linkedMedia: z\n                            .array(\n                              z.intersection(\n                                z.object({\n                                  altText: z\n                                    .string()\n                                    .describe('Image alt text.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                  displayName: z\n                                    .string()\n                                    .describe(\n                                      \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                    )\n                                    .max(80)\n                                    .optional()\n                                    .nullable(),\n                                  mediaType: z\n                                    .enum(['IMAGE', 'VIDEO'])\n                                    .describe('Media type.')\n                                    .optional(),\n                                  thumbnail: z\n                                    .object({\n                                      url: z\n                                        .string()\n                                        .describe('Thumbnail url.')\n                                        .url()\n                                        .optional(),\n                                      height: z\n                                        .number()\n                                        .int()\n                                        .describe('Thumbnail height.')\n                                        .optional(),\n                                      width: z\n                                        .number()\n                                        .int()\n                                        .describe('Thumbnail width.')\n                                        .optional(),\n                                      altText: z\n                                        .string()\n                                        .describe('Thumbnail alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .optional(),\n                                  uploadId: z\n                                    .string()\n                                    .describe(\n                                      'ID used to upload media to Wix Media Manager.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                }),\n                                z.intersection(\n                                  z.xor([\n                                    z.object({\n                                      _id: z.never().optional(),\n                                      url: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      url: z.never().optional(),\n                                      _id: z\n                                        .string()\n                                        .describe(\n                                          'Set media by ID of an existing file in Wix Media Manager.'\n                                        )\n                                        .min(1)\n                                        .max(200),\n                                    }),\n                                    z.object({\n                                      _id: z.never().optional(),\n                                      url: z\n                                        .string()\n                                        .describe(\n                                          'Set media using an external media URL.'\n                                        )\n                                        .url(),\n                                    }),\n                                  ]),\n                                  z.xor([\n                                    z.object({\n                                      image: z.never().optional(),\n                                      video: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      video: z.never().optional(),\n                                      image: z\n                                        .string()\n                                        .describe(\n                                          \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                        ),\n                                    }),\n                                    z.object({\n                                      image: z.never().optional(),\n                                      video: z\n                                        .string()\n                                        .describe(\n                                          \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                        ),\n                                    }),\n                                  ])\n                                )\n                              )\n                            )\n                            .max(15)\n                            .optional(),\n                          choiceType: z\n                            .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                            .describe('Choice type.')\n                            .optional(),\n                          key: z\n                            .string()\n                            .describe(\n                              'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                            )\n                            .min(1)\n                            .max(50)\n                            .optional(),\n                          name: z\n                            .string()\n                            .describe('Choice name.')\n                            .min(1)\n                            .max(50)\n                            .optional()\n                            .nullable(),\n                          addedPrice: z\n                            .string()\n                            .describe('Added price.')\n                            .optional()\n                            .nullable(),\n                          displayImage: z\n                            .string()\n                            .describe(\n                              'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                            )\n                            .optional(),\n                          media: z\n                            .object({\n                              items: z\n                                .array(\n                                  z.intersection(\n                                    z.object({}),\n                                    z.xor([\n                                      z.object({\n                                        mediaId: z.never().optional(),\n                                        url: z.never().optional(),\n                                      }),\n                                      z.object({\n                                        url: z.never().optional(),\n                                        mediaId: z\n                                          .string()\n                                          .describe(\n                                            'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                          )\n                                          .min(1)\n                                          .max(200),\n                                      }),\n                                      z.object({\n                                        mediaId: z.never().optional(),\n                                        url: z\n                                          .string()\n                                          .describe(\n                                            'External media URL. Can be used only on write.'\n                                          )\n                                          .url(),\n                                      }),\n                                    ])\n                                  )\n                                )\n                                .max(15)\n                                .optional(),\n                            })\n                            .describe(\n                              'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                            )\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({ colorCode: z.never().optional() }),\n                          z.object({\n                            colorCode: z\n                              .string()\n                              .describe(\n                                'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                              )\n                              .min(3)\n                              .max(20),\n                          }),\n                        ])\n                      )\n                    )\n                    .min(1)\n                    .max(100)\n                    .optional(),\n                })\n                .describe('Choice settings.'),\n            }),\n          ])\n        )\n      )\n      .max(10)\n      .optional(),\n    brand: z\n      .object({\n        _id: z\n          .string()\n          .describe('Brand ID.')\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        name: z.string().describe('Brand name.').max(50).optional().nullable(),\n      })\n      .describe(\n        \"Product [brand](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/brands-v3/introduction).\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n      )\n      .optional(),\n    infoSections: z\n      .array(\n        z.object({\n          _id: z\n            .string()\n            .describe('Info section ID.')\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          uniqueName: z\n            .string()\n            .describe(\n              'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n            )\n            .max(100)\n            .optional()\n            .nullable(),\n          title: z\n            .string()\n            .describe(\n              'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n            )\n            .min(1)\n            .max(50)\n            .optional()\n            .nullable(),\n          description: z\n            .any()\n            .describe(\n              'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n            )\n            .optional(),\n          plainDescription: z\n            .string()\n            .describe(\n              'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n            )\n            .max(16000)\n            .optional()\n            .nullable(),\n        })\n      )\n      .max(10)\n      .optional(),\n    ribbon: z\n      .object({\n        _id: z\n          .string()\n          .describe('Ribbon ID.')\n          .min(1)\n          .max(36)\n          .optional()\n          .nullable(),\n        name: z.string().describe('Ribbon name.').max(30).optional().nullable(),\n      })\n      .describe(\n        \"Primary [ribbon](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/ribbons-v3/introduction) displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n      )\n      .optional(),\n    directCategoriesInfo: z\n      .object({\n        categories: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('Category ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              index: z\n                .number()\n                .int()\n                .describe(\n                  'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                )\n                .min(0)\n                .max(200)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(2000)\n          .optional(),\n      })\n      .describe(\n        'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product.\\n\\nUpdated automatically when a product is added/removed from a category, when an item is moved within a category, or when a category is deleted.\\n> **Note:** Returned only when you pass `\"DIRECT_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n      )\n      .optional(),\n    allCategoriesInfo: z\n      .object({\n        categories: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('Category ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              index: z\n                .number()\n                .int()\n                .describe(\n                  'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                )\n                .min(0)\n                .max(200)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(2000)\n          .optional(),\n      })\n      .describe(\n        'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product, as well as their parent categories.\\n> **Note:** Returned only when you pass `\"ALL_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n      )\n      .optional(),\n    mainCategoryId: z\n      .string()\n      .describe(\n        'The ID of the product\\'s primary direct [category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction), which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n      )\n      .regex(\n        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n        'Must be a valid GUID'\n      )\n      .optional()\n      .nullable(),\n    costRange: z\n      .object({\n        minValue: z\n          .object({\n            amount: z\n              .string()\n              .describe(\n                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n              )\n              .optional(),\n            formattedAmount: z\n              .string()\n              .describe(\n                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n              )\n              .max(20)\n              .optional()\n              .nullable(),\n          })\n          .describe('Minimum value.')\n          .optional(),\n        maxValue: z\n          .object({\n            amount: z\n              .string()\n              .describe(\n                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n              )\n              .optional(),\n            formattedAmount: z\n              .string()\n              .describe(\n                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n              )\n              .max(20)\n              .optional()\n              .nullable(),\n          })\n          .describe('Maximum value.')\n          .optional(),\n      })\n      .describe(\n        'Product cost range - minimum and maximum costs of all product variants.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n      )\n      .optional(),\n    inventory: z\n      .object({\n        availabilityStatus: z\n          .enum(['IN_STOCK', 'OUT_OF_STOCK', 'PARTIALLY_OUT_OF_STOCK'])\n          .describe('Current availability status.')\n          .optional(),\n        preorderStatus: z\n          .enum(['ENABLED', 'DISABLED', 'PARTIALLY_ENABLED'])\n          .describe('Current preorder status.')\n          .optional(),\n        preorderAvailability: z\n          .enum(['ALL_VARIANTS', 'NO_VARIANTS', 'SOME_VARIANTS'])\n          .describe('Preorder availability status.')\n          .optional(),\n      })\n      .describe(\n        'Product inventory info.\\n\\n> **Note:** This field reflects the aggregated inventory status from the default location only. Use the [Inventory Items API](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/inventory-items-v3/introduction) to manage inventory for specific locations. Learn more about [inventory management](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-inventory-management).'\n      )\n      .optional(),\n    productType: z\n      .enum(['PHYSICAL', 'DIGITAL'])\n      .describe(\n        'Product type: `PHYSICAL` for tangible goods that require shipping, or `DIGITAL` for downloadable content.\\n\\nWhen passing `productType: PHYSICAL`, you must also pass `physicalProperties`. When passing `productType: DIGITAL`, you can optionally pass `digitalProperties` in each variant.'\n      )\n      .optional(),\n    handle: z\n      .string()\n      .describe(\n        \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n      )\n      .min(1)\n      .max(100)\n      .optional()\n      .nullable(),\n    currency: z\n      .string()\n      .describe(\n        'Currency used for the pricing of this product, in [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes) format.\\n\\nDefaults to the currency defined in the site settings, unless specified in the request\\'s `x-wix-currency` header.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n      )\n      .optional()\n      .nullable(),\n    breadcrumbsInfo: z\n      .object({\n        breadcrumbs: z\n          .array(\n            z.object({\n              categoryId: z\n                .string()\n                .describe('Category ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              categoryName: z\n                .string()\n                .describe('Category name.')\n                .min(1)\n                .max(80)\n                .optional(),\n              categorySlug: z\n                .string()\n                .describe('Category slug.')\n                .min(1)\n                .max(100)\n                .optional(),\n            })\n          )\n          .max(5)\n          .optional(),\n      })\n      .describe(\n        'Breadcrumbs of the `mainCategoryId`. Used to navigate to parent [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction). Useful for building navigation UI and for SEO purposes.\\n> **Note:** Returned only when you pass `\"BREADCRUMBS_INFO\"` to the `fields` array in Products API requests.'\n      )\n      .optional(),\n    actualPriceRange: z\n      .object({\n        minValue: z\n          .object({\n            amount: z\n              .string()\n              .describe(\n                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n              )\n              .optional(),\n            formattedAmount: z\n              .string()\n              .describe(\n                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n              )\n              .max(20)\n              .optional()\n              .nullable(),\n          })\n          .describe('Minimum value.')\n          .optional(),\n        maxValue: z\n          .object({\n            amount: z\n              .string()\n              .describe(\n                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n              )\n              .optional(),\n            formattedAmount: z\n              .string()\n              .describe(\n                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n              )\n              .max(20)\n              .optional()\n              .nullable(),\n          })\n          .describe('Maximum value.')\n          .optional(),\n      })\n      .describe(\n        'Minimum and maximum current selling prices across all product variants.'\n      )\n      .optional(),\n    compareAtPriceRange: z\n      .object({\n        minValue: z\n          .object({\n            amount: z\n              .string()\n              .describe(\n                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n              )\n              .optional(),\n            formattedAmount: z\n              .string()\n              .describe(\n                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n              )\n              .max(20)\n              .optional()\n              .nullable(),\n          })\n          .describe('Minimum value.')\n          .optional(),\n        maxValue: z\n          .object({\n            amount: z\n              .string()\n              .describe(\n                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n              )\n              .optional(),\n            formattedAmount: z\n              .string()\n              .describe(\n                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n              )\n              .max(20)\n              .optional()\n              .nullable(),\n          })\n          .describe('Maximum value.')\n          .optional(),\n      })\n      .describe(\n        'Minimum and maximum compare-at prices (original prices before discounts) across all product variants. Used to show savings to customers.'\n      )\n      .optional(),\n    variantsInfo: z\n      .object({\n        variants: z\n          .array(\n            z.intersection(\n              z.object({\n                _id: z\n                  .string()\n                  .describe('Variant ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                visible: z\n                  .boolean()\n                  .describe(\n                    \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                  )\n                  .optional()\n                  .nullable(),\n                sku: z\n                  .string()\n                  .describe('Variant SKU (stock keeping unit).')\n                  .min(1)\n                  .max(40)\n                  .optional()\n                  .nullable(),\n                barcode: z\n                  .string()\n                  .describe('Variant barcode.')\n                  .min(1)\n                  .max(40)\n                  .optional()\n                  .nullable(),\n                choices: z\n                  .array(\n                    z.object({\n                      optionChoiceIds: z\n                        .object({\n                          optionId: z\n                            .string()\n                            .describe('Option ID.')\n                            .min(1)\n                            .max(36)\n                            .optional(),\n                          choiceId: z\n                            .string()\n                            .describe('Choice ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                        )\n                        .optional(),\n                      optionChoiceNames: z\n                        .object({\n                          optionName: z\n                            .string()\n                            .describe('Option name.')\n                            .min(1)\n                            .optional(),\n                          choiceName: z\n                            .string()\n                            .describe('Choice name.')\n                            .min(1)\n                            .optional(),\n                          renderType: z\n                            .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                            .describe(\n                              'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                        )\n                        .optional(),\n                    })\n                  )\n                  .min(0)\n                  .max(6)\n                  .optional(),\n                price: z\n                  .object({\n                    actualPrice: z\n                      .object({\n                        amount: z\n                          .string()\n                          .describe(\n                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                          )\n                          .optional(),\n                        formattedAmount: z\n                          .string()\n                          .describe(\n                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(20)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        \"Variant's current selling price. Must be greater than or equal to 0.\"\n                      )\n                      .optional(),\n                    compareAtPrice: z\n                      .object({\n                        amount: z\n                          .string()\n                          .describe(\n                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                          )\n                          .optional(),\n                        formattedAmount: z\n                          .string()\n                          .describe(\n                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(20)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                      )\n                      .optional(),\n                    priceAfterDiscount: z\n                      .object({\n                        amount: z\n                          .string()\n                          .describe(\n                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                          )\n                          .optional(),\n                        formattedAmount: z\n                          .string()\n                          .describe(\n                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(20)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                      )\n                      .optional(),\n                  })\n                  .describe('Variant price.')\n                  .optional(),\n                revenueDetails: z\n                  .object({\n                    cost: z\n                      .object({\n                        amount: z\n                          .string()\n                          .describe(\n                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                          )\n                          .optional(),\n                        formattedAmount: z\n                          .string()\n                          .describe(\n                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(20)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe('Item cost.')\n                      .optional(),\n                    profit: z\n                      .object({\n                        amount: z\n                          .string()\n                          .describe(\n                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                          )\n                          .optional(),\n                        formattedAmount: z\n                          .string()\n                          .describe(\n                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(20)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                      )\n                      .optional(),\n                    profitMargin: z\n                      .number()\n                      .describe(\n                        'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                      )\n                      .min(0)\n                      .max(1)\n                      .optional(),\n                  })\n                  .describe(\n                    'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                  )\n                  .optional(),\n                media: z\n                  .intersection(\n                    z.object({\n                      altText: z\n                        .string()\n                        .describe('Image alt text.')\n                        .min(1)\n                        .max(1000)\n                        .optional()\n                        .nullable(),\n                      displayName: z\n                        .string()\n                        .describe(\n                          \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                        )\n                        .max(80)\n                        .optional()\n                        .nullable(),\n                      mediaType: z\n                        .enum(['IMAGE', 'VIDEO'])\n                        .describe('Media type.')\n                        .optional(),\n                      thumbnail: z\n                        .object({\n                          url: z\n                            .string()\n                            .describe('Thumbnail url.')\n                            .url()\n                            .optional(),\n                          height: z\n                            .number()\n                            .int()\n                            .describe('Thumbnail height.')\n                            .optional(),\n                          width: z\n                            .number()\n                            .int()\n                            .describe('Thumbnail width.')\n                            .optional(),\n                          altText: z\n                            .string()\n                            .describe('Thumbnail alt text.')\n                            .min(1)\n                            .max(1000)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                        )\n                        .optional(),\n                      uploadId: z\n                        .string()\n                        .describe(\n                          'ID used to upload media to Wix Media Manager.'\n                        )\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional(),\n                    }),\n                    z.intersection(\n                      z.xor([\n                        z.object({\n                          _id: z.never().optional(),\n                          url: z.never().optional(),\n                        }),\n                        z.object({\n                          url: z.never().optional(),\n                          _id: z\n                            .string()\n                            .describe(\n                              'Set media by ID of an existing file in Wix Media Manager.'\n                            )\n                            .min(1)\n                            .max(200),\n                        }),\n                        z.object({\n                          _id: z.never().optional(),\n                          url: z\n                            .string()\n                            .describe('Set media using an external media URL.')\n                            .url(),\n                        }),\n                      ]),\n                      z.xor([\n                        z.object({\n                          image: z.never().optional(),\n                          video: z.never().optional(),\n                        }),\n                        z.object({\n                          video: z.never().optional(),\n                          image: z\n                            .string()\n                            .describe(\n                              \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                            ),\n                        }),\n                        z.object({\n                          image: z.never().optional(),\n                          video: z\n                            .string()\n                            .describe(\n                              \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                            ),\n                        }),\n                      ])\n                    )\n                  )\n                  .describe('Variant media.')\n                  .optional(),\n                subscriptionPricesInfo: z\n                  .object({\n                    subscriptionPrices: z\n                      .array(\n                        z.object({\n                          subscriptionId: z\n                            .string()\n                            .describe('Subscription ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                          price: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                            )\n                            .optional(),\n                          pricePerUnit: z\n                            .object({\n                              value: z\n                                .string()\n                                .describe(\n                                  'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                )\n                                .optional(),\n                              description: z\n                                .string()\n                                .describe(\n                                  'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                            .describe('Price per unit info.')\n                            .optional(),\n                          priceAfterDiscount: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .max(6)\n                      .optional(),\n                  })\n                  .describe(\n                    'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                  )\n                  .optional(),\n                inventoryStatus: z\n                  .object({\n                    inStock: z\n                      .boolean()\n                      .describe('Whether the variant is in stock.')\n                      .optional(),\n                    preorderEnabled: z\n                      .boolean()\n                      .describe('Whether preorder is enabled for this variant.')\n                      .optional(),\n                  })\n                  .describe('Variant inventory status.')\n                  .optional(),\n              }),\n              z.xor([\n                z.object({\n                  physicalProperties: z.never().optional(),\n                  digitalProperties: z.never().optional(),\n                }),\n                z.object({\n                  digitalProperties: z.never().optional(),\n                  physicalProperties: z\n                    .object({\n                      weight: z\n                        .number()\n                        .describe(\n                          'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                        )\n                        .min(0)\n                        .max(999999999.99)\n                        .optional()\n                        .nullable(),\n                      pricePerUnit: z\n                        .object({\n                          settings: z\n                            .object({\n                              quantity: z\n                                .number()\n                                .describe(\n                                  'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                )\n                                .min(0.01)\n                                .max(999999999.99)\n                                .optional(),\n                              measurementUnit: z\n                                .enum([\n                                  'UNSPECIFIED',\n                                  'ML',\n                                  'CL',\n                                  'L',\n                                  'CBM',\n                                  'MG',\n                                  'G',\n                                  'KG',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'SQM',\n                                  'OZ',\n                                  'LB',\n                                  'FLOZ',\n                                  'PT',\n                                  'QT',\n                                  'GAL',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                  'SQFT',\n                                ])\n                                .describe(\n                                  'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                            )\n                            .optional(),\n                          value: z\n                            .string()\n                            .describe(\n                              \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                            )\n                            .optional(),\n                          description: z\n                            .string()\n                            .describe(\n                              'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(100)\n                            .optional()\n                            .nullable(),\n                          priceAfterDiscount: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                        )\n                        .optional(),\n                      productDimensions: z\n                        .object({\n                          length: z\n                            .string()\n                            .describe(\n                              'Length. Measurement unit is handled at the system level (metric/imperial).'\n                            )\n                            .optional()\n                            .nullable(),\n                          width: z\n                            .string()\n                            .describe(\n                              'Width. Measurement unit is handled at the system level (metric/imperial).'\n                            )\n                            .optional()\n                            .nullable(),\n                          height: z\n                            .string()\n                            .describe(\n                              'Height. Measurement unit is handled at the system level (metric/imperial).'\n                            )\n                            .optional()\n                            .nullable(),\n                          unit: z\n                            .enum([\n                              'UNKNOWN_DIMENSIONS_UNIT',\n                              'MM',\n                              'CM',\n                              'M',\n                              'IN',\n                              'FT',\n                              'YD',\n                            ])\n                            .describe(\n                              'Unit of measurement for dimensions (length, width, height).'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Product dimensions (length, width, height of the physical product).'\n                        )\n                        .optional(),\n                      packageDimensions: z\n                        .object({\n                          length: z\n                            .string()\n                            .describe(\n                              'Length. Measurement unit is handled at the system level (metric/imperial).'\n                            )\n                            .optional()\n                            .nullable(),\n                          width: z\n                            .string()\n                            .describe(\n                              'Width. Measurement unit is handled at the system level (metric/imperial).'\n                            )\n                            .optional()\n                            .nullable(),\n                          height: z\n                            .string()\n                            .describe(\n                              'Height. Measurement unit is handled at the system level (metric/imperial).'\n                            )\n                            .optional()\n                            .nullable(),\n                          unit: z\n                            .enum([\n                              'UNKNOWN_DIMENSIONS_UNIT',\n                              'MM',\n                              'CM',\n                              'M',\n                              'IN',\n                              'FT',\n                              'YD',\n                            ])\n                            .describe(\n                              'Unit of measurement for dimensions (length, width, height).'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Package dimensions (length, width, height of the shipping package).'\n                        )\n                        .optional(),\n                    })\n                    .describe(\n                      'Physical properties. Must be passed when `productType: PHYSICAL`'\n                    ),\n                }),\n                z.object({\n                  physicalProperties: z.never().optional(),\n                  digitalProperties: z\n                    .object({\n                      digitalFile: z\n                        .object({\n                          _id: z\n                            .string()\n                            .describe('Media ID in media manager.')\n                            .min(1)\n                            .max(100)\n                            .optional(),\n                          fileName: z\n                            .string()\n                            .describe('Original file name.')\n                            .min(1)\n                            .max(1000)\n                            .optional(),\n                          fileSize: z\n                            .string()\n                            .describe('Original file size.')\n                            .min(1)\n                            .max(1000)\n                            .optional()\n                            .nullable(),\n                          fileType: z\n                            .enum([\n                              'UNSPECIFIED',\n                              'SECURE_PICTURE',\n                              'SECURE_VIDEO',\n                              'SECURE_DOCUMENT',\n                              'SECURE_MUSIC',\n                              'SECURE_ARCHIVE',\n                              'SECURE_RAW',\n                            ])\n                            .describe('File type.')\n                            .optional(),\n                        })\n                        .describe(\n                          'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                        )\n                        .optional(),\n                    })\n                    .describe(\n                      'Digital properties. Must be passed when `productType: DIGITAL`'\n                    ),\n                }),\n              ])\n            )\n          )\n          .min(1)\n          .max(1000)\n          .optional(),\n      })\n      .describe(\n        'Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nYou must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).'\n      )\n      .optional(),\n    purchaseEligibility: z\n      .object({ userCriteria: z.enum(['MEMBERS_ONLY']).optional() })\n      .describe('Purchase eligibility settings for the product.')\n      .optional(),\n    additionalRibbons: z\n      .array(\n        z.object({\n          _id: z\n            .string()\n            .describe('Ribbon ID.')\n            .min(1)\n            .max(36)\n            .optional()\n            .nullable(),\n          name: z\n            .string()\n            .describe('Ribbon name.')\n            .max(30)\n            .optional()\n            .nullable(),\n        })\n      )\n      .max(4)\n      .optional(),\n    extendedFields: z\n      .object({\n        namespaces: z\n          .record(z.string(), z.record(z.string(), z.any()))\n          .describe(\n            'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n          )\n          .optional(),\n      })\n      .describe(\n        'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n      )\n      .optional(),\n    tags: z\n      .object({\n        privateTags: z\n          .object({ tagIds: z.array(z.string()).max(100).optional() })\n          .describe(\n            'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n          )\n          .optional(),\n        publicTags: z\n          .object({ tagIds: z.array(z.string()).max(100).optional() })\n          .describe(\n            'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n          )\n          .optional(),\n      })\n      .describe('Tags')\n      .optional(),\n    subscriptionDetails: z\n      .object({\n        subscriptions: z\n          .array(\n            z.intersection(\n              z.object({\n                _id: z\n                  .string()\n                  .describe('Subscription ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                title: z\n                  .string()\n                  .describe('Subscription title.')\n                  .min(1)\n                  .max(20)\n                  .optional(),\n                description: z\n                  .string()\n                  .describe('Subscription description.')\n                  .max(60)\n                  .optional()\n                  .nullable(),\n                visible: z\n                  .boolean()\n                  .describe(\n                    'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                  )\n                  .optional()\n                  .nullable(),\n                frequency: z\n                  .enum(['UNDEFINED', 'DAY', 'WEEK', 'MONTH', 'YEAR'])\n                  .describe(\n                    'Frequency of recurring payment.\\nFor example, if `frequency: MONTH` and `billingCycles: 6`; payment will be made monthly for 6 months.'\n                  )\n                  .optional(),\n                interval: z\n                  .number()\n                  .int()\n                  .describe(\n                    'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                discount: z\n                  .intersection(\n                    z.object({\n                      type: z\n                        .enum(['AMOUNT', 'PERCENT'])\n                        .describe('Discount type.')\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({\n                        amountOff: z.never().optional(),\n                        percentOff: z.never().optional(),\n                      }),\n                      z.object({\n                        percentOff: z.never().optional(),\n                        amountOff: z\n                          .string()\n                          .describe(\n                            'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                          ),\n                      }),\n                      z.object({\n                        amountOff: z.never().optional(),\n                        percentOff: z\n                          .number()\n                          .describe(\n                            'Percentage subtracted from the variant price when calculating subscription prices.'\n                          )\n                          .min(0.1)\n                          .max(99.9),\n                      }),\n                    ])\n                  )\n                  .describe(\n                    'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                  )\n                  .optional(),\n              }),\n              z.xor([\n                z.object({\n                  autoRenewal: z.never().optional(),\n                  billingCycles: z.never().optional(),\n                }),\n                z.object({\n                  billingCycles: z.never().optional(),\n                  autoRenewal: z\n                    .boolean()\n                    .describe(\n                      'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                    ),\n                }),\n                z.object({\n                  autoRenewal: z.never().optional(),\n                  billingCycles: z\n                    .number()\n                    .int()\n                    .describe(\n                      'Number of billing cycles before subscription ends.'\n                    )\n                    .min(2)\n                    .max(999),\n                }),\n              ])\n            )\n          )\n          .min(1)\n          .max(6)\n          .optional(),\n        allowOneTimePurchases: z\n          .boolean()\n          .describe(\n            'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n          )\n          .optional()\n          .nullable(),\n      })\n      .describe(\n        \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n      )\n      .optional(),\n    variantSummary: z\n      .object({\n        variantCount: z\n          .number()\n          .int()\n          .describe('The total number of variants for the product.')\n          .optional(),\n        minPriceVariant: z\n          .intersection(\n            z.object({\n              _id: z\n                .string()\n                .describe('Variant ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              visible: z\n                .boolean()\n                .describe(\n                  \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                )\n                .optional()\n                .nullable(),\n              sku: z\n                .string()\n                .describe('Variant SKU (stock keeping unit).')\n                .min(1)\n                .max(40)\n                .optional()\n                .nullable(),\n              barcode: z\n                .string()\n                .describe('Variant barcode.')\n                .min(1)\n                .max(40)\n                .optional()\n                .nullable(),\n              choices: z\n                .array(\n                  z.object({\n                    optionChoiceIds: z\n                      .object({\n                        optionId: z\n                          .string()\n                          .describe('Option ID.')\n                          .min(1)\n                          .max(36)\n                          .optional(),\n                        choiceId: z\n                          .string()\n                          .describe('Choice ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                      )\n                      .optional(),\n                    optionChoiceNames: z\n                      .object({\n                        optionName: z\n                          .string()\n                          .describe('Option name.')\n                          .min(1)\n                          .optional(),\n                        choiceName: z\n                          .string()\n                          .describe('Choice name.')\n                          .min(1)\n                          .optional(),\n                        renderType: z\n                          .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                          .describe(\n                            'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                  })\n                )\n                .min(0)\n                .max(6)\n                .optional(),\n              price: z\n                .object({\n                  actualPrice: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      \"Variant's current selling price. Must be greater than or equal to 0.\"\n                    )\n                    .optional(),\n                  compareAtPrice: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                    )\n                    .optional(),\n                  priceAfterDiscount: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                    )\n                    .optional(),\n                })\n                .describe('Variant price.')\n                .optional(),\n              revenueDetails: z\n                .object({\n                  cost: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Item cost.')\n                    .optional(),\n                  profit: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                    )\n                    .optional(),\n                  profitMargin: z\n                    .number()\n                    .describe(\n                      'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                    )\n                    .min(0)\n                    .max(1)\n                    .optional(),\n                })\n                .describe(\n                  'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                )\n                .optional(),\n              media: z\n                .intersection(\n                  z.object({\n                    altText: z\n                      .string()\n                      .describe('Image alt text.')\n                      .min(1)\n                      .max(1000)\n                      .optional()\n                      .nullable(),\n                    displayName: z\n                      .string()\n                      .describe(\n                        \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                      )\n                      .max(80)\n                      .optional()\n                      .nullable(),\n                    mediaType: z\n                      .enum(['IMAGE', 'VIDEO'])\n                      .describe('Media type.')\n                      .optional(),\n                    thumbnail: z\n                      .object({\n                        url: z\n                          .string()\n                          .describe('Thumbnail url.')\n                          .url()\n                          .optional(),\n                        height: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail height.')\n                          .optional(),\n                        width: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail width.')\n                          .optional(),\n                        altText: z\n                          .string()\n                          .describe('Thumbnail alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    uploadId: z\n                      .string()\n                      .describe('ID used to upload media to Wix Media Manager.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                  }),\n                  z.intersection(\n                    z.xor([\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z.never().optional(),\n                      }),\n                      z.object({\n                        url: z.never().optional(),\n                        _id: z\n                          .string()\n                          .describe(\n                            'Set media by ID of an existing file in Wix Media Manager.'\n                          )\n                          .min(1)\n                          .max(200),\n                      }),\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z\n                          .string()\n                          .describe('Set media using an external media URL.')\n                          .url(),\n                      }),\n                    ]),\n                    z.xor([\n                      z.object({\n                        image: z.never().optional(),\n                        video: z.never().optional(),\n                      }),\n                      z.object({\n                        video: z.never().optional(),\n                        image: z\n                          .string()\n                          .describe(\n                            \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                          ),\n                      }),\n                      z.object({\n                        image: z.never().optional(),\n                        video: z\n                          .string()\n                          .describe(\n                            \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                          ),\n                      }),\n                    ])\n                  )\n                )\n                .describe('Variant media.')\n                .optional(),\n              subscriptionPricesInfo: z\n                .object({\n                  subscriptionPrices: z\n                    .array(\n                      z.object({\n                        subscriptionId: z\n                          .string()\n                          .describe('Subscription ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        price: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                          )\n                          .optional(),\n                        pricePerUnit: z\n                          .object({\n                            value: z\n                              .string()\n                              .describe(\n                                'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                              )\n                              .optional(),\n                            description: z\n                              .string()\n                              .describe(\n                                'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                            priceAfterDiscount: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                              )\n                              .optional(),\n                          })\n                          .describe('Price per unit info.')\n                          .optional(),\n                        priceAfterDiscount: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                          )\n                          .optional(),\n                      })\n                    )\n                    .max(6)\n                    .optional(),\n                })\n                .describe(\n                  'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              inventoryStatus: z\n                .object({\n                  inStock: z\n                    .boolean()\n                    .describe('Whether the variant is in stock.')\n                    .optional(),\n                  preorderEnabled: z\n                    .boolean()\n                    .describe('Whether preorder is enabled for this variant.')\n                    .optional(),\n                })\n                .describe('Variant inventory status.')\n                .optional(),\n            }),\n            z.xor([\n              z.object({\n                physicalProperties: z.never().optional(),\n                digitalProperties: z.never().optional(),\n              }),\n              z.object({\n                digitalProperties: z.never().optional(),\n                physicalProperties: z\n                  .object({\n                    weight: z\n                      .number()\n                      .describe(\n                        'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                      )\n                      .min(0)\n                      .max(999999999.99)\n                      .optional()\n                      .nullable(),\n                    pricePerUnit: z\n                      .object({\n                        settings: z\n                          .object({\n                            quantity: z\n                              .number()\n                              .describe(\n                                'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                              )\n                              .min(0.01)\n                              .max(999999999.99)\n                              .optional(),\n                            measurementUnit: z\n                              .enum([\n                                'UNSPECIFIED',\n                                'ML',\n                                'CL',\n                                'L',\n                                'CBM',\n                                'MG',\n                                'G',\n                                'KG',\n                                'MM',\n                                'CM',\n                                'M',\n                                'SQM',\n                                'OZ',\n                                'LB',\n                                'FLOZ',\n                                'PT',\n                                'QT',\n                                'GAL',\n                                'IN',\n                                'FT',\n                                'YD',\n                                'SQFT',\n                              ])\n                              .describe(\n                                'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                          )\n                          .optional(),\n                        value: z\n                          .string()\n                          .describe(\n                            \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                          )\n                          .optional(),\n                        description: z\n                          .string()\n                          .describe(\n                            'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                        priceAfterDiscount: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                      )\n                      .optional(),\n                    productDimensions: z\n                      .object({\n                        length: z\n                          .string()\n                          .describe(\n                            'Length. Measurement unit is handled at the system level (metric/imperial).'\n                          )\n                          .optional()\n                          .nullable(),\n                        width: z\n                          .string()\n                          .describe(\n                            'Width. Measurement unit is handled at the system level (metric/imperial).'\n                          )\n                          .optional()\n                          .nullable(),\n                        height: z\n                          .string()\n                          .describe(\n                            'Height. Measurement unit is handled at the system level (metric/imperial).'\n                          )\n                          .optional()\n                          .nullable(),\n                        unit: z\n                          .enum([\n                            'UNKNOWN_DIMENSIONS_UNIT',\n                            'MM',\n                            'CM',\n                            'M',\n                            'IN',\n                            'FT',\n                            'YD',\n                          ])\n                          .describe(\n                            'Unit of measurement for dimensions (length, width, height).'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Product dimensions (length, width, height of the physical product).'\n                      )\n                      .optional(),\n                    packageDimensions: z\n                      .object({\n                        length: z\n                          .string()\n                          .describe(\n                            'Length. Measurement unit is handled at the system level (metric/imperial).'\n                          )\n                          .optional()\n                          .nullable(),\n                        width: z\n                          .string()\n                          .describe(\n                            'Width. Measurement unit is handled at the system level (metric/imperial).'\n                          )\n                          .optional()\n                          .nullable(),\n                        height: z\n                          .string()\n                          .describe(\n                            'Height. Measurement unit is handled at the system level (metric/imperial).'\n                          )\n                          .optional()\n                          .nullable(),\n                        unit: z\n                          .enum([\n                            'UNKNOWN_DIMENSIONS_UNIT',\n                            'MM',\n                            'CM',\n                            'M',\n                            'IN',\n                            'FT',\n                            'YD',\n                          ])\n                          .describe(\n                            'Unit of measurement for dimensions (length, width, height).'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Package dimensions (length, width, height of the shipping package).'\n                      )\n                      .optional(),\n                  })\n                  .describe(\n                    'Physical properties. Must be passed when `productType: PHYSICAL`'\n                  ),\n              }),\n              z.object({\n                physicalProperties: z.never().optional(),\n                digitalProperties: z\n                  .object({\n                    digitalFile: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe('Media ID in media manager.')\n                          .min(1)\n                          .max(100)\n                          .optional(),\n                        fileName: z\n                          .string()\n                          .describe('Original file name.')\n                          .min(1)\n                          .max(1000)\n                          .optional(),\n                        fileSize: z\n                          .string()\n                          .describe('Original file size.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        fileType: z\n                          .enum([\n                            'UNSPECIFIED',\n                            'SECURE_PICTURE',\n                            'SECURE_VIDEO',\n                            'SECURE_DOCUMENT',\n                            'SECURE_MUSIC',\n                            'SECURE_ARCHIVE',\n                            'SECURE_RAW',\n                          ])\n                          .describe('File type.')\n                          .optional(),\n                      })\n                      .describe(\n                        'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                      )\n                      .optional(),\n                  })\n                  .describe(\n                    'Digital properties. Must be passed when `productType: DIGITAL`'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'The variant with the lowest `actualPrice` among visible variants for this product.\\n\\nHidden variants are excluded; ties are broken by variant order. Empty if the product has no visible variants.\\n> **Note:** Returned only when you pass `\"MIN_PRICE_VARIANT\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n      })\n      .describe('The total number of variants for the product.')\n      .optional(),\n  }),\n  z.xor([\n    z.object({ physicalProperties: z.never().optional() }),\n    z.object({\n      physicalProperties: z\n        .object({\n          pricePerUnit: z\n            .object({\n              quantity: z\n                .number()\n                .describe(\n                  'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                )\n                .min(0.01)\n                .max(999999999.99)\n                .optional(),\n              measurementUnit: z\n                .enum([\n                  'UNSPECIFIED',\n                  'ML',\n                  'CL',\n                  'L',\n                  'CBM',\n                  'MG',\n                  'G',\n                  'KG',\n                  'MM',\n                  'CM',\n                  'M',\n                  'SQM',\n                  'OZ',\n                  'LB',\n                  'FLOZ',\n                  'PT',\n                  'QT',\n                  'GAL',\n                  'IN',\n                  'FT',\n                  'YD',\n                  'SQFT',\n                ])\n                .describe(\n                  'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                )\n                .optional(),\n            })\n            .describe(\n              'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n            )\n            .optional(),\n          fulfillerId: z\n            .string()\n            .describe('Fulfiller ID.')\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          shippingWeightRange: z\n            .object({\n              minValue: z\n                .number()\n                .describe(\n                  'Minimum weight across all variants associated with this product.'\n                )\n                .min(0)\n                .max(999999999.99)\n                .optional(),\n              maxValue: z\n                .number()\n                .describe(\n                  'Maximum weight across all variants associated with this product.'\n                )\n                .min(0)\n                .max(999999999.99)\n                .optional(),\n            })\n            .describe(\n              'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n            )\n            .optional(),\n          pricePerUnitRange: z\n            .object({\n              minValue: z\n                .object({\n                  value: z\n                    .string()\n                    .describe(\n                      \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                    )\n                    .optional(),\n                  description: z\n                    .string()\n                    .describe(\n                      'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                    )\n                    .max(100)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Minimum price per unit across all variants.')\n                .optional(),\n              maxValue: z\n                .object({\n                  value: z\n                    .string()\n                    .describe(\n                      \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                    )\n                    .optional(),\n                  description: z\n                    .string()\n                    .describe(\n                      'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                    )\n                    .max(100)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Maximum price per unit across all variants.')\n                .optional(),\n            })\n            .describe(\n              'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n            )\n            .optional(),\n          weightMeasurementUnitInfo: z\n            .object({\n              weightMeasurementUnit: z\n                .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                .describe('Weight measurement unit.')\n                .optional(),\n            })\n            .describe(\n              'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n            )\n            .optional(),\n          deliveryProfileId: z\n            .string()\n            .describe('Delivery profile ID.')\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n        })\n        .describe(\n          'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n        ),\n    }),\n  ])\n);\nexport const UpdateProductWithInventoryRequest = z.object({\n  _id: z.string().describe('Product ID.').min(1).max(36),\n  product: z\n    .intersection(\n      z.object({\n        _id: z\n          .string()\n          .describe('Product ID.')\n          .min(1)\n          .max(36)\n          .optional()\n          .nullable(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product with inventory.'\n          ),\n        name: z\n          .string()\n          .describe('Product name. Translatable.')\n          .min(1)\n          .max(80)\n          .optional()\n          .nullable(),\n        slug: z\n          .string()\n          .describe(\n            'Product slug.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n          )\n          .min(1)\n          .max(300)\n          .optional()\n          .nullable(),\n        plainDescription: z\n          .string()\n          .describe(\n            'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n          )\n          .max(16000)\n          .optional()\n          .nullable(),\n        visible: z\n          .boolean()\n          .describe(\n            'Whether the product is visible to site visitors.\\n\\nDefault: `true`'\n          )\n          .optional()\n          .nullable(),\n        visibleInPos: z\n          .boolean()\n          .describe(\n            'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n          )\n          .optional()\n          .nullable(),\n        media: z\n          .object({\n            main: z\n              .intersection(\n                z.object({\n                  altText: z\n                    .string()\n                    .describe('Image alt text.')\n                    .min(1)\n                    .max(1000)\n                    .optional()\n                    .nullable(),\n                  displayName: z\n                    .string()\n                    .describe(\n                      \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                    )\n                    .max(80)\n                    .optional()\n                    .nullable(),\n                  mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                  thumbnail: z\n                    .object({\n                      url: z\n                        .string()\n                        .describe('Thumbnail url.')\n                        .url()\n                        .optional(),\n                      height: z\n                        .number()\n                        .int()\n                        .describe('Thumbnail height.')\n                        .optional(),\n                      width: z\n                        .number()\n                        .int()\n                        .describe('Thumbnail width.')\n                        .optional(),\n                      altText: z\n                        .string()\n                        .describe('Thumbnail alt text.')\n                        .min(1)\n                        .max(1000)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                  uploadId: z\n                    .string()\n                    .describe('ID used to upload media to Wix Media Manager.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                }),\n                z.intersection(\n                  z.xor([\n                    z.object({\n                      _id: z.never().optional(),\n                      url: z.never().optional(),\n                    }),\n                    z.object({\n                      url: z.never().optional(),\n                      _id: z\n                        .string()\n                        .describe(\n                          'Set media by ID of an existing file in Wix Media Manager.'\n                        )\n                        .min(1)\n                        .max(200),\n                    }),\n                    z.object({\n                      _id: z.never().optional(),\n                      url: z\n                        .string()\n                        .describe('Set media using an external media URL.')\n                        .url(),\n                    }),\n                  ]),\n                  z.xor([\n                    z.object({\n                      image: z.never().optional(),\n                      video: z.never().optional(),\n                    }),\n                    z.object({\n                      video: z.never().optional(),\n                      image: z\n                        .string()\n                        .describe(\n                          \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                        ),\n                    }),\n                    z.object({\n                      image: z.never().optional(),\n                      video: z\n                        .string()\n                        .describe(\n                          \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                        ),\n                    }),\n                  ])\n                )\n              )\n              .describe(\n                'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n              )\n              .optional(),\n            itemsInfo: z\n              .object({\n                items: z\n                  .array(\n                    z.intersection(\n                      z.object({\n                        altText: z\n                          .string()\n                          .describe('Image alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        displayName: z\n                          .string()\n                          .describe(\n                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                          )\n                          .max(80)\n                          .optional()\n                          .nullable(),\n                        mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                        thumbnail: z\n                          .object({\n                            url: z\n                              .string()\n                              .describe('Thumbnail url.')\n                              .url()\n                              .optional(),\n                            height: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail height.')\n                              .optional(),\n                            width: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail width.')\n                              .optional(),\n                            altText: z\n                              .string()\n                              .describe('Thumbnail alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        uploadId: z\n                          .string()\n                          .describe(\n                            'ID used to upload media to Wix Media Manager.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                      }),\n                      z.intersection(\n                        z.xor([\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z.never().optional(),\n                          }),\n                          z.object({\n                            url: z.never().optional(),\n                            _id: z\n                              .string()\n                              .describe(\n                                'Set media by ID of an existing file in Wix Media Manager.'\n                              )\n                              .min(1)\n                              .max(200),\n                          }),\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z\n                              .string()\n                              .describe(\n                                'Set media using an external media URL.'\n                              )\n                              .url(),\n                          }),\n                        ]),\n                        z.xor([\n                          z.object({\n                            image: z.never().optional(),\n                            video: z.never().optional(),\n                          }),\n                          z.object({\n                            video: z.never().optional(),\n                            image: z\n                              .string()\n                              .describe(\n                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                              ),\n                          }),\n                          z.object({\n                            image: z.never().optional(),\n                            video: z\n                              .string()\n                              .describe(\n                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                  )\n                  .max(50)\n                  .optional(),\n              })\n              .describe(\n                'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n              )\n              .optional(),\n          })\n          .describe('Product media items.')\n          .optional(),\n        seoData: z\n          .object({\n            tags: z\n              .array(\n                z.object({\n                  type: z\n                    .string()\n                    .describe(\n                      'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                    )\n                    .optional(),\n                  props: z\n                    .record(z.string(), z.any())\n                    .describe(\n                      'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  meta: z\n                    .record(z.string(), z.any())\n                    .describe(\n                      'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  children: z\n                    .string()\n                    .describe(\n                      'SEO tag inner content. For example, `<title> inner content </title>`.'\n                    )\n                    .optional(),\n                  custom: z\n                    .boolean()\n                    .describe(\n                      'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                    )\n                    .optional(),\n                  disabled: z\n                    .boolean()\n                    .describe(\n                      \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                    )\n                    .optional(),\n                })\n              )\n              .optional(),\n            settings: z\n              .object({\n                preventAutoRedirect: z\n                  .boolean()\n                  .describe(\n                    'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n                  )\n                  .optional(),\n                keywords: z\n                  .array(\n                    z.object({\n                      term: z.string().describe('Keyword value.').optional(),\n                      isMain: z\n                        .boolean()\n                        .describe(\n                          'Whether the keyword is the main focus keyword.'\n                        )\n                        .optional(),\n                      origin: z\n                        .string()\n                        .describe(\n                          'The source that added the keyword terms to the SEO settings.'\n                        )\n                        .max(1000)\n                        .optional()\n                        .nullable(),\n                    })\n                  )\n                  .max(5)\n                  .optional(),\n              })\n              .describe('SEO general settings.')\n              .optional(),\n          })\n          .describe('Product SEO data.')\n          .optional(),\n        taxGroupId: z\n          .string()\n          .describe(\n            '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        options: z\n          .array(\n            z.intersection(\n              z.object({\n                _id: z\n                  .string()\n                  .describe(\n                    'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n                  )\n                  .min(1)\n                  .max(36)\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Option name.')\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                optionRenderType: z\n                  .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                  .optional(),\n                key: z\n                  .string()\n                  .describe(\n                    'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional(),\n              }),\n              z.xor([\n                z.object({\n                  choicesSettings: z\n                    .object({\n                      choices: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              linkedMedia: z\n                                .array(\n                                  z.intersection(\n                                    z.object({\n                                      altText: z\n                                        .string()\n                                        .describe('Image alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                      displayName: z\n                                        .string()\n                                        .describe(\n                                          \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                        )\n                                        .max(80)\n                                        .optional()\n                                        .nullable(),\n                                      mediaType: z\n                                        .enum(['IMAGE', 'VIDEO'])\n                                        .optional(),\n                                      thumbnail: z\n                                        .object({\n                                          url: z\n                                            .string()\n                                            .describe('Thumbnail url.')\n                                            .url()\n                                            .optional(),\n                                          height: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail height.')\n                                            .optional(),\n                                          width: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail width.')\n                                            .optional(),\n                                          altText: z\n                                            .string()\n                                            .describe('Thumbnail alt text.')\n                                            .min(1)\n                                            .max(1000)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .optional(),\n                                      uploadId: z\n                                        .string()\n                                        .describe(\n                                          'ID used to upload media to Wix Media Manager.'\n                                        )\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    }),\n                                    z.intersection(\n                                      z.xor([\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          url: z.never().optional(),\n                                          _id: z\n                                            .string()\n                                            .describe(\n                                              'Set media by ID of an existing file in Wix Media Manager.'\n                                            )\n                                            .min(1)\n                                            .max(200),\n                                        }),\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z\n                                            .string()\n                                            .describe(\n                                              'Set media using an external media URL.'\n                                            )\n                                            .url(),\n                                        }),\n                                      ]),\n                                      z.xor([\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          video: z.never().optional(),\n                                          image: z\n                                            .string()\n                                            .describe(\n                                              \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                            ),\n                                        }),\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z\n                                            .string()\n                                            .describe(\n                                              \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                            ),\n                                        }),\n                                      ])\n                                    )\n                                  )\n                                )\n                                .max(15)\n                                .optional(),\n                              choiceType: z\n                                .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                .optional(),\n                              key: z\n                                .string()\n                                .describe(\n                                  'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe(\n                                  'Choice name. For text choices, this field also contains the choice value.'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional()\n                                .nullable(),\n                              inStock: z\n                                .boolean()\n                                .describe(\n                                  'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                                )\n                                .optional(),\n                              visible: z\n                                .boolean()\n                                .describe(\n                                  'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                                )\n                                .optional(),\n                              displayImage: z\n                                .string()\n                                .describe(\n                                  'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                )\n                                .optional(),\n                              media: z\n                                .object({\n                                  items: z\n                                    .array(\n                                      z.intersection(\n                                        z.object({}),\n                                        z.xor([\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            mediaId: z\n                                              .string()\n                                              .describe(\n                                                'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'External media URL. Can be used only on write.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                    .max(15)\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                )\n                                .optional(),\n                            }),\n                            z.xor([\n                              z.object({ colorCode: z.never().optional() }),\n                              z.object({\n                                colorCode: z\n                                  .string()\n                                  .describe(\n                                    'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                                  )\n                                  .min(3)\n                                  .max(20),\n                              }),\n                            ])\n                          )\n                        )\n                        .min(1)\n                        .max(100)\n                        .optional(),\n                    })\n                    .describe('Choices settings.'),\n                }),\n              ])\n            )\n          )\n          .max(6)\n          .optional(),\n        modifiers: z\n          .array(\n            z.intersection(\n              z.object({\n                _id: z\n                  .string()\n                  .describe(\n                    'ID of a customization with `customizationType: MODIFIER`.'\n                  )\n                  .min(1)\n                  .max(36)\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Modifier title.')\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                modifierRenderType: z\n                  .enum(['FREE_TEXT', 'TEXT_CHOICES', 'SWATCH_CHOICES'])\n                  .optional(),\n                mandatory: z\n                  .boolean()\n                  .describe(\n                    'Whether customer input is required for this modifier.'\n                  )\n                  .optional(),\n                key: z\n                  .string()\n                  .describe(\n                    'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional(),\n              }),\n              z.xor([\n                z.object({\n                  choicesSettings: z.never().optional(),\n                  freeTextSettings: z\n                    .object({\n                      minCharCount: z\n                        .number()\n                        .int()\n                        .describe('Minimum number of characters.')\n                        .optional(),\n                      maxCharCount: z\n                        .number()\n                        .int()\n                        .describe('Maximum number of characters.')\n                        .max(500)\n                        .optional(),\n                      defaultAddedPrice: z\n                        .string()\n                        .describe(\n                          \"Default amount to be added to the product's price.\"\n                        )\n                        .optional()\n                        .nullable(),\n                      title: z\n                        .string()\n                        .describe(\n                          'Title of the text to be input by the customer.'\n                        )\n                        .min(1)\n                        .max(150)\n                        .optional(),\n                      key: z\n                        .string()\n                        .describe(\n                          'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                        )\n                        .min(1)\n                        .max(150)\n                        .optional(),\n                    })\n                    .describe('Free text modifier settings.'),\n                }),\n                z.object({\n                  freeTextSettings: z.never().optional(),\n                  choicesSettings: z\n                    .object({\n                      choices: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              linkedMedia: z\n                                .array(\n                                  z.intersection(\n                                    z.object({\n                                      altText: z\n                                        .string()\n                                        .describe('Image alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                      displayName: z\n                                        .string()\n                                        .describe(\n                                          \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                        )\n                                        .max(80)\n                                        .optional()\n                                        .nullable(),\n                                      mediaType: z\n                                        .enum(['IMAGE', 'VIDEO'])\n                                        .optional(),\n                                      thumbnail: z\n                                        .object({\n                                          url: z\n                                            .string()\n                                            .describe('Thumbnail url.')\n                                            .url()\n                                            .optional(),\n                                          height: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail height.')\n                                            .optional(),\n                                          width: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail width.')\n                                            .optional(),\n                                          altText: z\n                                            .string()\n                                            .describe('Thumbnail alt text.')\n                                            .min(1)\n                                            .max(1000)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .optional(),\n                                      uploadId: z\n                                        .string()\n                                        .describe(\n                                          'ID used to upload media to Wix Media Manager.'\n                                        )\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    }),\n                                    z.intersection(\n                                      z.xor([\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          url: z.never().optional(),\n                                          _id: z\n                                            .string()\n                                            .describe(\n                                              'Set media by ID of an existing file in Wix Media Manager.'\n                                            )\n                                            .min(1)\n                                            .max(200),\n                                        }),\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z\n                                            .string()\n                                            .describe(\n                                              'Set media using an external media URL.'\n                                            )\n                                            .url(),\n                                        }),\n                                      ]),\n                                      z.xor([\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          video: z.never().optional(),\n                                          image: z\n                                            .string()\n                                            .describe(\n                                              \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                            ),\n                                        }),\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z\n                                            .string()\n                                            .describe(\n                                              \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                            ),\n                                        }),\n                                      ])\n                                    )\n                                  )\n                                )\n                                .max(15)\n                                .optional(),\n                              choiceType: z\n                                .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                .optional(),\n                              key: z\n                                .string()\n                                .describe(\n                                  'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe('Choice name.')\n                                .min(1)\n                                .max(50)\n                                .optional()\n                                .nullable(),\n                              addedPrice: z\n                                .string()\n                                .describe('Added price.')\n                                .optional()\n                                .nullable(),\n                              displayImage: z\n                                .string()\n                                .describe(\n                                  'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                )\n                                .optional(),\n                              media: z\n                                .object({\n                                  items: z\n                                    .array(\n                                      z.intersection(\n                                        z.object({}),\n                                        z.xor([\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            mediaId: z\n                                              .string()\n                                              .describe(\n                                                'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'External media URL. Can be used only on write.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                    .max(15)\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                )\n                                .optional(),\n                            }),\n                            z.xor([\n                              z.object({ colorCode: z.never().optional() }),\n                              z.object({\n                                colorCode: z\n                                  .string()\n                                  .describe(\n                                    'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                                  )\n                                  .min(3)\n                                  .max(20),\n                              }),\n                            ])\n                          )\n                        )\n                        .min(1)\n                        .max(100)\n                        .optional(),\n                    })\n                    .describe('Choice settings.'),\n                }),\n              ])\n            )\n          )\n          .max(10)\n          .optional(),\n        brand: z\n          .object({\n            _id: z\n              .string()\n              .describe('Brand ID.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            name: z\n              .string()\n              .describe('Brand name.')\n              .max(50)\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            \"Product brand.\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n          )\n          .optional(),\n        infoSections: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('Info section ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              uniqueName: z\n                .string()\n                .describe(\n                  'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n              title: z\n                .string()\n                .describe(\n                  'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                )\n                .min(1)\n                .max(50)\n                .optional()\n                .nullable(),\n              description: z\n                .any()\n                .describe(\n                  'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                )\n                .optional(),\n              plainDescription: z\n                .string()\n                .describe(\n                  'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                )\n                .max(16000)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(10)\n          .optional(),\n        ribbon: z\n          .object({\n            _id: z\n              .string()\n              .describe('Ribbon ID.')\n              .min(1)\n              .max(36)\n              .optional()\n              .nullable(),\n            name: z\n              .string()\n              .describe('Ribbon name.')\n              .max(30)\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            \"Primary product ribbon displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n          )\n          .optional(),\n        additionalRibbons: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('Ribbon ID.')\n                .min(1)\n                .max(36)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Ribbon name.')\n                .max(30)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(4)\n          .optional(),\n        mainCategoryId: z\n          .string()\n          .describe(\n            'The ID of the product\\'s primary direct category, which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        productType: z.enum(['PHYSICAL', 'DIGITAL']).optional(),\n        handle: z\n          .string()\n          .describe(\n            \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n          )\n          .min(1)\n          .max(100)\n          .optional()\n          .nullable(),\n        variantsInfo: z\n          .object({\n            variants: z\n              .array(\n                z.intersection(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Variant ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    visible: z\n                      .boolean()\n                      .describe(\n                        'Whether the variant is visible to site visitors.\\n\\nDefault: `true`'\n                      )\n                      .optional()\n                      .nullable(),\n                    sku: z\n                      .string()\n                      .describe('Variant SKU (stock keeping unit).')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    barcode: z\n                      .string()\n                      .describe('Variant barcode.')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    price: z\n                      .object({\n                        actualPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            \"Variant's current selling price. Must be greater than or equal to 0.\"\n                          ),\n                        compareAtPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                          )\n                          .optional(),\n                        priceAfterDiscount: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                          )\n                          .optional(),\n                      })\n                      .describe('Variant price.'),\n                    revenueDetails: z\n                      .object({\n                        cost: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe('Item cost.')\n                          .optional(),\n                        profit: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                          )\n                          .optional(),\n                        profitMargin: z\n                          .number()\n                          .describe(\n                            'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                          )\n                          .min(0)\n                          .max(1)\n                          .optional(),\n                      })\n                      .describe(\n                        'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                      )\n                      .optional(),\n                    inventoryItem: z\n                      .intersection(\n                        z.object({\n                          _id: z\n                            .string()\n                            .describe(\n                              'Inventory item ID.\\nIf you want to update existing inventory item you must provide id,\\notherwise new inventory item with different id will be created.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          revision: z\n                            .string()\n                            .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                            .describe('Inventory item revision.')\n                            .optional()\n                            .nullable(),\n                          preorderInfo: z\n                            .object({\n                              enabled: z\n                                .boolean()\n                                .describe(\n                                  \"Whether preorder is enabled for this inventory item.\\n\\n> **Note:** Preorder can't be enabled for digital products or products with subscriptions.\\n\\nDefault: `false`\"\n                                )\n                                .optional()\n                                .nullable(),\n                              message: z\n                                .string()\n                                .describe(\n                                  'Message displayed to customers when the item is out of stock and preorder is enabled.'\n                                )\n                                .min(1)\n                                .max(250)\n                                .optional()\n                                .nullable(),\n                              limit: z\n                                .number()\n                                .int()\n                                .describe(\n                                  'Maximum number of items that can be preordered after stock reaches zero.\\n\\nSupported only for inventory items with `trackQuantity = true`.\\n\\nDefault: `100000`'\n                                )\n                                .min(0)\n                                .max(100000)\n                                .optional()\n                                .nullable(),\n                              counter: z\n                                .number()\n                                .int()\n                                .describe(\n                                  'Number of times this item has been preordered.\\n\\nSupported only for inventory items with `trackQuantity = true`.'\n                                )\n                                .min(0)\n                                .max(99999)\n                                .optional()\n                                .nullable(),\n                              quantity: z\n                                .number()\n                                .int()\n                                .describe(\n                                  'Remaining quantity available for preorder.\\n\\nSupported only for items with `trackQuantity` set to `true`.'\n                                )\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe('Item preorder info.')\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({\n                            inStock: z.never().optional(),\n                            quantity: z.never().optional(),\n                          }),\n                          z.object({\n                            quantity: z.never().optional(),\n                            inStock: z\n                              .boolean()\n                              .describe(\n                                'Tracking method - in stock.\\n\\nWhen set to `true`, the item is available for sale without a quantity limit.'\n                              ),\n                          }),\n                          z.object({\n                            inStock: z.never().optional(),\n                            quantity: z\n                              .number()\n                              .int()\n                              .describe(\n                                'Tracking method - quantity left in inventory.\\n\\nQuantity can be negative when decrementing inventory for an order that has already been paid.'\n                              )\n                              .min(-99999)\n                              .max(99999),\n                          }),\n                        ])\n                      )\n                      .describe(\n                        'Inventory item of the variant on the default location.'\n                      )\n                      .optional(),\n                    choices: z\n                      .array(\n                        z.object({\n                          optionChoiceIds: z\n                            .object({\n                              optionId: z\n                                .string()\n                                .describe('Option ID.')\n                                .min(1)\n                                .max(36),\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                ),\n                            })\n                            .describe('Option and choice IDs.')\n                            .optional(),\n                          optionChoiceNames: z\n                            .object({\n                              optionName: z\n                                .string()\n                                .describe('Option name.')\n                                .min(1)\n                                .optional(),\n                              choiceName: z\n                                .string()\n                                .describe('Choice name.')\n                                .min(1)\n                                .optional(),\n                              renderType: z\n                                .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                .optional(),\n                            })\n                            .describe('Option and choice names.')\n                            .optional(),\n                        })\n                      )\n                      .min(0)\n                      .max(6)\n                      .optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z.never().optional(),\n                    }),\n                    z.object({\n                      digitalProperties: z.never().optional(),\n                      physicalProperties: z\n                        .object({\n                          weight: z\n                            .number()\n                            .describe(\n                              'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                            )\n                            .min(0)\n                            .max(999999999.99)\n                            .optional()\n                            .nullable(),\n                          pricePerUnit: z\n                            .object({\n                              settings: z\n                                .object({\n                                  quantity: z\n                                    .number()\n                                    .describe(\n                                      'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                    )\n                                    .min(0.01)\n                                    .max(999999999.99)\n                                    .optional(),\n                                  measurementUnit: z\n                                    .enum([\n                                      'UNSPECIFIED',\n                                      'ML',\n                                      'CL',\n                                      'L',\n                                      'CBM',\n                                      'MG',\n                                      'G',\n                                      'KG',\n                                      'MM',\n                                      'CM',\n                                      'M',\n                                      'SQM',\n                                      'OZ',\n                                      'LB',\n                                      'FLOZ',\n                                      'PT',\n                                      'QT',\n                                      'GAL',\n                                      'IN',\n                                      'FT',\n                                      'YD',\n                                      'SQFT',\n                                    ])\n                                    .describe(\n                                      'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                )\n                                .optional(),\n                              value: z\n                                .string()\n                                .describe(\n                                  \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                )\n                                .optional(),\n                              description: z\n                                .string()\n                                .describe(\n                                  'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(100)\n                                .optional()\n                                .nullable(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                            )\n                            .optional(),\n                          productDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Product dimensions (length, width, height of the physical product).'\n                            )\n                            .optional(),\n                          packageDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Package dimensions (length, width, height of the shipping package).'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Physical properties. Must be passed when `productType: PHYSICAL`'\n                        ),\n                    }),\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z\n                        .object({\n                          digitalFile: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe('Media ID in media manager.')\n                                .min(1)\n                                .max(100)\n                                .optional(),\n                              fileName: z\n                                .string()\n                                .describe('Original file name.')\n                                .min(1)\n                                .max(1000)\n                                .optional(),\n                              fileSize: z\n                                .string()\n                                .describe('Original file size.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              fileType: z\n                                .enum([\n                                  'UNSPECIFIED',\n                                  'SECURE_PICTURE',\n                                  'SECURE_VIDEO',\n                                  'SECURE_DOCUMENT',\n                                  'SECURE_MUSIC',\n                                  'SECURE_ARCHIVE',\n                                  'SECURE_RAW',\n                                ])\n                                .describe('File type.')\n                                .optional(),\n                            })\n                            .describe(\n                              'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Digital properties. Must be passed when `productType: DIGITAL`'\n                        ),\n                    }),\n                  ])\n                )\n              )\n              .min(1)\n              .max(1000)\n              .optional(),\n          })\n          .describe(\n            \"Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nVariants aren't auto-generated. You must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).\"\n          )\n          .optional(),\n        subscriptionDetails: z\n          .object({\n            subscriptions: z\n              .array(\n                z.intersection(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Subscription ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    title: z\n                      .string()\n                      .describe('Subscription title.')\n                      .min(1)\n                      .max(20),\n                    description: z\n                      .string()\n                      .describe('Subscription description.')\n                      .max(60)\n                      .optional()\n                      .nullable(),\n                    visible: z\n                      .boolean()\n                      .describe(\n                        'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                      )\n                      .optional()\n                      .nullable(),\n                    frequency: z.enum([\n                      'UNDEFINED',\n                      'DAY',\n                      'WEEK',\n                      'MONTH',\n                      'YEAR',\n                    ]),\n                    interval: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                      )\n                      .min(1)\n                      .max(50)\n                      .optional()\n                      .nullable(),\n                    discount: z\n                      .intersection(\n                        z.object({ type: z.enum(['AMOUNT', 'PERCENT']) }),\n                        z.xor([\n                          z.object({\n                            percentOff: z.never().optional(),\n                            amountOff: z\n                              .string()\n                              .describe(\n                                'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                              ),\n                          }),\n                          z.object({\n                            amountOff: z.never().optional(),\n                            percentOff: z\n                              .number()\n                              .describe(\n                                'Percentage subtracted from the variant price when calculating subscription prices.'\n                              )\n                              .min(0.1)\n                              .max(99.9),\n                          }),\n                        ])\n                      )\n                      .describe(\n                        'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                      )\n                      .optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      billingCycles: z.never().optional(),\n                      autoRenewal: z\n                        .boolean()\n                        .describe(\n                          'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                        ),\n                    }),\n                    z.object({\n                      autoRenewal: z.never().optional(),\n                      billingCycles: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Number of billing cycles before subscription ends.'\n                        )\n                        .min(2)\n                        .max(999),\n                    }),\n                  ])\n                )\n              )\n              .min(1)\n              .max(6)\n              .optional(),\n            allowOneTimePurchases: z\n              .boolean()\n              .describe(\n                'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n              )\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n          )\n          .optional(),\n        purchaseEligibility: z\n          .object({ userCriteria: z.enum(['MEMBERS_ONLY']).optional() })\n          .describe('Purchase eligibility settings for the product.')\n          .optional(),\n        extendedFields: z\n          .object({\n            namespaces: z\n              .record(z.string(), z.record(z.string(), z.any()))\n              .describe(\n                'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n              )\n              .optional(),\n          })\n          .describe(\n            'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the [app dashboard](https://dev.wix.com/dc3/my-apps/) before they can be accessed with API calls.'\n          )\n          .optional(),\n        tags: z\n          .object({\n            privateTags: z\n              .object({ tagIds: z.array(z.string()).max(100).optional() })\n              .describe(\n                'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n              )\n              .optional(),\n            publicTags: z\n              .object({ tagIds: z.array(z.string()).max(100).optional() })\n              .describe(\n                'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n              )\n              .optional(),\n          })\n          .describe('Tags')\n          .optional(),\n      }),\n      z.xor([\n        z.object({ physicalProperties: z.never().optional() }),\n        z.object({\n          physicalProperties: z\n            .object({\n              pricePerUnit: z\n                .object({\n                  quantity: z\n                    .number()\n                    .describe(\n                      'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                    )\n                    .min(0.01)\n                    .max(999999999.99)\n                    .optional(),\n                  measurementUnit: z\n                    .enum([\n                      'UNSPECIFIED',\n                      'ML',\n                      'CL',\n                      'L',\n                      'CBM',\n                      'MG',\n                      'G',\n                      'KG',\n                      'MM',\n                      'CM',\n                      'M',\n                      'SQM',\n                      'OZ',\n                      'LB',\n                      'FLOZ',\n                      'PT',\n                      'QT',\n                      'GAL',\n                      'IN',\n                      'FT',\n                      'YD',\n                      'SQFT',\n                    ])\n                    .describe(\n                      'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n                )\n                .optional(),\n              fulfillerId: z\n                .string()\n                .describe('Fulfiller ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              shippingWeightRange: z\n                .object({\n                  minValue: z\n                    .number()\n                    .describe(\n                      'Minimum weight across all variants associated with this product.'\n                    )\n                    .min(0)\n                    .max(999999999.99)\n                    .optional(),\n                  maxValue: z\n                    .number()\n                    .describe(\n                      'Maximum weight across all variants associated with this product.'\n                    )\n                    .min(0)\n                    .max(999999999.99)\n                    .optional(),\n                })\n                .describe(\n                  'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n                )\n                .optional(),\n              pricePerUnitRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      value: z\n                        .string()\n                        .describe(\n                          \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                        )\n                        .optional(),\n                      description: z\n                        .string()\n                        .describe(\n                          'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                        )\n                        .max(100)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum price per unit across all variants.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      value: z\n                        .string()\n                        .describe(\n                          \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                        )\n                        .optional(),\n                      description: z\n                        .string()\n                        .describe(\n                          'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                        )\n                        .max(100)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum price per unit across all variants.')\n                    .optional(),\n                })\n                .describe(\n                  'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n                )\n                .optional(),\n              weightMeasurementUnitInfo: z\n                .object({\n                  weightMeasurementUnit: z\n                    .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                    .describe('Weight measurement unit.')\n                    .optional(),\n                })\n                .describe(\n                  'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              deliveryProfileId: z\n                .string()\n                .describe('Delivery profile ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n            ),\n        }),\n      ])\n    )\n    .describe('Product to update.'),\n  options: z\n    .object({\n      returnEntity: z\n        .boolean()\n        .describe(\n          'Whether to return the full inventory entities in the response.\\n\\nDefault: `false`'\n        )\n        .optional(),\n      fields: z\n        .array(\n          z.enum([\n            'URL',\n            'CURRENCY',\n            'INFO_SECTION',\n            'MERCHANT_DATA',\n            'PLAIN_DESCRIPTION',\n            'INFO_SECTION_PLAIN_DESCRIPTION',\n            'SUBSCRIPTION_PRICES_INFO',\n            'BREADCRUMBS_INFO',\n            'WEIGHT_MEASUREMENT_UNIT_INFO',\n            'VARIANT_OPTION_CHOICE_NAMES',\n            'MEDIA_ITEMS_INFO',\n            'DESCRIPTION',\n            'DIRECT_CATEGORIES_INFO',\n            'ALL_CATEGORIES_INFO',\n            'INFO_SECTION_DESCRIPTION',\n            'THUMBNAIL',\n            'PRODUCT_CHOICES_MEDIA_REFERENCES',\n            'PRODUCT_CHOICES_DISPLAY_IMAGE',\n            'DISCOUNT_INFO',\n          ])\n        )\n        .max(100)\n        .optional(),\n    })\n    .optional(),\n});\nexport const UpdateProductWithInventoryResponse = z.object({\n  product: z\n    .intersection(\n      z.object({\n        _id: z\n          .string()\n          .describe('Product ID.')\n          .min(1)\n          .max(36)\n          .optional()\n          .nullable(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product.'\n          )\n          .optional()\n          .nullable(),\n        _createdDate: z\n          .date()\n          .describe('Date and time the product was created.')\n          .optional()\n          .nullable(),\n        _updatedDate: z\n          .date()\n          .describe('Date and time the product was updated.')\n          .optional()\n          .nullable(),\n        name: z\n          .string()\n          .describe('Product name. Translatable.')\n          .min(1)\n          .max(80)\n          .optional()\n          .nullable(),\n        slug: z\n          .string()\n          .describe(\n            'Product slug. A URL-friendly identifier used in the product page address.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n          )\n          .min(1)\n          .max(300)\n          .optional()\n          .nullable(),\n        url: z\n          .string()\n          .describe(\n            'URL to the site\\'s product page.\\n\\n> **Note:** Returned only when you pass `\"URL\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n        description: z\n          .any()\n          .describe(\n            'Product description using rich content.\\n> **Note:** Returned only when you pass `\"DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n          )\n          .optional(),\n        plainDescription: z\n          .string()\n          .describe(\n            'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n          )\n          .max(16000)\n          .optional()\n          .nullable(),\n        visible: z\n          .boolean()\n          .describe(\n            \"Whether the product is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the default variant's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n          )\n          .optional()\n          .nullable(),\n        visibleInPos: z\n          .boolean()\n          .describe(\n            'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n          )\n          .optional()\n          .nullable(),\n        media: z\n          .object({\n            main: z\n              .intersection(\n                z.object({\n                  altText: z\n                    .string()\n                    .describe('Image alt text.')\n                    .min(1)\n                    .max(1000)\n                    .optional()\n                    .nullable(),\n                  displayName: z\n                    .string()\n                    .describe(\n                      \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                    )\n                    .max(80)\n                    .optional()\n                    .nullable(),\n                  mediaType: z\n                    .enum(['IMAGE', 'VIDEO'])\n                    .describe('Media type.')\n                    .optional(),\n                  thumbnail: z\n                    .object({\n                      url: z\n                        .string()\n                        .describe('Thumbnail url.')\n                        .url()\n                        .optional(),\n                      height: z\n                        .number()\n                        .int()\n                        .describe('Thumbnail height.')\n                        .optional(),\n                      width: z\n                        .number()\n                        .int()\n                        .describe('Thumbnail width.')\n                        .optional(),\n                      altText: z\n                        .string()\n                        .describe('Thumbnail alt text.')\n                        .min(1)\n                        .max(1000)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                  uploadId: z\n                    .string()\n                    .describe('ID used to upload media to Wix Media Manager.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                }),\n                z.intersection(\n                  z.xor([\n                    z.object({\n                      _id: z.never().optional(),\n                      url: z.never().optional(),\n                    }),\n                    z.object({\n                      url: z.never().optional(),\n                      _id: z\n                        .string()\n                        .describe(\n                          'Set media by ID of an existing file in Wix Media Manager.'\n                        )\n                        .min(1)\n                        .max(200),\n                    }),\n                    z.object({\n                      _id: z.never().optional(),\n                      url: z\n                        .string()\n                        .describe('Set media using an external media URL.')\n                        .url(),\n                    }),\n                  ]),\n                  z.xor([\n                    z.object({\n                      image: z.never().optional(),\n                      video: z.never().optional(),\n                    }),\n                    z.object({\n                      video: z.never().optional(),\n                      image: z\n                        .string()\n                        .describe(\n                          \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                        ),\n                    }),\n                    z.object({\n                      image: z.never().optional(),\n                      video: z\n                        .string()\n                        .describe(\n                          \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                        ),\n                    }),\n                  ])\n                )\n              )\n              .describe(\n                'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n              )\n              .optional(),\n            itemsInfo: z\n              .object({\n                items: z\n                  .array(\n                    z.intersection(\n                      z.object({\n                        altText: z\n                          .string()\n                          .describe('Image alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        displayName: z\n                          .string()\n                          .describe(\n                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                          )\n                          .max(80)\n                          .optional()\n                          .nullable(),\n                        mediaType: z\n                          .enum(['IMAGE', 'VIDEO'])\n                          .describe('Media type.')\n                          .optional(),\n                        thumbnail: z\n                          .object({\n                            url: z\n                              .string()\n                              .describe('Thumbnail url.')\n                              .url()\n                              .optional(),\n                            height: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail height.')\n                              .optional(),\n                            width: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail width.')\n                              .optional(),\n                            altText: z\n                              .string()\n                              .describe('Thumbnail alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        uploadId: z\n                          .string()\n                          .describe(\n                            'ID used to upload media to Wix Media Manager.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                      }),\n                      z.intersection(\n                        z.xor([\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z.never().optional(),\n                          }),\n                          z.object({\n                            url: z.never().optional(),\n                            _id: z\n                              .string()\n                              .describe(\n                                'Set media by ID of an existing file in Wix Media Manager.'\n                              )\n                              .min(1)\n                              .max(200),\n                          }),\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z\n                              .string()\n                              .describe(\n                                'Set media using an external media URL.'\n                              )\n                              .url(),\n                          }),\n                        ]),\n                        z.xor([\n                          z.object({\n                            image: z.never().optional(),\n                            video: z.never().optional(),\n                          }),\n                          z.object({\n                            video: z.never().optional(),\n                            image: z\n                              .string()\n                              .describe(\n                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                              ),\n                          }),\n                          z.object({\n                            image: z.never().optional(),\n                            video: z\n                              .string()\n                              .describe(\n                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                  )\n                  .max(50)\n                  .optional(),\n              })\n              .describe(\n                'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n              )\n              .optional(),\n          })\n          .describe(\n            'Product media items. For a detailed explanation of product media, see [About Product Media](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/about-product-media).'\n          )\n          .optional(),\n        seoData: z\n          .object({\n            tags: z\n              .array(\n                z.object({\n                  type: z\n                    .string()\n                    .describe(\n                      'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                    )\n                    .optional(),\n                  props: z\n                    .record(z.string(), z.any())\n                    .describe(\n                      'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  meta: z\n                    .record(z.string(), z.any())\n                    .describe(\n                      'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  children: z\n                    .string()\n                    .describe(\n                      'SEO tag inner content. For example, `<title> inner content </title>`.'\n                    )\n                    .optional(),\n                  custom: z\n                    .boolean()\n                    .describe(\n                      'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                    )\n                    .optional(),\n                  disabled: z\n                    .boolean()\n                    .describe(\n                      \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                    )\n                    .optional(),\n                })\n              )\n              .optional(),\n            settings: z\n              .object({\n                preventAutoRedirect: z\n                  .boolean()\n                  .describe(\n                    'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n                  )\n                  .optional(),\n                keywords: z\n                  .array(\n                    z.object({\n                      term: z.string().describe('Keyword value.').optional(),\n                      isMain: z\n                        .boolean()\n                        .describe(\n                          'Whether the keyword is the main focus keyword.'\n                        )\n                        .optional(),\n                      origin: z\n                        .string()\n                        .describe(\n                          'The source that added the keyword terms to the SEO settings.'\n                        )\n                        .max(1000)\n                        .optional()\n                        .nullable(),\n                    })\n                  )\n                  .max(5)\n                  .optional(),\n              })\n              .describe('SEO general settings.')\n              .optional(),\n          })\n          .describe('Product SEO data.')\n          .optional(),\n        taxGroupId: z\n          .string()\n          .describe(\n            '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        options: z\n          .array(\n            z.intersection(\n              z.object({\n                _id: z\n                  .string()\n                  .describe(\n                    'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n                  )\n                  .min(1)\n                  .max(36)\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Option name.')\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                optionRenderType: z\n                  .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                  .describe('Option render type.')\n                  .optional(),\n                key: z\n                  .string()\n                  .describe(\n                    'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional(),\n              }),\n              z.xor([\n                z.object({ choicesSettings: z.never().optional() }),\n                z.object({\n                  choicesSettings: z\n                    .object({\n                      choices: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              linkedMedia: z\n                                .array(\n                                  z.intersection(\n                                    z.object({\n                                      altText: z\n                                        .string()\n                                        .describe('Image alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                      displayName: z\n                                        .string()\n                                        .describe(\n                                          \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                        )\n                                        .max(80)\n                                        .optional()\n                                        .nullable(),\n                                      mediaType: z\n                                        .enum(['IMAGE', 'VIDEO'])\n                                        .describe('Media type.')\n                                        .optional(),\n                                      thumbnail: z\n                                        .object({\n                                          url: z\n                                            .string()\n                                            .describe('Thumbnail url.')\n                                            .url()\n                                            .optional(),\n                                          height: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail height.')\n                                            .optional(),\n                                          width: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail width.')\n                                            .optional(),\n                                          altText: z\n                                            .string()\n                                            .describe('Thumbnail alt text.')\n                                            .min(1)\n                                            .max(1000)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .optional(),\n                                      uploadId: z\n                                        .string()\n                                        .describe(\n                                          'ID used to upload media to Wix Media Manager.'\n                                        )\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    }),\n                                    z.intersection(\n                                      z.xor([\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          url: z.never().optional(),\n                                          _id: z\n                                            .string()\n                                            .describe(\n                                              'Set media by ID of an existing file in Wix Media Manager.'\n                                            )\n                                            .min(1)\n                                            .max(200),\n                                        }),\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z\n                                            .string()\n                                            .describe(\n                                              'Set media using an external media URL.'\n                                            )\n                                            .url(),\n                                        }),\n                                      ]),\n                                      z.xor([\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          video: z.never().optional(),\n                                          image: z\n                                            .string()\n                                            .describe(\n                                              \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                            ),\n                                        }),\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z\n                                            .string()\n                                            .describe(\n                                              \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                            ),\n                                        }),\n                                      ])\n                                    )\n                                  )\n                                )\n                                .max(15)\n                                .optional(),\n                              choiceType: z\n                                .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                .describe('Choice type.')\n                                .optional(),\n                              key: z\n                                .string()\n                                .describe(\n                                  'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe(\n                                  'Choice name. For text choices, this field also contains the choice value.'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional()\n                                .nullable(),\n                              inStock: z\n                                .boolean()\n                                .describe(\n                                  'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                                )\n                                .optional(),\n                              visible: z\n                                .boolean()\n                                .describe(\n                                  'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                                )\n                                .optional(),\n                              displayImage: z\n                                .string()\n                                .describe(\n                                  'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                )\n                                .optional(),\n                              media: z\n                                .object({\n                                  items: z\n                                    .array(\n                                      z.intersection(\n                                        z.object({}),\n                                        z.xor([\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            mediaId: z\n                                              .string()\n                                              .describe(\n                                                'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'External media URL. Can be used only on write.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                    .max(15)\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                )\n                                .optional(),\n                            }),\n                            z.xor([\n                              z.object({ colorCode: z.never().optional() }),\n                              z.object({\n                                colorCode: z\n                                  .string()\n                                  .describe(\n                                    'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                                  )\n                                  .min(3)\n                                  .max(20),\n                              }),\n                            ])\n                          )\n                        )\n                        .min(1)\n                        .max(100)\n                        .optional(),\n                    })\n                    .describe('Choices settings.'),\n                }),\n              ])\n            )\n          )\n          .max(6)\n          .optional(),\n        modifiers: z\n          .array(\n            z.intersection(\n              z.object({\n                _id: z\n                  .string()\n                  .describe(\n                    'ID of a customization with `customizationType: MODIFIER`.'\n                  )\n                  .min(1)\n                  .max(36)\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Modifier title.')\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                modifierRenderType: z\n                  .enum(['FREE_TEXT', 'TEXT_CHOICES', 'SWATCH_CHOICES'])\n                  .describe('Modifier render type.')\n                  .optional(),\n                mandatory: z\n                  .boolean()\n                  .describe(\n                    'Whether customer input is required for this modifier.'\n                  )\n                  .optional(),\n                key: z\n                  .string()\n                  .describe(\n                    'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional(),\n              }),\n              z.xor([\n                z.object({\n                  freeTextSettings: z.never().optional(),\n                  choicesSettings: z.never().optional(),\n                }),\n                z.object({\n                  choicesSettings: z.never().optional(),\n                  freeTextSettings: z\n                    .object({\n                      minCharCount: z\n                        .number()\n                        .int()\n                        .describe('Minimum number of characters.')\n                        .optional(),\n                      maxCharCount: z\n                        .number()\n                        .int()\n                        .describe('Maximum number of characters.')\n                        .max(500)\n                        .optional(),\n                      defaultAddedPrice: z\n                        .string()\n                        .describe(\n                          \"Default amount to be added to the product's price.\"\n                        )\n                        .optional()\n                        .nullable(),\n                      title: z\n                        .string()\n                        .describe(\n                          'Title of the text to be input by the customer.'\n                        )\n                        .min(1)\n                        .max(150)\n                        .optional(),\n                      key: z\n                        .string()\n                        .describe(\n                          'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                        )\n                        .min(1)\n                        .max(150)\n                        .optional(),\n                    })\n                    .describe('Free text modifier settings.'),\n                }),\n                z.object({\n                  freeTextSettings: z.never().optional(),\n                  choicesSettings: z\n                    .object({\n                      choices: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              linkedMedia: z\n                                .array(\n                                  z.intersection(\n                                    z.object({\n                                      altText: z\n                                        .string()\n                                        .describe('Image alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                      displayName: z\n                                        .string()\n                                        .describe(\n                                          \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                        )\n                                        .max(80)\n                                        .optional()\n                                        .nullable(),\n                                      mediaType: z\n                                        .enum(['IMAGE', 'VIDEO'])\n                                        .describe('Media type.')\n                                        .optional(),\n                                      thumbnail: z\n                                        .object({\n                                          url: z\n                                            .string()\n                                            .describe('Thumbnail url.')\n                                            .url()\n                                            .optional(),\n                                          height: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail height.')\n                                            .optional(),\n                                          width: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail width.')\n                                            .optional(),\n                                          altText: z\n                                            .string()\n                                            .describe('Thumbnail alt text.')\n                                            .min(1)\n                                            .max(1000)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .optional(),\n                                      uploadId: z\n                                        .string()\n                                        .describe(\n                                          'ID used to upload media to Wix Media Manager.'\n                                        )\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    }),\n                                    z.intersection(\n                                      z.xor([\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          url: z.never().optional(),\n                                          _id: z\n                                            .string()\n                                            .describe(\n                                              'Set media by ID of an existing file in Wix Media Manager.'\n                                            )\n                                            .min(1)\n                                            .max(200),\n                                        }),\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z\n                                            .string()\n                                            .describe(\n                                              'Set media using an external media URL.'\n                                            )\n                                            .url(),\n                                        }),\n                                      ]),\n                                      z.xor([\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          video: z.never().optional(),\n                                          image: z\n                                            .string()\n                                            .describe(\n                                              \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                            ),\n                                        }),\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z\n                                            .string()\n                                            .describe(\n                                              \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                            ),\n                                        }),\n                                      ])\n                                    )\n                                  )\n                                )\n                                .max(15)\n                                .optional(),\n                              choiceType: z\n                                .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                .describe('Choice type.')\n                                .optional(),\n                              key: z\n                                .string()\n                                .describe(\n                                  'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe('Choice name.')\n                                .min(1)\n                                .max(50)\n                                .optional()\n                                .nullable(),\n                              addedPrice: z\n                                .string()\n                                .describe('Added price.')\n                                .optional()\n                                .nullable(),\n                              displayImage: z\n                                .string()\n                                .describe(\n                                  'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                )\n                                .optional(),\n                              media: z\n                                .object({\n                                  items: z\n                                    .array(\n                                      z.intersection(\n                                        z.object({}),\n                                        z.xor([\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            mediaId: z\n                                              .string()\n                                              .describe(\n                                                'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'External media URL. Can be used only on write.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                    .max(15)\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                )\n                                .optional(),\n                            }),\n                            z.xor([\n                              z.object({ colorCode: z.never().optional() }),\n                              z.object({\n                                colorCode: z\n                                  .string()\n                                  .describe(\n                                    'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                                  )\n                                  .min(3)\n                                  .max(20),\n                              }),\n                            ])\n                          )\n                        )\n                        .min(1)\n                        .max(100)\n                        .optional(),\n                    })\n                    .describe('Choice settings.'),\n                }),\n              ])\n            )\n          )\n          .max(10)\n          .optional(),\n        brand: z\n          .object({\n            _id: z\n              .string()\n              .describe('Brand ID.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            name: z\n              .string()\n              .describe('Brand name.')\n              .max(50)\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            \"Product [brand](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/brands-v3/introduction).\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n          )\n          .optional(),\n        infoSections: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('Info section ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              uniqueName: z\n                .string()\n                .describe(\n                  'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n              title: z\n                .string()\n                .describe(\n                  'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                )\n                .min(1)\n                .max(50)\n                .optional()\n                .nullable(),\n              description: z\n                .any()\n                .describe(\n                  'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                )\n                .optional(),\n              plainDescription: z\n                .string()\n                .describe(\n                  'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                )\n                .max(16000)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(10)\n          .optional(),\n        ribbon: z\n          .object({\n            _id: z\n              .string()\n              .describe('Ribbon ID.')\n              .min(1)\n              .max(36)\n              .optional()\n              .nullable(),\n            name: z\n              .string()\n              .describe('Ribbon name.')\n              .max(30)\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            \"Primary [ribbon](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/ribbons-v3/introduction) displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n          )\n          .optional(),\n        directCategoriesInfo: z\n          .object({\n            categories: z\n              .array(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Category ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                  index: z\n                    .number()\n                    .int()\n                    .describe(\n                      'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                    )\n                    .min(0)\n                    .max(200)\n                    .optional()\n                    .nullable(),\n                })\n              )\n              .max(2000)\n              .optional(),\n          })\n          .describe(\n            'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product.\\n\\nUpdated automatically when a product is added/removed from a category, when an item is moved within a category, or when a category is deleted.\\n> **Note:** Returned only when you pass `\"DIRECT_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n        allCategoriesInfo: z\n          .object({\n            categories: z\n              .array(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Category ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                  index: z\n                    .number()\n                    .int()\n                    .describe(\n                      'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                    )\n                    .min(0)\n                    .max(200)\n                    .optional()\n                    .nullable(),\n                })\n              )\n              .max(2000)\n              .optional(),\n          })\n          .describe(\n            'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product, as well as their parent categories.\\n> **Note:** Returned only when you pass `\"ALL_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n        mainCategoryId: z\n          .string()\n          .describe(\n            'The ID of the product\\'s primary direct [category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction), which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        costRange: z\n          .object({\n            minValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Minimum value.')\n              .optional(),\n            maxValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Maximum value.')\n              .optional(),\n          })\n          .describe(\n            'Product cost range - minimum and maximum costs of all product variants.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n          )\n          .optional(),\n        inventory: z\n          .object({\n            availabilityStatus: z\n              .enum(['IN_STOCK', 'OUT_OF_STOCK', 'PARTIALLY_OUT_OF_STOCK'])\n              .describe('Current availability status.')\n              .optional(),\n            preorderStatus: z\n              .enum(['ENABLED', 'DISABLED', 'PARTIALLY_ENABLED'])\n              .describe('Current preorder status.')\n              .optional(),\n            preorderAvailability: z\n              .enum(['ALL_VARIANTS', 'NO_VARIANTS', 'SOME_VARIANTS'])\n              .describe('Preorder availability status.')\n              .optional(),\n          })\n          .describe(\n            'Product inventory info.\\n\\n> **Note:** This field reflects the aggregated inventory status from the default location only. Use the [Inventory Items API](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/inventory-items-v3/introduction) to manage inventory for specific locations. Learn more about [inventory management](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-inventory-management).'\n          )\n          .optional(),\n        productType: z\n          .enum(['PHYSICAL', 'DIGITAL'])\n          .describe(\n            'Product type: `PHYSICAL` for tangible goods that require shipping, or `DIGITAL` for downloadable content.\\n\\nWhen passing `productType: PHYSICAL`, you must also pass `physicalProperties`. When passing `productType: DIGITAL`, you can optionally pass `digitalProperties` in each variant.'\n          )\n          .optional(),\n        handle: z\n          .string()\n          .describe(\n            \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n          )\n          .min(1)\n          .max(100)\n          .optional()\n          .nullable(),\n        currency: z\n          .string()\n          .describe(\n            'Currency used for the pricing of this product, in [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes) format.\\n\\nDefaults to the currency defined in the site settings, unless specified in the request\\'s `x-wix-currency` header.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n          )\n          .optional()\n          .nullable(),\n        breadcrumbsInfo: z\n          .object({\n            breadcrumbs: z\n              .array(\n                z.object({\n                  categoryId: z\n                    .string()\n                    .describe('Category ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                  categoryName: z\n                    .string()\n                    .describe('Category name.')\n                    .min(1)\n                    .max(80)\n                    .optional(),\n                  categorySlug: z\n                    .string()\n                    .describe('Category slug.')\n                    .min(1)\n                    .max(100)\n                    .optional(),\n                })\n              )\n              .max(5)\n              .optional(),\n          })\n          .describe(\n            'Breadcrumbs of the `mainCategoryId`. Used to navigate to parent [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction). Useful for building navigation UI and for SEO purposes.\\n> **Note:** Returned only when you pass `\"BREADCRUMBS_INFO\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n        actualPriceRange: z\n          .object({\n            minValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Minimum value.')\n              .optional(),\n            maxValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Maximum value.')\n              .optional(),\n          })\n          .describe(\n            'Minimum and maximum current selling prices across all product variants.'\n          )\n          .optional(),\n        compareAtPriceRange: z\n          .object({\n            minValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Minimum value.')\n              .optional(),\n            maxValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Maximum value.')\n              .optional(),\n          })\n          .describe(\n            'Minimum and maximum compare-at prices (original prices before discounts) across all product variants. Used to show savings to customers.'\n          )\n          .optional(),\n        variantsInfo: z\n          .object({\n            variants: z\n              .array(\n                z.intersection(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Variant ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    visible: z\n                      .boolean()\n                      .describe(\n                        \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                      )\n                      .optional()\n                      .nullable(),\n                    sku: z\n                      .string()\n                      .describe('Variant SKU (stock keeping unit).')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    barcode: z\n                      .string()\n                      .describe('Variant barcode.')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.object({\n                          optionChoiceIds: z\n                            .object({\n                              optionId: z\n                                .string()\n                                .describe('Option ID.')\n                                .min(1)\n                                .max(36)\n                                .optional(),\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                            )\n                            .optional(),\n                          optionChoiceNames: z\n                            .object({\n                              optionName: z\n                                .string()\n                                .describe('Option name.')\n                                .min(1)\n                                .optional(),\n                              choiceName: z\n                                .string()\n                                .describe('Choice name.')\n                                .min(1)\n                                .optional(),\n                              renderType: z\n                                .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                .describe(\n                                  'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .min(0)\n                      .max(6)\n                      .optional(),\n                    price: z\n                      .object({\n                        actualPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            \"Variant's current selling price. Must be greater than or equal to 0.\"\n                          )\n                          .optional(),\n                        compareAtPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                          )\n                          .optional(),\n                        priceAfterDiscount: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                          )\n                          .optional(),\n                      })\n                      .describe('Variant price.')\n                      .optional(),\n                    revenueDetails: z\n                      .object({\n                        cost: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe('Item cost.')\n                          .optional(),\n                        profit: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                          )\n                          .optional(),\n                        profitMargin: z\n                          .number()\n                          .describe(\n                            'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                          )\n                          .min(0)\n                          .max(1)\n                          .optional(),\n                      })\n                      .describe(\n                        'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                      )\n                      .optional(),\n                    media: z\n                      .intersection(\n                        z.object({\n                          altText: z\n                            .string()\n                            .describe('Image alt text.')\n                            .min(1)\n                            .max(1000)\n                            .optional()\n                            .nullable(),\n                          displayName: z\n                            .string()\n                            .describe(\n                              \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                            )\n                            .max(80)\n                            .optional()\n                            .nullable(),\n                          mediaType: z\n                            .enum(['IMAGE', 'VIDEO'])\n                            .describe('Media type.')\n                            .optional(),\n                          thumbnail: z\n                            .object({\n                              url: z\n                                .string()\n                                .describe('Thumbnail url.')\n                                .url()\n                                .optional(),\n                              height: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail height.')\n                                .optional(),\n                              width: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail width.')\n                                .optional(),\n                              altText: z\n                                .string()\n                                .describe('Thumbnail alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                          uploadId: z\n                            .string()\n                            .describe(\n                              'ID used to upload media to Wix Media Manager.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                        }),\n                        z.intersection(\n                          z.xor([\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z.never().optional(),\n                            }),\n                            z.object({\n                              url: z.never().optional(),\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Set media by ID of an existing file in Wix Media Manager.'\n                                )\n                                .min(1)\n                                .max(200),\n                            }),\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z\n                                .string()\n                                .describe(\n                                  'Set media using an external media URL.'\n                                )\n                                .url(),\n                            }),\n                          ]),\n                          z.xor([\n                            z.object({\n                              image: z.never().optional(),\n                              video: z.never().optional(),\n                            }),\n                            z.object({\n                              video: z.never().optional(),\n                              image: z\n                                .string()\n                                .describe(\n                                  \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                ),\n                            }),\n                            z.object({\n                              image: z.never().optional(),\n                              video: z\n                                .string()\n                                .describe(\n                                  \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                ),\n                            }),\n                          ])\n                        )\n                      )\n                      .describe('Variant media.')\n                      .optional(),\n                    subscriptionPricesInfo: z\n                      .object({\n                        subscriptionPrices: z\n                          .array(\n                            z.object({\n                              subscriptionId: z\n                                .string()\n                                .describe('Subscription ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                              price: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                )\n                                .optional(),\n                              pricePerUnit: z\n                                .object({\n                                  value: z\n                                    .string()\n                                    .describe(\n                                      'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                    )\n                                    .optional(),\n                                  description: z\n                                    .string()\n                                    .describe(\n                                      'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                  priceAfterDiscount: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe('Price per unit info.')\n                                .optional(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                          )\n                          .max(6)\n                          .optional(),\n                      })\n                      .describe(\n                        'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    inventoryStatus: z\n                      .object({\n                        inStock: z\n                          .boolean()\n                          .describe('Whether the variant is in stock.')\n                          .optional(),\n                        preorderEnabled: z\n                          .boolean()\n                          .describe(\n                            'Whether preorder is enabled for this variant.'\n                          )\n                          .optional(),\n                      })\n                      .describe('Variant inventory status.')\n                      .optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z.never().optional(),\n                    }),\n                    z.object({\n                      digitalProperties: z.never().optional(),\n                      physicalProperties: z\n                        .object({\n                          weight: z\n                            .number()\n                            .describe(\n                              'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                            )\n                            .min(0)\n                            .max(999999999.99)\n                            .optional()\n                            .nullable(),\n                          pricePerUnit: z\n                            .object({\n                              settings: z\n                                .object({\n                                  quantity: z\n                                    .number()\n                                    .describe(\n                                      'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                    )\n                                    .min(0.01)\n                                    .max(999999999.99)\n                                    .optional(),\n                                  measurementUnit: z\n                                    .enum([\n                                      'UNSPECIFIED',\n                                      'ML',\n                                      'CL',\n                                      'L',\n                                      'CBM',\n                                      'MG',\n                                      'G',\n                                      'KG',\n                                      'MM',\n                                      'CM',\n                                      'M',\n                                      'SQM',\n                                      'OZ',\n                                      'LB',\n                                      'FLOZ',\n                                      'PT',\n                                      'QT',\n                                      'GAL',\n                                      'IN',\n                                      'FT',\n                                      'YD',\n                                      'SQFT',\n                                    ])\n                                    .describe(\n                                      'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                )\n                                .optional(),\n                              value: z\n                                .string()\n                                .describe(\n                                  \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                )\n                                .optional(),\n                              description: z\n                                .string()\n                                .describe(\n                                  'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(100)\n                                .optional()\n                                .nullable(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                            )\n                            .optional(),\n                          productDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Product dimensions (length, width, height of the physical product).'\n                            )\n                            .optional(),\n                          packageDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Package dimensions (length, width, height of the shipping package).'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Physical properties. Must be passed when `productType: PHYSICAL`'\n                        ),\n                    }),\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z\n                        .object({\n                          digitalFile: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe('Media ID in media manager.')\n                                .min(1)\n                                .max(100)\n                                .optional(),\n                              fileName: z\n                                .string()\n                                .describe('Original file name.')\n                                .min(1)\n                                .max(1000)\n                                .optional(),\n                              fileSize: z\n                                .string()\n                                .describe('Original file size.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              fileType: z\n                                .enum([\n                                  'UNSPECIFIED',\n                                  'SECURE_PICTURE',\n                                  'SECURE_VIDEO',\n                                  'SECURE_DOCUMENT',\n                                  'SECURE_MUSIC',\n                                  'SECURE_ARCHIVE',\n                                  'SECURE_RAW',\n                                ])\n                                .describe('File type.')\n                                .optional(),\n                            })\n                            .describe(\n                              'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Digital properties. Must be passed when `productType: DIGITAL`'\n                        ),\n                    }),\n                  ])\n                )\n              )\n              .min(1)\n              .max(1000)\n              .optional(),\n          })\n          .describe(\n            'Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nYou must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).'\n          )\n          .optional(),\n        purchaseEligibility: z\n          .object({ userCriteria: z.enum(['MEMBERS_ONLY']).optional() })\n          .describe('Purchase eligibility settings for the product.')\n          .optional(),\n        additionalRibbons: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('Ribbon ID.')\n                .min(1)\n                .max(36)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Ribbon name.')\n                .max(30)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(4)\n          .optional(),\n        extendedFields: z\n          .object({\n            namespaces: z\n              .record(z.string(), z.record(z.string(), z.any()))\n              .describe(\n                'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n              )\n              .optional(),\n          })\n          .describe(\n            'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n          )\n          .optional(),\n        tags: z\n          .object({\n            privateTags: z\n              .object({ tagIds: z.array(z.string()).max(100).optional() })\n              .describe(\n                'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n              )\n              .optional(),\n            publicTags: z\n              .object({ tagIds: z.array(z.string()).max(100).optional() })\n              .describe(\n                'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n              )\n              .optional(),\n          })\n          .describe('Tags')\n          .optional(),\n        subscriptionDetails: z\n          .object({\n            subscriptions: z\n              .array(\n                z.intersection(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Subscription ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    title: z\n                      .string()\n                      .describe('Subscription title.')\n                      .min(1)\n                      .max(20)\n                      .optional(),\n                    description: z\n                      .string()\n                      .describe('Subscription description.')\n                      .max(60)\n                      .optional()\n                      .nullable(),\n                    visible: z\n                      .boolean()\n                      .describe(\n                        'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                      )\n                      .optional()\n                      .nullable(),\n                    frequency: z\n                      .enum(['UNDEFINED', 'DAY', 'WEEK', 'MONTH', 'YEAR'])\n                      .describe(\n                        'Frequency of recurring payment.\\nFor example, if `frequency: MONTH` and `billingCycles: 6`; payment will be made monthly for 6 months.'\n                      )\n                      .optional(),\n                    interval: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                      )\n                      .min(1)\n                      .max(50)\n                      .optional()\n                      .nullable(),\n                    discount: z\n                      .intersection(\n                        z.object({\n                          type: z\n                            .enum(['AMOUNT', 'PERCENT'])\n                            .describe('Discount type.')\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({\n                            amountOff: z.never().optional(),\n                            percentOff: z.never().optional(),\n                          }),\n                          z.object({\n                            percentOff: z.never().optional(),\n                            amountOff: z\n                              .string()\n                              .describe(\n                                'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                              ),\n                          }),\n                          z.object({\n                            amountOff: z.never().optional(),\n                            percentOff: z\n                              .number()\n                              .describe(\n                                'Percentage subtracted from the variant price when calculating subscription prices.'\n                              )\n                              .min(0.1)\n                              .max(99.9),\n                          }),\n                        ])\n                      )\n                      .describe(\n                        'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                      )\n                      .optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      autoRenewal: z.never().optional(),\n                      billingCycles: z.never().optional(),\n                    }),\n                    z.object({\n                      billingCycles: z.never().optional(),\n                      autoRenewal: z\n                        .boolean()\n                        .describe(\n                          'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                        ),\n                    }),\n                    z.object({\n                      autoRenewal: z.never().optional(),\n                      billingCycles: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Number of billing cycles before subscription ends.'\n                        )\n                        .min(2)\n                        .max(999),\n                    }),\n                  ])\n                )\n              )\n              .min(1)\n              .max(6)\n              .optional(),\n            allowOneTimePurchases: z\n              .boolean()\n              .describe(\n                'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n              )\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n          )\n          .optional(),\n        variantSummary: z\n          .object({\n            variantCount: z\n              .number()\n              .int()\n              .describe('The total number of variants for the product.')\n              .optional(),\n            minPriceVariant: z\n              .intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Variant ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  visible: z\n                    .boolean()\n                    .describe(\n                      \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                    )\n                    .optional()\n                    .nullable(),\n                  sku: z\n                    .string()\n                    .describe('Variant SKU (stock keeping unit).')\n                    .min(1)\n                    .max(40)\n                    .optional()\n                    .nullable(),\n                  barcode: z\n                    .string()\n                    .describe('Variant barcode.')\n                    .min(1)\n                    .max(40)\n                    .optional()\n                    .nullable(),\n                  choices: z\n                    .array(\n                      z.object({\n                        optionChoiceIds: z\n                          .object({\n                            optionId: z\n                              .string()\n                              .describe('Option ID.')\n                              .min(1)\n                              .max(36)\n                              .optional(),\n                            choiceId: z\n                              .string()\n                              .describe('Choice ID.')\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                          )\n                          .optional(),\n                        optionChoiceNames: z\n                          .object({\n                            optionName: z\n                              .string()\n                              .describe('Option name.')\n                              .min(1)\n                              .optional(),\n                            choiceName: z\n                              .string()\n                              .describe('Choice name.')\n                              .min(1)\n                              .optional(),\n                            renderType: z\n                              .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                              .describe(\n                                'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                      })\n                    )\n                    .min(0)\n                    .max(6)\n                    .optional(),\n                  price: z\n                    .object({\n                      actualPrice: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          \"Variant's current selling price. Must be greater than or equal to 0.\"\n                        )\n                        .optional(),\n                      compareAtPrice: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                        )\n                        .optional(),\n                      priceAfterDiscount: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                        )\n                        .optional(),\n                    })\n                    .describe('Variant price.')\n                    .optional(),\n                  revenueDetails: z\n                    .object({\n                      cost: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe('Item cost.')\n                        .optional(),\n                      profit: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                        )\n                        .optional(),\n                      profitMargin: z\n                        .number()\n                        .describe(\n                          'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                        )\n                        .min(0)\n                        .max(1)\n                        .optional(),\n                    })\n                    .describe(\n                      'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                    )\n                    .optional(),\n                  media: z\n                    .intersection(\n                      z.object({\n                        altText: z\n                          .string()\n                          .describe('Image alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        displayName: z\n                          .string()\n                          .describe(\n                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                          )\n                          .max(80)\n                          .optional()\n                          .nullable(),\n                        mediaType: z\n                          .enum(['IMAGE', 'VIDEO'])\n                          .describe('Media type.')\n                          .optional(),\n                        thumbnail: z\n                          .object({\n                            url: z\n                              .string()\n                              .describe('Thumbnail url.')\n                              .url()\n                              .optional(),\n                            height: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail height.')\n                              .optional(),\n                            width: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail width.')\n                              .optional(),\n                            altText: z\n                              .string()\n                              .describe('Thumbnail alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        uploadId: z\n                          .string()\n                          .describe(\n                            'ID used to upload media to Wix Media Manager.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                      }),\n                      z.intersection(\n                        z.xor([\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z.never().optional(),\n                          }),\n                          z.object({\n                            url: z.never().optional(),\n                            _id: z\n                              .string()\n                              .describe(\n                                'Set media by ID of an existing file in Wix Media Manager.'\n                              )\n                              .min(1)\n                              .max(200),\n                          }),\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z\n                              .string()\n                              .describe(\n                                'Set media using an external media URL.'\n                              )\n                              .url(),\n                          }),\n                        ]),\n                        z.xor([\n                          z.object({\n                            image: z.never().optional(),\n                            video: z.never().optional(),\n                          }),\n                          z.object({\n                            video: z.never().optional(),\n                            image: z\n                              .string()\n                              .describe(\n                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                              ),\n                          }),\n                          z.object({\n                            image: z.never().optional(),\n                            video: z\n                              .string()\n                              .describe(\n                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                    .describe('Variant media.')\n                    .optional(),\n                  subscriptionPricesInfo: z\n                    .object({\n                      subscriptionPrices: z\n                        .array(\n                          z.object({\n                            subscriptionId: z\n                              .string()\n                              .describe('Subscription ID.')\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                            price: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                              )\n                              .optional(),\n                            pricePerUnit: z\n                              .object({\n                                value: z\n                                  .string()\n                                  .describe(\n                                    'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                  )\n                                  .optional(),\n                                description: z\n                                  .string()\n                                  .describe(\n                                    'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                                priceAfterDiscount: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe('Price per unit info.')\n                              .optional(),\n                            priceAfterDiscount: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                              )\n                              .optional(),\n                          })\n                        )\n                        .max(6)\n                        .optional(),\n                    })\n                    .describe(\n                      'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                  inventoryStatus: z\n                    .object({\n                      inStock: z\n                        .boolean()\n                        .describe('Whether the variant is in stock.')\n                        .optional(),\n                      preorderEnabled: z\n                        .boolean()\n                        .describe(\n                          'Whether preorder is enabled for this variant.'\n                        )\n                        .optional(),\n                    })\n                    .describe('Variant inventory status.')\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    physicalProperties: z.never().optional(),\n                    digitalProperties: z.never().optional(),\n                  }),\n                  z.object({\n                    digitalProperties: z.never().optional(),\n                    physicalProperties: z\n                      .object({\n                        weight: z\n                          .number()\n                          .describe(\n                            'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                          )\n                          .min(0)\n                          .max(999999999.99)\n                          .optional()\n                          .nullable(),\n                        pricePerUnit: z\n                          .object({\n                            settings: z\n                              .object({\n                                quantity: z\n                                  .number()\n                                  .describe(\n                                    'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                  )\n                                  .min(0.01)\n                                  .max(999999999.99)\n                                  .optional(),\n                                measurementUnit: z\n                                  .enum([\n                                    'UNSPECIFIED',\n                                    'ML',\n                                    'CL',\n                                    'L',\n                                    'CBM',\n                                    'MG',\n                                    'G',\n                                    'KG',\n                                    'MM',\n                                    'CM',\n                                    'M',\n                                    'SQM',\n                                    'OZ',\n                                    'LB',\n                                    'FLOZ',\n                                    'PT',\n                                    'QT',\n                                    'GAL',\n                                    'IN',\n                                    'FT',\n                                    'YD',\n                                    'SQFT',\n                                  ])\n                                  .describe(\n                                    'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                              )\n                              .optional(),\n                            value: z\n                              .string()\n                              .describe(\n                                \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                              )\n                              .optional(),\n                            description: z\n                              .string()\n                              .describe(\n                                'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(100)\n                              .optional()\n                              .nullable(),\n                            priceAfterDiscount: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                          )\n                          .optional(),\n                        productDimensions: z\n                          .object({\n                            length: z\n                              .string()\n                              .describe(\n                                'Length. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            width: z\n                              .string()\n                              .describe(\n                                'Width. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            height: z\n                              .string()\n                              .describe(\n                                'Height. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            unit: z\n                              .enum([\n                                'UNKNOWN_DIMENSIONS_UNIT',\n                                'MM',\n                                'CM',\n                                'M',\n                                'IN',\n                                'FT',\n                                'YD',\n                              ])\n                              .describe(\n                                'Unit of measurement for dimensions (length, width, height).'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Product dimensions (length, width, height of the physical product).'\n                          )\n                          .optional(),\n                        packageDimensions: z\n                          .object({\n                            length: z\n                              .string()\n                              .describe(\n                                'Length. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            width: z\n                              .string()\n                              .describe(\n                                'Width. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            height: z\n                              .string()\n                              .describe(\n                                'Height. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            unit: z\n                              .enum([\n                                'UNKNOWN_DIMENSIONS_UNIT',\n                                'MM',\n                                'CM',\n                                'M',\n                                'IN',\n                                'FT',\n                                'YD',\n                              ])\n                              .describe(\n                                'Unit of measurement for dimensions (length, width, height).'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Package dimensions (length, width, height of the shipping package).'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Physical properties. Must be passed when `productType: PHYSICAL`'\n                      ),\n                  }),\n                  z.object({\n                    physicalProperties: z.never().optional(),\n                    digitalProperties: z\n                      .object({\n                        digitalFile: z\n                          .object({\n                            _id: z\n                              .string()\n                              .describe('Media ID in media manager.')\n                              .min(1)\n                              .max(100)\n                              .optional(),\n                            fileName: z\n                              .string()\n                              .describe('Original file name.')\n                              .min(1)\n                              .max(1000)\n                              .optional(),\n                            fileSize: z\n                              .string()\n                              .describe('Original file size.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                            fileType: z\n                              .enum([\n                                'UNSPECIFIED',\n                                'SECURE_PICTURE',\n                                'SECURE_VIDEO',\n                                'SECURE_DOCUMENT',\n                                'SECURE_MUSIC',\n                                'SECURE_ARCHIVE',\n                                'SECURE_RAW',\n                              ])\n                              .describe('File type.')\n                              .optional(),\n                          })\n                          .describe(\n                            'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Digital properties. Must be passed when `productType: DIGITAL`'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\n                'The variant with the lowest `actualPrice` among visible variants for this product.\\n\\nHidden variants are excluded; ties are broken by variant order. Empty if the product has no visible variants.\\n> **Note:** Returned only when you pass `\"MIN_PRICE_VARIANT\"` to the `fields` array in Products API requests.'\n              )\n              .optional(),\n          })\n          .describe('The total number of variants for the product.')\n          .optional(),\n      }),\n      z.xor([\n        z.object({ physicalProperties: z.never().optional() }),\n        z.object({\n          physicalProperties: z\n            .object({\n              pricePerUnit: z\n                .object({\n                  quantity: z\n                    .number()\n                    .describe(\n                      'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                    )\n                    .min(0.01)\n                    .max(999999999.99)\n                    .optional(),\n                  measurementUnit: z\n                    .enum([\n                      'UNSPECIFIED',\n                      'ML',\n                      'CL',\n                      'L',\n                      'CBM',\n                      'MG',\n                      'G',\n                      'KG',\n                      'MM',\n                      'CM',\n                      'M',\n                      'SQM',\n                      'OZ',\n                      'LB',\n                      'FLOZ',\n                      'PT',\n                      'QT',\n                      'GAL',\n                      'IN',\n                      'FT',\n                      'YD',\n                      'SQFT',\n                    ])\n                    .describe(\n                      'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n                )\n                .optional(),\n              fulfillerId: z\n                .string()\n                .describe('Fulfiller ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              shippingWeightRange: z\n                .object({\n                  minValue: z\n                    .number()\n                    .describe(\n                      'Minimum weight across all variants associated with this product.'\n                    )\n                    .min(0)\n                    .max(999999999.99)\n                    .optional(),\n                  maxValue: z\n                    .number()\n                    .describe(\n                      'Maximum weight across all variants associated with this product.'\n                    )\n                    .min(0)\n                    .max(999999999.99)\n                    .optional(),\n                })\n                .describe(\n                  'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n                )\n                .optional(),\n              pricePerUnitRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      value: z\n                        .string()\n                        .describe(\n                          \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                        )\n                        .optional(),\n                      description: z\n                        .string()\n                        .describe(\n                          'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                        )\n                        .max(100)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum price per unit across all variants.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      value: z\n                        .string()\n                        .describe(\n                          \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                        )\n                        .optional(),\n                      description: z\n                        .string()\n                        .describe(\n                          'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                        )\n                        .max(100)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum price per unit across all variants.')\n                    .optional(),\n                })\n                .describe(\n                  'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n                )\n                .optional(),\n              weightMeasurementUnitInfo: z\n                .object({\n                  weightMeasurementUnit: z\n                    .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                    .describe('Weight measurement unit.')\n                    .optional(),\n                })\n                .describe(\n                  'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              deliveryProfileId: z\n                .string()\n                .describe('Delivery profile ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n            ),\n        }),\n      ])\n    )\n    .describe('Updated product.')\n    .optional(),\n  inventoryResults: z\n    .object({\n      results: z\n        .array(\n          z.object({\n            itemMetadata: z\n              .object({\n                _id: z\n                  .string()\n                  .describe(\n                    \"Item ID. Should always be available, unless it's impossible (for example, when failing to create an item).\"\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                originalIndex: z\n                  .number()\n                  .int()\n                  .describe(\n                    'Index of the item within the request array. Allows for correlation between request and response items.'\n                  )\n                  .optional(),\n                success: z\n                  .boolean()\n                  .describe(\n                    'Whether the requested action was successful for this item. When `false`, the `error` field is populated.'\n                  )\n                  .optional(),\n                error: z\n                  .object({\n                    code: z.string().describe('Error code.').optional(),\n                    description: z\n                      .string()\n                      .describe('Description of the error.')\n                      .optional(),\n                    data: z\n                      .record(z.string(), z.any())\n                      .describe('Data related to the error.')\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe('Details about the error in case of failure.')\n                  .optional(),\n              })\n              .describe('Bulk action metadata for inventory item.')\n              .optional(),\n            item: z\n              .intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Inventory item ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  revision: z\n                    .string()\n                    .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                    .describe(\n                      'Revision number, which increments by 1 each time the inventory item is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the inventory item.\\n\\nIgnored when creating an inventory item.'\n                    )\n                    .optional()\n                    .nullable(),\n                  _createdDate: z\n                    .date()\n                    .describe('Date and time the inventory item was created.')\n                    .optional()\n                    .nullable(),\n                  _updatedDate: z\n                    .date()\n                    .describe(\n                      'Date and time the inventory item was last updated.'\n                    )\n                    .optional()\n                    .nullable(),\n                  variantId: z\n                    .string()\n                    .describe('Variant ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                  locationId: z\n                    .string()\n                    .describe(\n                      \"Stores location ID. If not specified when creating an inventory item, the store's default location is used.\"\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  productId: z\n                    .string()\n                    .describe('Product ID.')\n                    .min(1)\n                    .max(36)\n                    .optional(),\n                  trackQuantity: z\n                    .boolean()\n                    .describe('Whether the quantity is being tracked.')\n                    .optional(),\n                  availabilityStatus: z\n                    .enum(['OUT_OF_STOCK', 'IN_STOCK', 'PREORDER'])\n                    .describe('Inventory item availability status.')\n                    .optional(),\n                  preorderInfo: z\n                    .object({\n                      enabled: z\n                        .boolean()\n                        .describe(\n                          \"Whether preorder is enabled for this inventory item.\\n\\n> **Note:** Preorder can't be enabled for digital products or products with subscriptions.\\n\\nDefault: `false`\"\n                        )\n                        .optional()\n                        .nullable(),\n                      message: z\n                        .string()\n                        .describe(\n                          'Message displayed to customers when the item is out of stock and preorder is enabled.'\n                        )\n                        .min(1)\n                        .max(250)\n                        .optional()\n                        .nullable(),\n                      limit: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Maximum number of items that can be preordered after stock reaches zero.\\n\\nSupported only for inventory items with `trackQuantity = true`.\\n\\nDefault: `100000`'\n                        )\n                        .min(0)\n                        .max(100000)\n                        .optional()\n                        .nullable(),\n                      counter: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Number of times this item has been preordered.\\n\\nSupported only for inventory items with `trackQuantity = true`.'\n                        )\n                        .min(0)\n                        .max(99999)\n                        .optional()\n                        .nullable(),\n                      quantity: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Remaining quantity available for preorder.\\n\\nSupported only for items with `trackQuantity` set to `true`.'\n                        )\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      \"Item preorder info.\\n\\nPreorder settings are configured per inventory item, so each variant-location combination can have its own preorder configuration.\\n\\n> **Note:** The product entity's `inventory.preorderStatus` and `inventory.preorderAvailability` fields reflect only the default location's preorder state.\"\n                    )\n                    .optional(),\n                  product: z\n                    .object({\n                      name: z\n                        .string()\n                        .describe('Product name.')\n                        .max(80)\n                        .optional()\n                        .nullable(),\n                      directCategoryIds: z\n                        .array(z.string())\n                        .max(2000)\n                        .optional(),\n                      variantName: z\n                        .string()\n                        .describe('Variant name.')\n                        .min(1)\n                        .max(250)\n                        .optional()\n                        .nullable(),\n                      variantSku: z\n                        .string()\n                        .describe('Variant SKU (stock keeping unit).')\n                        .min(1)\n                        .max(40)\n                        .optional()\n                        .nullable(),\n                      variantVisible: z\n                        .boolean()\n                        .describe(\n                          'Whether the variant is visible in the store.'\n                        )\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Associated product and variant details.')\n                    .optional(),\n                  extendedFields: z\n                    .object({\n                      namespaces: z\n                        .record(z.string(), z.record(z.string(), z.any()))\n                        .describe(\n                          'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                        )\n                        .optional(),\n                    })\n                    .describe(\n                      'Custom field data for the inventory item object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n                    )\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    inStock: z.never().optional(),\n                    quantity: z.never().optional(),\n                  }),\n                  z.object({\n                    quantity: z.never().optional(),\n                    inStock: z\n                      .boolean()\n                      .describe(\n                        \"Indicates that inventory is tracked by status rather than quantity.\\n\\nWhen set to `true`, the item is marked as available for sale without tracking exact quantities.\\nWhen set to `false`, the item is marked as out of stock.\\nThis tracking method is useful for made-to-order products or items with unlimited inventory.\\n\\nWhen using this tracking method, `trackQuantity` is `false` and preorder limits aren't supported.\"\n                      ),\n                  }),\n                  z.object({\n                    inStock: z.never().optional(),\n                    quantity: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Indicates that inventory is tracked by quantity.\\n\\nSet this field to the number of items currently in stock.\\nThis tracking method is useful when you need to know exactly how many items are available.\\n\\nWhen using this tracking method, `trackQuantity` is `true`.\\nQuantity can be negative when inventory is decremented for an order that has already been paid.'\n                      )\n                      .min(-99999)\n                      .max(99999),\n                  }),\n                ])\n              )\n              .describe(\n                'Full inventory item entity.\\n\\nReturned only if `returnEntity: true` is passed in the request.'\n              )\n              .optional(),\n          })\n        )\n        .min(0)\n        .max(1000)\n        .optional(),\n      bulkActionMetadata: z\n        .object({\n          totalSuccesses: z\n            .number()\n            .int()\n            .describe('Number of items that were successfully processed.')\n            .optional(),\n          totalFailures: z\n            .number()\n            .int()\n            .describe(\"Number of items that couldn't be processed.\")\n            .optional(),\n          undetailedFailures: z\n            .number()\n            .int()\n            .describe(\n              'Number of failures without details because detailed failure threshold was exceeded.'\n            )\n            .optional(),\n        })\n        .describe('Bulk action metadata.')\n        .optional(),\n      error: z\n        .object({\n          code: z.string().describe('Error code.').optional(),\n          description: z\n            .string()\n            .describe('Description of the error.')\n            .optional(),\n          data: z\n            .record(z.string(), z.any())\n            .describe('Data related to the error.')\n            .optional()\n            .nullable(),\n        })\n        .describe('Error details in case of failed action.')\n        .optional(),\n    })\n    .describe('Inventories updated by bulk action.')\n    .optional(),\n});\nexport const BulkCreateProductsRequest = z.object({\n  products: z\n    .array(\n      z.intersection(\n        z.object({\n          _id: z\n            .string()\n            .describe('Product ID.')\n            .min(1)\n            .max(36)\n            .optional()\n            .nullable(),\n          revision: z\n            .string()\n            .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n            .describe(\n              'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product.'\n            )\n            .optional()\n            .nullable(),\n          _createdDate: z\n            .date()\n            .describe('Date and time the product was created.')\n            .optional()\n            .nullable(),\n          _updatedDate: z\n            .date()\n            .describe('Date and time the product was updated.')\n            .optional()\n            .nullable(),\n          name: z\n            .string()\n            .describe('Product name. Translatable.')\n            .min(1)\n            .max(80),\n          slug: z\n            .string()\n            .describe(\n              'Product slug. A URL-friendly identifier used in the product page address.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n            )\n            .min(1)\n            .max(300)\n            .optional()\n            .nullable(),\n          url: z\n            .string()\n            .describe(\n              'URL to the site\\'s product page.\\n\\n> **Note:** Returned only when you pass `\"URL\"` to the `fields` array in Products API requests.'\n            )\n            .optional(),\n          description: z\n            .any()\n            .describe(\n              'Product description using rich content.\\n> **Note:** Returned only when you pass `\"DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n            )\n            .optional(),\n          plainDescription: z\n            .string()\n            .describe(\n              'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n            )\n            .max(16000)\n            .optional()\n            .nullable(),\n          visible: z\n            .boolean()\n            .describe(\n              \"Whether the product is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the default variant's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n            )\n            .optional()\n            .nullable(),\n          visibleInPos: z\n            .boolean()\n            .describe(\n              'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n            )\n            .optional()\n            .nullable(),\n          media: z\n            .object({\n              main: z\n                .intersection(\n                  z.object({\n                    altText: z\n                      .string()\n                      .describe('Image alt text.')\n                      .min(1)\n                      .max(1000)\n                      .optional()\n                      .nullable(),\n                    displayName: z\n                      .string()\n                      .describe(\n                        \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                      )\n                      .max(80)\n                      .optional()\n                      .nullable(),\n                    mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                    thumbnail: z\n                      .object({\n                        url: z\n                          .string()\n                          .describe('Thumbnail url.')\n                          .url()\n                          .optional(),\n                        height: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail height.')\n                          .optional(),\n                        width: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail width.')\n                          .optional(),\n                        altText: z\n                          .string()\n                          .describe('Thumbnail alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    uploadId: z\n                      .string()\n                      .describe('ID used to upload media to Wix Media Manager.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                  }),\n                  z.intersection(\n                    z.xor([\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z.never().optional(),\n                      }),\n                      z.object({\n                        url: z.never().optional(),\n                        _id: z\n                          .string()\n                          .describe(\n                            'Set media by ID of an existing file in Wix Media Manager.'\n                          )\n                          .min(1)\n                          .max(200),\n                      }),\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z\n                          .string()\n                          .describe('Set media using an external media URL.')\n                          .url(),\n                      }),\n                    ]),\n                    z.xor([\n                      z.object({\n                        image: z.never().optional(),\n                        video: z.never().optional(),\n                      }),\n                      z.object({\n                        video: z.never().optional(),\n                        image: z\n                          .string()\n                          .describe(\n                            \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                          ),\n                      }),\n                      z.object({\n                        image: z.never().optional(),\n                        video: z\n                          .string()\n                          .describe(\n                            \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                          ),\n                      }),\n                    ])\n                  )\n                )\n                .describe(\n                  'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n                )\n                .optional(),\n              itemsInfo: z\n                .object({\n                  items: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          altText: z\n                            .string()\n                            .describe('Image alt text.')\n                            .min(1)\n                            .max(1000)\n                            .optional()\n                            .nullable(),\n                          displayName: z\n                            .string()\n                            .describe(\n                              \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                            )\n                            .max(80)\n                            .optional()\n                            .nullable(),\n                          mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                          thumbnail: z\n                            .object({\n                              url: z\n                                .string()\n                                .describe('Thumbnail url.')\n                                .url()\n                                .optional(),\n                              height: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail height.')\n                                .optional(),\n                              width: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail width.')\n                                .optional(),\n                              altText: z\n                                .string()\n                                .describe('Thumbnail alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                          uploadId: z\n                            .string()\n                            .describe(\n                              'ID used to upload media to Wix Media Manager.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                        }),\n                        z.intersection(\n                          z.xor([\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z.never().optional(),\n                            }),\n                            z.object({\n                              url: z.never().optional(),\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Set media by ID of an existing file in Wix Media Manager.'\n                                )\n                                .min(1)\n                                .max(200),\n                            }),\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z\n                                .string()\n                                .describe(\n                                  'Set media using an external media URL.'\n                                )\n                                .url(),\n                            }),\n                          ]),\n                          z.xor([\n                            z.object({\n                              image: z.never().optional(),\n                              video: z.never().optional(),\n                            }),\n                            z.object({\n                              video: z.never().optional(),\n                              image: z\n                                .string()\n                                .describe(\n                                  \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                ),\n                            }),\n                            z.object({\n                              image: z.never().optional(),\n                              video: z\n                                .string()\n                                .describe(\n                                  \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                ),\n                            }),\n                          ])\n                        )\n                      )\n                    )\n                    .max(50)\n                    .optional(),\n                })\n                .describe(\n                  'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n            })\n            .describe(\n              'Product media items. For a detailed explanation of product media, see [About Product Media](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/about-product-media).'\n            )\n            .optional(),\n          seoData: z\n            .object({\n              tags: z\n                .array(\n                  z.object({\n                    type: z\n                      .string()\n                      .describe(\n                        'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                      )\n                      .optional(),\n                    props: z\n                      .record(z.string(), z.any())\n                      .describe(\n                        'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    meta: z\n                      .record(z.string(), z.any())\n                      .describe(\n                        'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    children: z\n                      .string()\n                      .describe(\n                        'SEO tag inner content. For example, `<title> inner content </title>`.'\n                      )\n                      .optional(),\n                    custom: z\n                      .boolean()\n                      .describe(\n                        'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                      )\n                      .optional(),\n                    disabled: z\n                      .boolean()\n                      .describe(\n                        \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                      )\n                      .optional(),\n                  })\n                )\n                .optional(),\n              settings: z\n                .object({\n                  preventAutoRedirect: z\n                    .boolean()\n                    .describe(\n                      'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n                    )\n                    .optional(),\n                  keywords: z\n                    .array(\n                      z.object({\n                        term: z.string().describe('Keyword value.').optional(),\n                        isMain: z\n                          .boolean()\n                          .describe(\n                            'Whether the keyword is the main focus keyword.'\n                          )\n                          .optional(),\n                        origin: z\n                          .string()\n                          .describe(\n                            'The source that added the keyword terms to the SEO settings.'\n                          )\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(5)\n                    .optional(),\n                })\n                .describe('SEO general settings.')\n                .optional(),\n            })\n            .describe('Product SEO data.')\n            .optional(),\n          taxGroupId: z\n            .string()\n            .describe(\n              '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n            )\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          options: z\n            .array(\n              z.intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe(\n                      'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n                    )\n                    .min(1)\n                    .max(36)\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Option name.')\n                    .min(1)\n                    .max(50)\n                    .optional()\n                    .nullable(),\n                  optionRenderType: z\n                    .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                    .optional(),\n                  key: z\n                    .string()\n                    .describe(\n                      'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                    )\n                    .min(1)\n                    .max(50)\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    choicesSettings: z\n                      .object({\n                        choices: z\n                          .array(\n                            z.intersection(\n                              z.object({\n                                choiceId: z\n                                  .string()\n                                  .describe('Choice ID.')\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                linkedMedia: z\n                                  .array(\n                                    z.intersection(\n                                      z.object({\n                                        altText: z\n                                          .string()\n                                          .describe('Image alt text.')\n                                          .min(1)\n                                          .max(1000)\n                                          .optional()\n                                          .nullable(),\n                                        displayName: z\n                                          .string()\n                                          .describe(\n                                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                          )\n                                          .max(80)\n                                          .optional()\n                                          .nullable(),\n                                        mediaType: z\n                                          .enum(['IMAGE', 'VIDEO'])\n                                          .optional(),\n                                        thumbnail: z\n                                          .object({\n                                            url: z\n                                              .string()\n                                              .describe('Thumbnail url.')\n                                              .url()\n                                              .optional(),\n                                            height: z\n                                              .number()\n                                              .int()\n                                              .describe('Thumbnail height.')\n                                              .optional(),\n                                            width: z\n                                              .number()\n                                              .int()\n                                              .describe('Thumbnail width.')\n                                              .optional(),\n                                            altText: z\n                                              .string()\n                                              .describe('Thumbnail alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                          })\n                                          .describe(\n                                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .optional(),\n                                        uploadId: z\n                                          .string()\n                                          .describe(\n                                            'ID used to upload media to Wix Media Manager.'\n                                          )\n                                          .regex(\n                                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                            'Must be a valid GUID'\n                                          )\n                                          .optional(),\n                                      }),\n                                      z.intersection(\n                                        z.xor([\n                                          z.object({\n                                            _id: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            _id: z\n                                              .string()\n                                              .describe(\n                                                'Set media by ID of an existing file in Wix Media Manager.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            _id: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'Set media using an external media URL.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ]),\n                                        z.xor([\n                                          z.object({\n                                            image: z.never().optional(),\n                                            video: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            video: z.never().optional(),\n                                            image: z\n                                              .string()\n                                              .describe(\n                                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                              ),\n                                          }),\n                                          z.object({\n                                            image: z.never().optional(),\n                                            video: z\n                                              .string()\n                                              .describe(\n                                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                              ),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                  )\n                                  .max(15)\n                                  .optional(),\n                                choiceType: z\n                                  .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                  .optional(),\n                                key: z\n                                  .string()\n                                  .describe(\n                                    'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                  )\n                                  .min(1)\n                                  .max(50)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe(\n                                    'Choice name. For text choices, this field also contains the choice value.'\n                                  )\n                                  .min(1)\n                                  .max(50)\n                                  .optional()\n                                  .nullable(),\n                                inStock: z\n                                  .boolean()\n                                  .describe(\n                                    'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                                  )\n                                  .optional(),\n                                visible: z\n                                  .boolean()\n                                  .describe(\n                                    'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                                  )\n                                  .optional(),\n                                displayImage: z\n                                  .string()\n                                  .describe(\n                                    'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                  )\n                                  .optional(),\n                                media: z\n                                  .object({\n                                    items: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({}),\n                                          z.xor([\n                                            z.object({\n                                              mediaId: z.never().optional(),\n                                              url: z.never().optional(),\n                                            }),\n                                            z.object({\n                                              url: z.never().optional(),\n                                              mediaId: z\n                                                .string()\n                                                .describe(\n                                                  'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                )\n                                                .min(1)\n                                                .max(200),\n                                            }),\n                                            z.object({\n                                              mediaId: z.never().optional(),\n                                              url: z\n                                                .string()\n                                                .describe(\n                                                  'External media URL. Can be used only on write.'\n                                                )\n                                                .url(),\n                                            }),\n                                          ])\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                  )\n                                  .optional(),\n                              }),\n                              z.xor([\n                                z.object({ colorCode: z.never().optional() }),\n                                z.object({\n                                  colorCode: z\n                                    .string()\n                                    .describe(\n                                      'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                                    )\n                                    .min(3)\n                                    .max(20),\n                                }),\n                              ])\n                            )\n                          )\n                          .min(1)\n                          .max(100)\n                          .optional(),\n                      })\n                      .describe('Choices settings.'),\n                  }),\n                ])\n              )\n            )\n            .max(6)\n            .optional(),\n          modifiers: z\n            .array(\n              z.intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe(\n                      'ID of a customization with `customizationType: MODIFIER`.'\n                    )\n                    .min(1)\n                    .max(36)\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Modifier title.')\n                    .min(1)\n                    .max(50)\n                    .optional()\n                    .nullable(),\n                  modifierRenderType: z\n                    .enum(['FREE_TEXT', 'TEXT_CHOICES', 'SWATCH_CHOICES'])\n                    .optional(),\n                  mandatory: z\n                    .boolean()\n                    .describe(\n                      'Whether customer input is required for this modifier.'\n                    )\n                    .optional(),\n                  key: z\n                    .string()\n                    .describe(\n                      'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                    )\n                    .min(1)\n                    .max(50)\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    choicesSettings: z.never().optional(),\n                    freeTextSettings: z\n                      .object({\n                        minCharCount: z\n                          .number()\n                          .int()\n                          .describe('Minimum number of characters.')\n                          .optional(),\n                        maxCharCount: z\n                          .number()\n                          .int()\n                          .describe('Maximum number of characters.')\n                          .max(500)\n                          .optional(),\n                        defaultAddedPrice: z\n                          .string()\n                          .describe(\n                            \"Default amount to be added to the product's price.\"\n                          )\n                          .optional()\n                          .nullable(),\n                        title: z\n                          .string()\n                          .describe(\n                            'Title of the text to be input by the customer.'\n                          )\n                          .min(1)\n                          .max(150)\n                          .optional(),\n                        key: z\n                          .string()\n                          .describe(\n                            'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                          )\n                          .min(1)\n                          .max(150)\n                          .optional(),\n                      })\n                      .describe('Free text modifier settings.'),\n                  }),\n                  z.object({\n                    freeTextSettings: z.never().optional(),\n                    choicesSettings: z\n                      .object({\n                        choices: z\n                          .array(\n                            z.intersection(\n                              z.object({\n                                choiceId: z\n                                  .string()\n                                  .describe('Choice ID.')\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                linkedMedia: z\n                                  .array(\n                                    z.intersection(\n                                      z.object({\n                                        altText: z\n                                          .string()\n                                          .describe('Image alt text.')\n                                          .min(1)\n                                          .max(1000)\n                                          .optional()\n                                          .nullable(),\n                                        displayName: z\n                                          .string()\n                                          .describe(\n                                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                          )\n                                          .max(80)\n                                          .optional()\n                                          .nullable(),\n                                        mediaType: z\n                                          .enum(['IMAGE', 'VIDEO'])\n                                          .optional(),\n                                        thumbnail: z\n                                          .object({\n                                            url: z\n                                              .string()\n                                              .describe('Thumbnail url.')\n                                              .url()\n                                              .optional(),\n                                            height: z\n                                              .number()\n                                              .int()\n                                              .describe('Thumbnail height.')\n                                              .optional(),\n                                            width: z\n                                              .number()\n                                              .int()\n                                              .describe('Thumbnail width.')\n                                              .optional(),\n                                            altText: z\n                                              .string()\n                                              .describe('Thumbnail alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                          })\n                                          .describe(\n                                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .optional(),\n                                        uploadId: z\n                                          .string()\n                                          .describe(\n                                            'ID used to upload media to Wix Media Manager.'\n                                          )\n                                          .regex(\n                                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                            'Must be a valid GUID'\n                                          )\n                                          .optional(),\n                                      }),\n                                      z.intersection(\n                                        z.xor([\n                                          z.object({\n                                            _id: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            _id: z\n                                              .string()\n                                              .describe(\n                                                'Set media by ID of an existing file in Wix Media Manager.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            _id: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'Set media using an external media URL.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ]),\n                                        z.xor([\n                                          z.object({\n                                            image: z.never().optional(),\n                                            video: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            video: z.never().optional(),\n                                            image: z\n                                              .string()\n                                              .describe(\n                                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                              ),\n                                          }),\n                                          z.object({\n                                            image: z.never().optional(),\n                                            video: z\n                                              .string()\n                                              .describe(\n                                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                              ),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                  )\n                                  .max(15)\n                                  .optional(),\n                                choiceType: z\n                                  .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                  .optional(),\n                                key: z\n                                  .string()\n                                  .describe(\n                                    'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                  )\n                                  .min(1)\n                                  .max(50)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe('Choice name.')\n                                  .min(1)\n                                  .max(50)\n                                  .optional()\n                                  .nullable(),\n                                addedPrice: z\n                                  .string()\n                                  .describe('Added price.')\n                                  .optional()\n                                  .nullable(),\n                                displayImage: z\n                                  .string()\n                                  .describe(\n                                    'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                  )\n                                  .optional(),\n                                media: z\n                                  .object({\n                                    items: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({}),\n                                          z.xor([\n                                            z.object({\n                                              mediaId: z.never().optional(),\n                                              url: z.never().optional(),\n                                            }),\n                                            z.object({\n                                              url: z.never().optional(),\n                                              mediaId: z\n                                                .string()\n                                                .describe(\n                                                  'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                )\n                                                .min(1)\n                                                .max(200),\n                                            }),\n                                            z.object({\n                                              mediaId: z.never().optional(),\n                                              url: z\n                                                .string()\n                                                .describe(\n                                                  'External media URL. Can be used only on write.'\n                                                )\n                                                .url(),\n                                            }),\n                                          ])\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                  )\n                                  .optional(),\n                              }),\n                              z.xor([\n                                z.object({ colorCode: z.never().optional() }),\n                                z.object({\n                                  colorCode: z\n                                    .string()\n                                    .describe(\n                                      'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                                    )\n                                    .min(3)\n                                    .max(20),\n                                }),\n                              ])\n                            )\n                          )\n                          .min(1)\n                          .max(100)\n                          .optional(),\n                      })\n                      .describe('Choice settings.'),\n                  }),\n                ])\n              )\n            )\n            .max(10)\n            .optional(),\n          brand: z\n            .object({\n              _id: z\n                .string()\n                .describe('Brand ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Brand name.')\n                .max(50)\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              \"Product [brand](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/brands-v3/introduction).\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n            )\n            .optional(),\n          infoSections: z\n            .array(\n              z.object({\n                _id: z\n                  .string()\n                  .describe('Info section ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                uniqueName: z\n                  .string()\n                  .describe(\n                    'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(100)\n                  .optional()\n                  .nullable(),\n                title: z\n                  .string()\n                  .describe(\n                    'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                description: z\n                  .any()\n                  .describe(\n                    'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                  )\n                  .optional(),\n                plainDescription: z\n                  .string()\n                  .describe(\n                    'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(16000)\n                  .optional()\n                  .nullable(),\n              })\n            )\n            .max(10)\n            .optional(),\n          ribbon: z\n            .object({\n              _id: z\n                .string()\n                .describe('Ribbon ID.')\n                .min(1)\n                .max(36)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Ribbon name.')\n                .max(30)\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              \"Primary [ribbon](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/ribbons-v3/introduction) displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n            )\n            .optional(),\n          directCategoriesInfo: z\n            .object({\n              categories: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Category ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    index: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                      )\n                      .min(0)\n                      .max(200)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(2000)\n                .optional(),\n            })\n            .describe(\n              'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product.\\n\\nUpdated automatically when a product is added/removed from a category, when an item is moved within a category, or when a category is deleted.\\n> **Note:** Returned only when you pass `\"DIRECT_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n            )\n            .optional(),\n          allCategoriesInfo: z\n            .object({\n              categories: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Category ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    index: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                      )\n                      .min(0)\n                      .max(200)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(2000)\n                .optional(),\n            })\n            .describe(\n              'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product, as well as their parent categories.\\n> **Note:** Returned only when you pass `\"ALL_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n            )\n            .optional(),\n          mainCategoryId: z\n            .string()\n            .describe(\n              'The ID of the product\\'s primary direct [category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction), which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n            )\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          costRange: z\n            .object({\n              minValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Minimum value.')\n                .optional(),\n              maxValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Maximum value.')\n                .optional(),\n            })\n            .describe(\n              'Product cost range - minimum and maximum costs of all product variants.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n            )\n            .optional(),\n          inventory: z\n            .object({\n              availabilityStatus: z\n                .enum(['IN_STOCK', 'OUT_OF_STOCK', 'PARTIALLY_OUT_OF_STOCK'])\n                .optional(),\n              preorderStatus: z\n                .enum(['ENABLED', 'DISABLED', 'PARTIALLY_ENABLED'])\n                .optional(),\n              preorderAvailability: z\n                .enum(['ALL_VARIANTS', 'NO_VARIANTS', 'SOME_VARIANTS'])\n                .optional(),\n            })\n            .describe(\n              'Product inventory info.\\n\\n> **Note:** This field reflects the aggregated inventory status from the default location only. Use the [Inventory Items API](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/inventory-items-v3/introduction) to manage inventory for specific locations. Learn more about [inventory management](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-inventory-management).'\n            )\n            .optional(),\n          productType: z.enum(['PHYSICAL', 'DIGITAL']),\n          handle: z\n            .string()\n            .describe(\n              \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n            )\n            .min(1)\n            .max(100)\n            .optional()\n            .nullable(),\n          currency: z\n            .string()\n            .describe(\n              'Currency used for the pricing of this product, in [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes) format.\\n\\nDefaults to the currency defined in the site settings, unless specified in the request\\'s `x-wix-currency` header.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n            )\n            .optional()\n            .nullable(),\n          breadcrumbsInfo: z\n            .object({\n              breadcrumbs: z\n                .array(\n                  z.object({\n                    categoryId: z\n                      .string()\n                      .describe('Category ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    categoryName: z\n                      .string()\n                      .describe('Category name.')\n                      .min(1)\n                      .max(80)\n                      .optional(),\n                    categorySlug: z\n                      .string()\n                      .describe('Category slug.')\n                      .min(1)\n                      .max(100)\n                      .optional(),\n                  })\n                )\n                .max(5)\n                .optional(),\n            })\n            .describe(\n              'Breadcrumbs of the `mainCategoryId`. Used to navigate to parent [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction). Useful for building navigation UI and for SEO purposes.\\n> **Note:** Returned only when you pass `\"BREADCRUMBS_INFO\"` to the `fields` array in Products API requests.'\n            )\n            .optional(),\n          actualPriceRange: z\n            .object({\n              minValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Minimum value.')\n                .optional(),\n              maxValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Maximum value.')\n                .optional(),\n            })\n            .describe(\n              'Minimum and maximum current selling prices across all product variants.'\n            )\n            .optional(),\n          compareAtPriceRange: z\n            .object({\n              minValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Minimum value.')\n                .optional(),\n              maxValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Maximum value.')\n                .optional(),\n            })\n            .describe(\n              'Minimum and maximum compare-at prices (original prices before discounts) across all product variants. Used to show savings to customers.'\n            )\n            .optional(),\n          variantsInfo: z\n            .object({\n              variants: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe('Variant ID.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional()\n                        .nullable(),\n                      visible: z\n                        .boolean()\n                        .describe(\n                          \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                        )\n                        .optional()\n                        .nullable(),\n                      sku: z\n                        .string()\n                        .describe('Variant SKU (stock keeping unit).')\n                        .min(1)\n                        .max(40)\n                        .optional()\n                        .nullable(),\n                      barcode: z\n                        .string()\n                        .describe('Variant barcode.')\n                        .min(1)\n                        .max(40)\n                        .optional()\n                        .nullable(),\n                      choices: z\n                        .array(\n                          z.object({\n                            optionChoiceIds: z\n                              .object({\n                                optionId: z\n                                  .string()\n                                  .describe('Option ID.')\n                                  .min(1)\n                                  .max(36),\n                                choiceId: z\n                                  .string()\n                                  .describe('Choice ID.')\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  ),\n                              })\n                              .describe(\n                                \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                              )\n                              .optional(),\n                            optionChoiceNames: z\n                              .object({\n                                optionName: z\n                                  .string()\n                                  .describe('Option name.')\n                                  .min(1)\n                                  .optional(),\n                                choiceName: z\n                                  .string()\n                                  .describe('Choice name.')\n                                  .min(1)\n                                  .optional(),\n                                renderType: z\n                                  .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                  .optional(),\n                              })\n                              .describe(\n                                'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                              )\n                              .optional(),\n                          })\n                        )\n                        .min(0)\n                        .max(6)\n                        .optional(),\n                      price: z\n                        .object({\n                          actualPrice: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              \"Variant's current selling price. Must be greater than or equal to 0.\"\n                            ),\n                          compareAtPrice: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                            )\n                            .optional(),\n                          priceAfterDiscount: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                            )\n                            .optional(),\n                        })\n                        .describe('Variant price.'),\n                      revenueDetails: z\n                        .object({\n                          cost: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe('Item cost.')\n                            .optional(),\n                          profit: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                            )\n                            .optional(),\n                          profitMargin: z\n                            .number()\n                            .describe(\n                              'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                            )\n                            .min(0)\n                            .max(1)\n                            .optional(),\n                        })\n                        .describe(\n                          'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                        )\n                        .optional(),\n                      media: z\n                        .intersection(\n                          z.object({\n                            altText: z\n                              .string()\n                              .describe('Image alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                            displayName: z\n                              .string()\n                              .describe(\n                                \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                              )\n                              .max(80)\n                              .optional()\n                              .nullable(),\n                            mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                            thumbnail: z\n                              .object({\n                                url: z\n                                  .string()\n                                  .describe('Thumbnail url.')\n                                  .url()\n                                  .optional(),\n                                height: z\n                                  .number()\n                                  .int()\n                                  .describe('Thumbnail height.')\n                                  .optional(),\n                                width: z\n                                  .number()\n                                  .int()\n                                  .describe('Thumbnail width.')\n                                  .optional(),\n                                altText: z\n                                  .string()\n                                  .describe('Thumbnail alt text.')\n                                  .min(1)\n                                  .max(1000)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                              )\n                              .optional(),\n                            uploadId: z\n                              .string()\n                              .describe(\n                                'ID used to upload media to Wix Media Manager.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          }),\n                          z.intersection(\n                            z.xor([\n                              z.object({\n                                _id: z.never().optional(),\n                                url: z.never().optional(),\n                              }),\n                              z.object({\n                                url: z.never().optional(),\n                                _id: z\n                                  .string()\n                                  .describe(\n                                    'Set media by ID of an existing file in Wix Media Manager.'\n                                  )\n                                  .min(1)\n                                  .max(200),\n                              }),\n                              z.object({\n                                _id: z.never().optional(),\n                                url: z\n                                  .string()\n                                  .describe(\n                                    'Set media using an external media URL.'\n                                  )\n                                  .url(),\n                              }),\n                            ]),\n                            z.xor([\n                              z.object({\n                                image: z.never().optional(),\n                                video: z.never().optional(),\n                              }),\n                              z.object({\n                                video: z.never().optional(),\n                                image: z\n                                  .string()\n                                  .describe(\n                                    \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                  ),\n                              }),\n                              z.object({\n                                image: z.never().optional(),\n                                video: z\n                                  .string()\n                                  .describe(\n                                    \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                  ),\n                              }),\n                            ])\n                          )\n                        )\n                        .describe('Variant media.')\n                        .optional(),\n                      subscriptionPricesInfo: z\n                        .object({\n                          subscriptionPrices: z\n                            .array(\n                              z.object({\n                                subscriptionId: z\n                                  .string()\n                                  .describe('Subscription ID.')\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional(),\n                                price: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                  )\n                                  .optional(),\n                                pricePerUnit: z\n                                  .object({\n                                    value: z\n                                      .string()\n                                      .describe(\n                                        'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                      )\n                                      .optional(),\n                                    description: z\n                                      .string()\n                                      .describe(\n                                        'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                    priceAfterDiscount: z\n                                      .object({\n                                        amount: z\n                                          .string()\n                                          .describe(\n                                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                          )\n                                          .optional(),\n                                        formattedAmount: z\n                                          .string()\n                                          .describe(\n                                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe('Price per unit info.')\n                                  .optional(),\n                                priceAfterDiscount: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                  )\n                                  .optional(),\n                              })\n                            )\n                            .max(6)\n                            .optional(),\n                        })\n                        .describe(\n                          'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                        )\n                        .optional(),\n                      inventoryStatus: z\n                        .object({\n                          inStock: z\n                            .boolean()\n                            .describe('Whether the variant is in stock.')\n                            .optional(),\n                          preorderEnabled: z\n                            .boolean()\n                            .describe(\n                              'Whether preorder is enabled for this variant.'\n                            )\n                            .optional(),\n                        })\n                        .describe('Variant inventory status.')\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({\n                        physicalProperties: z.never().optional(),\n                        digitalProperties: z.never().optional(),\n                      }),\n                      z.object({\n                        digitalProperties: z.never().optional(),\n                        physicalProperties: z\n                          .object({\n                            weight: z\n                              .number()\n                              .describe(\n                                'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                              )\n                              .min(0)\n                              .max(999999999.99)\n                              .optional()\n                              .nullable(),\n                            pricePerUnit: z\n                              .object({\n                                settings: z\n                                  .object({\n                                    quantity: z\n                                      .number()\n                                      .describe(\n                                        'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                      )\n                                      .min(0.01)\n                                      .max(999999999.99)\n                                      .optional(),\n                                    measurementUnit: z\n                                      .enum([\n                                        'UNSPECIFIED',\n                                        'ML',\n                                        'CL',\n                                        'L',\n                                        'CBM',\n                                        'MG',\n                                        'G',\n                                        'KG',\n                                        'MM',\n                                        'CM',\n                                        'M',\n                                        'SQM',\n                                        'OZ',\n                                        'LB',\n                                        'FLOZ',\n                                        'PT',\n                                        'QT',\n                                        'GAL',\n                                        'IN',\n                                        'FT',\n                                        'YD',\n                                        'SQFT',\n                                      ])\n                                      .describe(\n                                        'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                  )\n                                  .optional(),\n                                value: z\n                                  .string()\n                                  .describe(\n                                    \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                  )\n                                  .optional(),\n                                description: z\n                                  .string()\n                                  .describe(\n                                    'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(100)\n                                  .optional()\n                                  .nullable(),\n                                priceAfterDiscount: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                              )\n                              .optional(),\n                            productDimensions: z\n                              .object({\n                                length: z\n                                  .string()\n                                  .describe(\n                                    'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                width: z\n                                  .string()\n                                  .describe(\n                                    'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                height: z\n                                  .string()\n                                  .describe(\n                                    'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                unit: z\n                                  .enum([\n                                    'UNKNOWN_DIMENSIONS_UNIT',\n                                    'MM',\n                                    'CM',\n                                    'M',\n                                    'IN',\n                                    'FT',\n                                    'YD',\n                                  ])\n                                  .describe(\n                                    'Unit of measurement for dimensions (length, width, height).'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Product dimensions (length, width, height of the physical product).'\n                              )\n                              .optional(),\n                            packageDimensions: z\n                              .object({\n                                length: z\n                                  .string()\n                                  .describe(\n                                    'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                width: z\n                                  .string()\n                                  .describe(\n                                    'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                height: z\n                                  .string()\n                                  .describe(\n                                    'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                unit: z\n                                  .enum([\n                                    'UNKNOWN_DIMENSIONS_UNIT',\n                                    'MM',\n                                    'CM',\n                                    'M',\n                                    'IN',\n                                    'FT',\n                                    'YD',\n                                  ])\n                                  .describe(\n                                    'Unit of measurement for dimensions (length, width, height).'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Package dimensions (length, width, height of the shipping package).'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Physical properties. Must be passed when `productType: PHYSICAL`'\n                          ),\n                      }),\n                      z.object({\n                        physicalProperties: z.never().optional(),\n                        digitalProperties: z\n                          .object({\n                            digitalFile: z\n                              .object({\n                                _id: z\n                                  .string()\n                                  .describe('Media ID in media manager.')\n                                  .min(1)\n                                  .max(100)\n                                  .optional(),\n                                fileName: z\n                                  .string()\n                                  .describe('Original file name.')\n                                  .min(1)\n                                  .max(1000)\n                                  .optional(),\n                                fileSize: z\n                                  .string()\n                                  .describe('Original file size.')\n                                  .min(1)\n                                  .max(1000)\n                                  .optional()\n                                  .nullable(),\n                                fileType: z\n                                  .enum([\n                                    'UNSPECIFIED',\n                                    'SECURE_PICTURE',\n                                    'SECURE_VIDEO',\n                                    'SECURE_DOCUMENT',\n                                    'SECURE_MUSIC',\n                                    'SECURE_ARCHIVE',\n                                    'SECURE_RAW',\n                                  ])\n                                  .describe('File type.')\n                                  .optional(),\n                              })\n                              .describe(\n                                'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Digital properties. Must be passed when `productType: DIGITAL`'\n                          ),\n                      }),\n                    ])\n                  )\n                )\n                .min(1)\n                .max(1000),\n            })\n            .describe(\n              'Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nYou must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).'\n            ),\n          purchaseEligibility: z\n            .object({ userCriteria: z.enum(['MEMBERS_ONLY']).optional() })\n            .describe('Purchase eligibility settings for the product.')\n            .optional(),\n          additionalRibbons: z\n            .array(\n              z.object({\n                _id: z\n                  .string()\n                  .describe('Ribbon ID.')\n                  .min(1)\n                  .max(36)\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Ribbon name.')\n                  .max(30)\n                  .optional()\n                  .nullable(),\n              })\n            )\n            .max(4)\n            .optional(),\n          extendedFields: z\n            .object({\n              namespaces: z\n                .record(z.string(), z.record(z.string(), z.any()))\n                .describe(\n                  'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                )\n                .optional(),\n            })\n            .describe(\n              'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n            )\n            .optional(),\n          tags: z\n            .object({\n              privateTags: z\n                .object({ tagIds: z.array(z.string()).max(100).optional() })\n                .describe(\n                  'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n                )\n                .optional(),\n              publicTags: z\n                .object({ tagIds: z.array(z.string()).max(100).optional() })\n                .describe(\n                  'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n                )\n                .optional(),\n            })\n            .describe('Tags')\n            .optional(),\n          subscriptionDetails: z\n            .object({\n              subscriptions: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe('Subscription ID.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional()\n                        .nullable(),\n                      title: z\n                        .string()\n                        .describe('Subscription title.')\n                        .min(1)\n                        .max(20),\n                      description: z\n                        .string()\n                        .describe('Subscription description.')\n                        .max(60)\n                        .optional()\n                        .nullable(),\n                      visible: z\n                        .boolean()\n                        .describe(\n                          'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                        )\n                        .optional()\n                        .nullable(),\n                      frequency: z.enum([\n                        'UNDEFINED',\n                        'DAY',\n                        'WEEK',\n                        'MONTH',\n                        'YEAR',\n                      ]),\n                      interval: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                        )\n                        .min(1)\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                      discount: z\n                        .intersection(\n                          z.object({ type: z.enum(['AMOUNT', 'PERCENT']) }),\n                          z.xor([\n                            z.object({\n                              percentOff: z.never().optional(),\n                              amountOff: z\n                                .string()\n                                .describe(\n                                  'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                                ),\n                            }),\n                            z.object({\n                              amountOff: z.never().optional(),\n                              percentOff: z\n                                .number()\n                                .describe(\n                                  'Percentage subtracted from the variant price when calculating subscription prices.'\n                                )\n                                .min(0.1)\n                                .max(99.9),\n                            }),\n                          ])\n                        )\n                        .describe(\n                          'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                        )\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({\n                        billingCycles: z.never().optional(),\n                        autoRenewal: z\n                          .boolean()\n                          .describe(\n                            'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                          ),\n                      }),\n                      z.object({\n                        autoRenewal: z.never().optional(),\n                        billingCycles: z\n                          .number()\n                          .int()\n                          .describe(\n                            'Number of billing cycles before subscription ends.'\n                          )\n                          .min(2)\n                          .max(999),\n                      }),\n                    ])\n                  )\n                )\n                .min(1)\n                .max(6),\n              allowOneTimePurchases: z\n                .boolean()\n                .describe(\n                  'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n                )\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n            )\n            .optional(),\n          variantSummary: z\n            .object({\n              variantCount: z\n                .number()\n                .int()\n                .describe('The total number of variants for the product.')\n                .optional(),\n              minPriceVariant: z\n                .intersection(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Variant ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    visible: z\n                      .boolean()\n                      .describe(\n                        \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                      )\n                      .optional()\n                      .nullable(),\n                    sku: z\n                      .string()\n                      .describe('Variant SKU (stock keeping unit).')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    barcode: z\n                      .string()\n                      .describe('Variant barcode.')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.object({\n                          optionChoiceIds: z\n                            .object({\n                              optionId: z\n                                .string()\n                                .describe('Option ID.')\n                                .min(1)\n                                .max(36),\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                ),\n                            })\n                            .describe(\n                              \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                            )\n                            .optional(),\n                          optionChoiceNames: z\n                            .object({\n                              optionName: z\n                                .string()\n                                .describe('Option name.')\n                                .min(1)\n                                .optional(),\n                              choiceName: z\n                                .string()\n                                .describe('Choice name.')\n                                .min(1)\n                                .optional(),\n                              renderType: z\n                                .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                .optional(),\n                            })\n                            .describe(\n                              'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .min(0)\n                      .max(6)\n                      .optional(),\n                    price: z\n                      .object({\n                        actualPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            \"Variant's current selling price. Must be greater than or equal to 0.\"\n                          ),\n                        compareAtPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                          )\n                          .optional(),\n                        priceAfterDiscount: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                          )\n                          .optional(),\n                      })\n                      .describe('Variant price.'),\n                    revenueDetails: z\n                      .object({\n                        cost: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe('Item cost.')\n                          .optional(),\n                        profit: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                          )\n                          .optional(),\n                        profitMargin: z\n                          .number()\n                          .describe(\n                            'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                          )\n                          .min(0)\n                          .max(1)\n                          .optional(),\n                      })\n                      .describe(\n                        'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                      )\n                      .optional(),\n                    media: z\n                      .intersection(\n                        z.object({\n                          altText: z\n                            .string()\n                            .describe('Image alt text.')\n                            .min(1)\n                            .max(1000)\n                            .optional()\n                            .nullable(),\n                          displayName: z\n                            .string()\n                            .describe(\n                              \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                            )\n                            .max(80)\n                            .optional()\n                            .nullable(),\n                          mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                          thumbnail: z\n                            .object({\n                              url: z\n                                .string()\n                                .describe('Thumbnail url.')\n                                .url()\n                                .optional(),\n                              height: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail height.')\n                                .optional(),\n                              width: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail width.')\n                                .optional(),\n                              altText: z\n                                .string()\n                                .describe('Thumbnail alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                          uploadId: z\n                            .string()\n                            .describe(\n                              'ID used to upload media to Wix Media Manager.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                        }),\n                        z.intersection(\n                          z.xor([\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z.never().optional(),\n                            }),\n                            z.object({\n                              url: z.never().optional(),\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Set media by ID of an existing file in Wix Media Manager.'\n                                )\n                                .min(1)\n                                .max(200),\n                            }),\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z\n                                .string()\n                                .describe(\n                                  'Set media using an external media URL.'\n                                )\n                                .url(),\n                            }),\n                          ]),\n                          z.xor([\n                            z.object({\n                              image: z.never().optional(),\n                              video: z.never().optional(),\n                            }),\n                            z.object({\n                              video: z.never().optional(),\n                              image: z\n                                .string()\n                                .describe(\n                                  \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                ),\n                            }),\n                            z.object({\n                              image: z.never().optional(),\n                              video: z\n                                .string()\n                                .describe(\n                                  \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                ),\n                            }),\n                          ])\n                        )\n                      )\n                      .describe('Variant media.')\n                      .optional(),\n                    subscriptionPricesInfo: z\n                      .object({\n                        subscriptionPrices: z\n                          .array(\n                            z.object({\n                              subscriptionId: z\n                                .string()\n                                .describe('Subscription ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                              price: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                )\n                                .optional(),\n                              pricePerUnit: z\n                                .object({\n                                  value: z\n                                    .string()\n                                    .describe(\n                                      'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                    )\n                                    .optional(),\n                                  description: z\n                                    .string()\n                                    .describe(\n                                      'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                  priceAfterDiscount: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe('Price per unit info.')\n                                .optional(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                          )\n                          .max(6)\n                          .optional(),\n                      })\n                      .describe(\n                        'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    inventoryStatus: z\n                      .object({\n                        inStock: z\n                          .boolean()\n                          .describe('Whether the variant is in stock.')\n                          .optional(),\n                        preorderEnabled: z\n                          .boolean()\n                          .describe(\n                            'Whether preorder is enabled for this variant.'\n                          )\n                          .optional(),\n                      })\n                      .describe('Variant inventory status.')\n                      .optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z.never().optional(),\n                    }),\n                    z.object({\n                      digitalProperties: z.never().optional(),\n                      physicalProperties: z\n                        .object({\n                          weight: z\n                            .number()\n                            .describe(\n                              'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                            )\n                            .min(0)\n                            .max(999999999.99)\n                            .optional()\n                            .nullable(),\n                          pricePerUnit: z\n                            .object({\n                              settings: z\n                                .object({\n                                  quantity: z\n                                    .number()\n                                    .describe(\n                                      'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                    )\n                                    .min(0.01)\n                                    .max(999999999.99)\n                                    .optional(),\n                                  measurementUnit: z\n                                    .enum([\n                                      'UNSPECIFIED',\n                                      'ML',\n                                      'CL',\n                                      'L',\n                                      'CBM',\n                                      'MG',\n                                      'G',\n                                      'KG',\n                                      'MM',\n                                      'CM',\n                                      'M',\n                                      'SQM',\n                                      'OZ',\n                                      'LB',\n                                      'FLOZ',\n                                      'PT',\n                                      'QT',\n                                      'GAL',\n                                      'IN',\n                                      'FT',\n                                      'YD',\n                                      'SQFT',\n                                    ])\n                                    .describe(\n                                      'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                )\n                                .optional(),\n                              value: z\n                                .string()\n                                .describe(\n                                  \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                )\n                                .optional(),\n                              description: z\n                                .string()\n                                .describe(\n                                  'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(100)\n                                .optional()\n                                .nullable(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                            )\n                            .optional(),\n                          productDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Product dimensions (length, width, height of the physical product).'\n                            )\n                            .optional(),\n                          packageDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Package dimensions (length, width, height of the shipping package).'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Physical properties. Must be passed when `productType: PHYSICAL`'\n                        ),\n                    }),\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z\n                        .object({\n                          digitalFile: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe('Media ID in media manager.')\n                                .min(1)\n                                .max(100)\n                                .optional(),\n                              fileName: z\n                                .string()\n                                .describe('Original file name.')\n                                .min(1)\n                                .max(1000)\n                                .optional(),\n                              fileSize: z\n                                .string()\n                                .describe('Original file size.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              fileType: z\n                                .enum([\n                                  'UNSPECIFIED',\n                                  'SECURE_PICTURE',\n                                  'SECURE_VIDEO',\n                                  'SECURE_DOCUMENT',\n                                  'SECURE_MUSIC',\n                                  'SECURE_ARCHIVE',\n                                  'SECURE_RAW',\n                                ])\n                                .describe('File type.')\n                                .optional(),\n                            })\n                            .describe(\n                              'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Digital properties. Must be passed when `productType: DIGITAL`'\n                        ),\n                    }),\n                  ])\n                )\n                .describe(\n                  'The variant with the lowest `actualPrice` among visible variants for this product.\\n\\nHidden variants are excluded; ties are broken by variant order. Empty if the product has no visible variants.\\n> **Note:** Returned only when you pass `\"MIN_PRICE_VARIANT\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n            })\n            .describe('The total number of variants for the product.')\n            .optional(),\n        }),\n        z.xor([\n          z.object({ physicalProperties: z.never().optional() }),\n          z.object({\n            physicalProperties: z\n              .object({\n                pricePerUnit: z\n                  .object({\n                    quantity: z\n                      .number()\n                      .describe(\n                        'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                      )\n                      .min(0.01)\n                      .max(999999999.99)\n                      .optional(),\n                    measurementUnit: z\n                      .enum([\n                        'UNSPECIFIED',\n                        'ML',\n                        'CL',\n                        'L',\n                        'CBM',\n                        'MG',\n                        'G',\n                        'KG',\n                        'MM',\n                        'CM',\n                        'M',\n                        'SQM',\n                        'OZ',\n                        'LB',\n                        'FLOZ',\n                        'PT',\n                        'QT',\n                        'GAL',\n                        'IN',\n                        'FT',\n                        'YD',\n                        'SQFT',\n                      ])\n                      .describe(\n                        'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                      )\n                      .optional(),\n                  })\n                  .describe(\n                    'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n                  )\n                  .optional(),\n                fulfillerId: z\n                  .string()\n                  .describe('Fulfiller ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                shippingWeightRange: z\n                  .object({\n                    minValue: z\n                      .number()\n                      .describe(\n                        'Minimum weight across all variants associated with this product.'\n                      )\n                      .min(0)\n                      .max(999999999.99)\n                      .optional(),\n                    maxValue: z\n                      .number()\n                      .describe(\n                        'Maximum weight across all variants associated with this product.'\n                      )\n                      .min(0)\n                      .max(999999999.99)\n                      .optional(),\n                  })\n                  .describe(\n                    'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n                  )\n                  .optional(),\n                pricePerUnitRange: z\n                  .object({\n                    minValue: z\n                      .object({\n                        value: z\n                          .string()\n                          .describe(\n                            \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                          )\n                          .optional(),\n                        description: z\n                          .string()\n                          .describe(\n                            'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                          )\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe('Minimum price per unit across all variants.')\n                      .optional(),\n                    maxValue: z\n                      .object({\n                        value: z\n                          .string()\n                          .describe(\n                            \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                          )\n                          .optional(),\n                        description: z\n                          .string()\n                          .describe(\n                            'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                          )\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe('Maximum price per unit across all variants.')\n                      .optional(),\n                  })\n                  .describe(\n                    'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n                  )\n                  .optional(),\n                weightMeasurementUnitInfo: z\n                  .object({\n                    weightMeasurementUnit: z\n                      .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                      .describe('Weight measurement unit.')\n                      .optional(),\n                  })\n                  .describe(\n                    'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n                  )\n                  .optional(),\n                deliveryProfileId: z\n                  .string()\n                  .describe('Delivery profile ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n              })\n              .describe(\n                'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n              ),\n          }),\n        ])\n      )\n    )\n    .min(1)\n    .max(100),\n  options: z\n    .object({\n      returnEntity: z\n        .boolean()\n        .describe(\n          'Whether to return the full product entities in the response.\\n\\nDefault: `false`'\n        )\n        .optional(),\n      fields: z\n        .array(\n          z.enum([\n            'URL',\n            'CURRENCY',\n            'INFO_SECTION',\n            'MERCHANT_DATA',\n            'PLAIN_DESCRIPTION',\n            'INFO_SECTION_PLAIN_DESCRIPTION',\n            'SUBSCRIPTION_PRICES_INFO',\n            'BREADCRUMBS_INFO',\n            'WEIGHT_MEASUREMENT_UNIT_INFO',\n            'VARIANT_OPTION_CHOICE_NAMES',\n            'MEDIA_ITEMS_INFO',\n            'DESCRIPTION',\n            'DIRECT_CATEGORIES_INFO',\n            'ALL_CATEGORIES_INFO',\n            'INFO_SECTION_DESCRIPTION',\n            'THUMBNAIL',\n            'PRODUCT_CHOICES_MEDIA_REFERENCES',\n            'PRODUCT_CHOICES_DISPLAY_IMAGE',\n            'MIN_PRICE_VARIANT',\n            'DISCOUNT_INFO',\n          ])\n        )\n        .max(100)\n        .optional(),\n    })\n    .optional(),\n});\nexport const BulkCreateProductsResponse = z.object({\n  results: z\n    .array(\n      z.object({\n        itemMetadata: z\n          .object({\n            _id: z\n              .string()\n              .describe(\n                \"Item ID. Should always be available, unless it's impossible (for example, when failing to create an item).\"\n              )\n              .min(1)\n              .max(36)\n              .optional()\n              .nullable(),\n            originalIndex: z\n              .number()\n              .int()\n              .describe(\n                'Index of the item within the request array. Allows for correlation between request and response items.'\n              )\n              .optional(),\n            success: z\n              .boolean()\n              .describe(\n                'Whether the requested action was successful for this item. When `false`, the `error` field is populated.'\n              )\n              .optional(),\n            error: z\n              .object({\n                code: z.string().describe('Error code.').optional(),\n                description: z\n                  .string()\n                  .describe('Description of the error.')\n                  .optional(),\n                data: z\n                  .record(z.string(), z.any())\n                  .describe('Data related to the error.')\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Details about the error in case of failure.')\n              .optional(),\n          })\n          .describe('Information about successful action or error for failure.')\n          .optional(),\n        item: z\n          .intersection(\n            z.object({\n              _id: z\n                .string()\n                .describe('Product ID.')\n                .min(1)\n                .max(36)\n                .optional()\n                .nullable(),\n              revision: z\n                .string()\n                .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                .describe(\n                  'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product.'\n                )\n                .optional()\n                .nullable(),\n              _createdDate: z\n                .date()\n                .describe('Date and time the product was created.')\n                .optional()\n                .nullable(),\n              _updatedDate: z\n                .date()\n                .describe('Date and time the product was updated.')\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Product name. Translatable.')\n                .min(1)\n                .max(80)\n                .optional()\n                .nullable(),\n              slug: z\n                .string()\n                .describe(\n                  'Product slug. A URL-friendly identifier used in the product page address.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n                )\n                .min(1)\n                .max(300)\n                .optional()\n                .nullable(),\n              url: z\n                .string()\n                .describe(\n                  'URL to the site\\'s product page.\\n\\n> **Note:** Returned only when you pass `\"URL\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              description: z\n                .any()\n                .describe(\n                  'Product description using rich content.\\n> **Note:** Returned only when you pass `\"DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                )\n                .optional(),\n              plainDescription: z\n                .string()\n                .describe(\n                  'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                )\n                .max(16000)\n                .optional()\n                .nullable(),\n              visible: z\n                .boolean()\n                .describe(\n                  \"Whether the product is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the default variant's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                )\n                .optional()\n                .nullable(),\n              visibleInPos: z\n                .boolean()\n                .describe(\n                  'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n                )\n                .optional()\n                .nullable(),\n              media: z\n                .object({\n                  main: z\n                    .intersection(\n                      z.object({\n                        altText: z\n                          .string()\n                          .describe('Image alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        displayName: z\n                          .string()\n                          .describe(\n                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                          )\n                          .max(80)\n                          .optional()\n                          .nullable(),\n                        mediaType: z\n                          .enum(['IMAGE', 'VIDEO'])\n                          .describe('Media type.')\n                          .optional(),\n                        thumbnail: z\n                          .object({\n                            url: z\n                              .string()\n                              .describe('Thumbnail url.')\n                              .url()\n                              .optional(),\n                            height: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail height.')\n                              .optional(),\n                            width: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail width.')\n                              .optional(),\n                            altText: z\n                              .string()\n                              .describe('Thumbnail alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        uploadId: z\n                          .string()\n                          .describe(\n                            'ID used to upload media to Wix Media Manager.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                      }),\n                      z.intersection(\n                        z.xor([\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z.never().optional(),\n                          }),\n                          z.object({\n                            url: z.never().optional(),\n                            _id: z\n                              .string()\n                              .describe(\n                                'Set media by ID of an existing file in Wix Media Manager.'\n                              )\n                              .min(1)\n                              .max(200),\n                          }),\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z\n                              .string()\n                              .describe(\n                                'Set media using an external media URL.'\n                              )\n                              .url(),\n                          }),\n                        ]),\n                        z.xor([\n                          z.object({\n                            image: z.never().optional(),\n                            video: z.never().optional(),\n                          }),\n                          z.object({\n                            video: z.never().optional(),\n                            image: z\n                              .string()\n                              .describe(\n                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                              ),\n                          }),\n                          z.object({\n                            image: z.never().optional(),\n                            video: z\n                              .string()\n                              .describe(\n                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                    .describe(\n                      'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n                    )\n                    .optional(),\n                  itemsInfo: z\n                    .object({\n                      items: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              altText: z\n                                .string()\n                                .describe('Image alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              displayName: z\n                                .string()\n                                .describe(\n                                  \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                )\n                                .max(80)\n                                .optional()\n                                .nullable(),\n                              mediaType: z\n                                .enum(['IMAGE', 'VIDEO'])\n                                .describe('Media type.')\n                                .optional(),\n                              thumbnail: z\n                                .object({\n                                  url: z\n                                    .string()\n                                    .describe('Thumbnail url.')\n                                    .url()\n                                    .optional(),\n                                  height: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail height.')\n                                    .optional(),\n                                  width: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail width.')\n                                    .optional(),\n                                  altText: z\n                                    .string()\n                                    .describe('Thumbnail alt text.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                )\n                                .optional(),\n                              uploadId: z\n                                .string()\n                                .describe(\n                                  'ID used to upload media to Wix Media Manager.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                            }),\n                            z.intersection(\n                              z.xor([\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z.never().optional(),\n                                }),\n                                z.object({\n                                  url: z.never().optional(),\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Set media by ID of an existing file in Wix Media Manager.'\n                                    )\n                                    .min(1)\n                                    .max(200),\n                                }),\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z\n                                    .string()\n                                    .describe(\n                                      'Set media using an external media URL.'\n                                    )\n                                    .url(),\n                                }),\n                              ]),\n                              z.xor([\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z.never().optional(),\n                                }),\n                                z.object({\n                                  video: z.never().optional(),\n                                  image: z\n                                    .string()\n                                    .describe(\n                                      \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                    ),\n                                }),\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z\n                                    .string()\n                                    .describe(\n                                      \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                    ),\n                                }),\n                              ])\n                            )\n                          )\n                        )\n                        .max(50)\n                        .optional(),\n                    })\n                    .describe(\n                      'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Product media items. For a detailed explanation of product media, see [About Product Media](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/about-product-media).'\n                )\n                .optional(),\n              seoData: z\n                .object({\n                  tags: z\n                    .array(\n                      z.object({\n                        type: z\n                          .string()\n                          .describe(\n                            'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                          )\n                          .optional(),\n                        props: z\n                          .record(z.string(), z.any())\n                          .describe(\n                            'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                          )\n                          .optional()\n                          .nullable(),\n                        meta: z\n                          .record(z.string(), z.any())\n                          .describe(\n                            'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                          )\n                          .optional()\n                          .nullable(),\n                        children: z\n                          .string()\n                          .describe(\n                            'SEO tag inner content. For example, `<title> inner content </title>`.'\n                          )\n                          .optional(),\n                        custom: z\n                          .boolean()\n                          .describe(\n                            'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                          )\n                          .optional(),\n                        disabled: z\n                          .boolean()\n                          .describe(\n                            \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                          )\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                  settings: z\n                    .object({\n                      preventAutoRedirect: z\n                        .boolean()\n                        .describe(\n                          'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n                        )\n                        .optional(),\n                      keywords: z\n                        .array(\n                          z.object({\n                            term: z\n                              .string()\n                              .describe('Keyword value.')\n                              .optional(),\n                            isMain: z\n                              .boolean()\n                              .describe(\n                                'Whether the keyword is the main focus keyword.'\n                              )\n                              .optional(),\n                            origin: z\n                              .string()\n                              .describe(\n                                'The source that added the keyword terms to the SEO settings.'\n                              )\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                        )\n                        .max(5)\n                        .optional(),\n                    })\n                    .describe('SEO general settings.')\n                    .optional(),\n                })\n                .describe('Product SEO data.')\n                .optional(),\n              taxGroupId: z\n                .string()\n                .describe(\n                  '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              options: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe(\n                          'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n                        )\n                        .min(1)\n                        .max(36)\n                        .optional()\n                        .nullable(),\n                      name: z\n                        .string()\n                        .describe('Option name.')\n                        .min(1)\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                      optionRenderType: z\n                        .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                        .describe('Option render type.')\n                        .optional(),\n                      key: z\n                        .string()\n                        .describe(\n                          'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                        )\n                        .min(1)\n                        .max(50)\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({ choicesSettings: z.never().optional() }),\n                      z.object({\n                        choicesSettings: z\n                          .object({\n                            choices: z\n                              .array(\n                                z.intersection(\n                                  z.object({\n                                    choiceId: z\n                                      .string()\n                                      .describe('Choice ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    linkedMedia: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({\n                                            altText: z\n                                              .string()\n                                              .describe('Image alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                            displayName: z\n                                              .string()\n                                              .describe(\n                                                \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                              )\n                                              .max(80)\n                                              .optional()\n                                              .nullable(),\n                                            mediaType: z\n                                              .enum(['IMAGE', 'VIDEO'])\n                                              .describe('Media type.')\n                                              .optional(),\n                                            thumbnail: z\n                                              .object({\n                                                url: z\n                                                  .string()\n                                                  .describe('Thumbnail url.')\n                                                  .url()\n                                                  .optional(),\n                                                height: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail height.')\n                                                  .optional(),\n                                                width: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail width.')\n                                                  .optional(),\n                                                altText: z\n                                                  .string()\n                                                  .describe(\n                                                    'Thumbnail alt text.'\n                                                  )\n                                                  .min(1)\n                                                  .max(1000)\n                                                  .optional()\n                                                  .nullable(),\n                                              })\n                                              .describe(\n                                                'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .optional(),\n                                            uploadId: z\n                                              .string()\n                                              .describe(\n                                                'ID used to upload media to Wix Media Manager.'\n                                              )\n                                              .regex(\n                                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                                'Must be a valid GUID'\n                                              )\n                                              .optional(),\n                                          }),\n                                          z.intersection(\n                                            z.xor([\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                url: z.never().optional(),\n                                                _id: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media by ID of an existing file in Wix Media Manager.'\n                                                  )\n                                                  .min(1)\n                                                  .max(200),\n                                              }),\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media using an external media URL.'\n                                                  )\n                                                  .url(),\n                                              }),\n                                            ]),\n                                            z.xor([\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                video: z.never().optional(),\n                                                image: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                                  ),\n                                              }),\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                                  ),\n                                              }),\n                                            ])\n                                          )\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                    choiceType: z\n                                      .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                      .describe('Choice type.')\n                                      .optional(),\n                                    key: z\n                                      .string()\n                                      .describe(\n                                        'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                      )\n                                      .min(1)\n                                      .max(50)\n                                      .optional(),\n                                    name: z\n                                      .string()\n                                      .describe(\n                                        'Choice name. For text choices, this field also contains the choice value.'\n                                      )\n                                      .min(1)\n                                      .max(50)\n                                      .optional()\n                                      .nullable(),\n                                    inStock: z\n                                      .boolean()\n                                      .describe(\n                                        'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                                      )\n                                      .optional(),\n                                    visible: z\n                                      .boolean()\n                                      .describe(\n                                        'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                                      )\n                                      .optional(),\n                                    displayImage: z\n                                      .string()\n                                      .describe(\n                                        'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                      )\n                                      .optional(),\n                                    media: z\n                                      .object({\n                                        items: z\n                                          .array(\n                                            z.intersection(\n                                              z.object({}),\n                                              z.xor([\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z.never().optional(),\n                                                }),\n                                                z.object({\n                                                  url: z.never().optional(),\n                                                  mediaId: z\n                                                    .string()\n                                                    .describe(\n                                                      'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                    )\n                                                    .min(1)\n                                                    .max(200),\n                                                }),\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z\n                                                    .string()\n                                                    .describe(\n                                                      'External media URL. Can be used only on write.'\n                                                    )\n                                                    .url(),\n                                                }),\n                                              ])\n                                            )\n                                          )\n                                          .max(15)\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                      )\n                                      .optional(),\n                                  }),\n                                  z.xor([\n                                    z.object({\n                                      colorCode: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      colorCode: z\n                                        .string()\n                                        .describe(\n                                          'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                                        )\n                                        .min(3)\n                                        .max(20),\n                                    }),\n                                  ])\n                                )\n                              )\n                              .min(1)\n                              .max(100)\n                              .optional(),\n                          })\n                          .describe('Choices settings.'),\n                      }),\n                    ])\n                  )\n                )\n                .max(6)\n                .optional(),\n              modifiers: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe(\n                          'ID of a customization with `customizationType: MODIFIER`.'\n                        )\n                        .min(1)\n                        .max(36)\n                        .optional()\n                        .nullable(),\n                      name: z\n                        .string()\n                        .describe('Modifier title.')\n                        .min(1)\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                      modifierRenderType: z\n                        .enum(['FREE_TEXT', 'TEXT_CHOICES', 'SWATCH_CHOICES'])\n                        .describe('Modifier render type.')\n                        .optional(),\n                      mandatory: z\n                        .boolean()\n                        .describe(\n                          'Whether customer input is required for this modifier.'\n                        )\n                        .optional(),\n                      key: z\n                        .string()\n                        .describe(\n                          'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                        )\n                        .min(1)\n                        .max(50)\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({\n                        freeTextSettings: z.never().optional(),\n                        choicesSettings: z.never().optional(),\n                      }),\n                      z.object({\n                        choicesSettings: z.never().optional(),\n                        freeTextSettings: z\n                          .object({\n                            minCharCount: z\n                              .number()\n                              .int()\n                              .describe('Minimum number of characters.')\n                              .optional(),\n                            maxCharCount: z\n                              .number()\n                              .int()\n                              .describe('Maximum number of characters.')\n                              .max(500)\n                              .optional(),\n                            defaultAddedPrice: z\n                              .string()\n                              .describe(\n                                \"Default amount to be added to the product's price.\"\n                              )\n                              .optional()\n                              .nullable(),\n                            title: z\n                              .string()\n                              .describe(\n                                'Title of the text to be input by the customer.'\n                              )\n                              .min(1)\n                              .max(150)\n                              .optional(),\n                            key: z\n                              .string()\n                              .describe(\n                                'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                              )\n                              .min(1)\n                              .max(150)\n                              .optional(),\n                          })\n                          .describe('Free text modifier settings.'),\n                      }),\n                      z.object({\n                        freeTextSettings: z.never().optional(),\n                        choicesSettings: z\n                          .object({\n                            choices: z\n                              .array(\n                                z.intersection(\n                                  z.object({\n                                    choiceId: z\n                                      .string()\n                                      .describe('Choice ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    linkedMedia: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({\n                                            altText: z\n                                              .string()\n                                              .describe('Image alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                            displayName: z\n                                              .string()\n                                              .describe(\n                                                \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                              )\n                                              .max(80)\n                                              .optional()\n                                              .nullable(),\n                                            mediaType: z\n                                              .enum(['IMAGE', 'VIDEO'])\n                                              .describe('Media type.')\n                                              .optional(),\n                                            thumbnail: z\n                                              .object({\n                                                url: z\n                                                  .string()\n                                                  .describe('Thumbnail url.')\n                                                  .url()\n                                                  .optional(),\n                                                height: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail height.')\n                                                  .optional(),\n                                                width: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail width.')\n                                                  .optional(),\n                                                altText: z\n                                                  .string()\n                                                  .describe(\n                                                    'Thumbnail alt text.'\n                                                  )\n                                                  .min(1)\n                                                  .max(1000)\n                                                  .optional()\n                                                  .nullable(),\n                                              })\n                                              .describe(\n                                                'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .optional(),\n                                            uploadId: z\n                                              .string()\n                                              .describe(\n                                                'ID used to upload media to Wix Media Manager.'\n                                              )\n                                              .regex(\n                                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                                'Must be a valid GUID'\n                                              )\n                                              .optional(),\n                                          }),\n                                          z.intersection(\n                                            z.xor([\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                url: z.never().optional(),\n                                                _id: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media by ID of an existing file in Wix Media Manager.'\n                                                  )\n                                                  .min(1)\n                                                  .max(200),\n                                              }),\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media using an external media URL.'\n                                                  )\n                                                  .url(),\n                                              }),\n                                            ]),\n                                            z.xor([\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                video: z.never().optional(),\n                                                image: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                                  ),\n                                              }),\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                                  ),\n                                              }),\n                                            ])\n                                          )\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                    choiceType: z\n                                      .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                      .describe('Choice type.')\n                                      .optional(),\n                                    key: z\n                                      .string()\n                                      .describe(\n                                        'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                      )\n                                      .min(1)\n                                      .max(50)\n                                      .optional(),\n                                    name: z\n                                      .string()\n                                      .describe('Choice name.')\n                                      .min(1)\n                                      .max(50)\n                                      .optional()\n                                      .nullable(),\n                                    addedPrice: z\n                                      .string()\n                                      .describe('Added price.')\n                                      .optional()\n                                      .nullable(),\n                                    displayImage: z\n                                      .string()\n                                      .describe(\n                                        'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                      )\n                                      .optional(),\n                                    media: z\n                                      .object({\n                                        items: z\n                                          .array(\n                                            z.intersection(\n                                              z.object({}),\n                                              z.xor([\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z.never().optional(),\n                                                }),\n                                                z.object({\n                                                  url: z.never().optional(),\n                                                  mediaId: z\n                                                    .string()\n                                                    .describe(\n                                                      'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                    )\n                                                    .min(1)\n                                                    .max(200),\n                                                }),\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z\n                                                    .string()\n                                                    .describe(\n                                                      'External media URL. Can be used only on write.'\n                                                    )\n                                                    .url(),\n                                                }),\n                                              ])\n                                            )\n                                          )\n                                          .max(15)\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                      )\n                                      .optional(),\n                                  }),\n                                  z.xor([\n                                    z.object({\n                                      colorCode: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      colorCode: z\n                                        .string()\n                                        .describe(\n                                          'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                                        )\n                                        .min(3)\n                                        .max(20),\n                                    }),\n                                  ])\n                                )\n                              )\n                              .min(1)\n                              .max(100)\n                              .optional(),\n                          })\n                          .describe('Choice settings.'),\n                      }),\n                    ])\n                  )\n                )\n                .max(10)\n                .optional(),\n              brand: z\n                .object({\n                  _id: z\n                    .string()\n                    .describe('Brand ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Brand name.')\n                    .max(50)\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  \"Product [brand](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/brands-v3/introduction).\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n                )\n                .optional(),\n              infoSections: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Info section ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    uniqueName: z\n                      .string()\n                      .describe(\n                        'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                      )\n                      .max(100)\n                      .optional()\n                      .nullable(),\n                    title: z\n                      .string()\n                      .describe(\n                        'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                      )\n                      .min(1)\n                      .max(50)\n                      .optional()\n                      .nullable(),\n                    description: z\n                      .any()\n                      .describe(\n                        'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                      )\n                      .optional(),\n                    plainDescription: z\n                      .string()\n                      .describe(\n                        'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                      )\n                      .max(16000)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(10)\n                .optional(),\n              ribbon: z\n                .object({\n                  _id: z\n                    .string()\n                    .describe('Ribbon ID.')\n                    .min(1)\n                    .max(36)\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Ribbon name.')\n                    .max(30)\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  \"Primary [ribbon](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/ribbons-v3/introduction) displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n                )\n                .optional(),\n              directCategoriesInfo: z\n                .object({\n                  categories: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('Category ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        index: z\n                          .number()\n                          .int()\n                          .describe(\n                            'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                          )\n                          .min(0)\n                          .max(200)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(2000)\n                    .optional(),\n                })\n                .describe(\n                  'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product.\\n\\nUpdated automatically when a product is added/removed from a category, when an item is moved within a category, or when a category is deleted.\\n> **Note:** Returned only when you pass `\"DIRECT_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              allCategoriesInfo: z\n                .object({\n                  categories: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('Category ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        index: z\n                          .number()\n                          .int()\n                          .describe(\n                            'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                          )\n                          .min(0)\n                          .max(200)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(2000)\n                    .optional(),\n                })\n                .describe(\n                  'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product, as well as their parent categories.\\n> **Note:** Returned only when you pass `\"ALL_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              mainCategoryId: z\n                .string()\n                .describe(\n                  'The ID of the product\\'s primary direct [category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction), which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              costRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum value.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum value.')\n                    .optional(),\n                })\n                .describe(\n                  'Product cost range - minimum and maximum costs of all product variants.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                )\n                .optional(),\n              inventory: z\n                .object({\n                  availabilityStatus: z\n                    .enum([\n                      'IN_STOCK',\n                      'OUT_OF_STOCK',\n                      'PARTIALLY_OUT_OF_STOCK',\n                    ])\n                    .describe('Current availability status.')\n                    .optional(),\n                  preorderStatus: z\n                    .enum(['ENABLED', 'DISABLED', 'PARTIALLY_ENABLED'])\n                    .describe('Current preorder status.')\n                    .optional(),\n                  preorderAvailability: z\n                    .enum(['ALL_VARIANTS', 'NO_VARIANTS', 'SOME_VARIANTS'])\n                    .describe('Preorder availability status.')\n                    .optional(),\n                })\n                .describe(\n                  'Product inventory info.\\n\\n> **Note:** This field reflects the aggregated inventory status from the default location only. Use the [Inventory Items API](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/inventory-items-v3/introduction) to manage inventory for specific locations. Learn more about [inventory management](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-inventory-management).'\n                )\n                .optional(),\n              productType: z\n                .enum(['PHYSICAL', 'DIGITAL'])\n                .describe(\n                  'Product type: `PHYSICAL` for tangible goods that require shipping, or `DIGITAL` for downloadable content.\\n\\nWhen passing `productType: PHYSICAL`, you must also pass `physicalProperties`. When passing `productType: DIGITAL`, you can optionally pass `digitalProperties` in each variant.'\n                )\n                .optional(),\n              handle: z\n                .string()\n                .describe(\n                  \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n                )\n                .min(1)\n                .max(100)\n                .optional()\n                .nullable(),\n              currency: z\n                .string()\n                .describe(\n                  'Currency used for the pricing of this product, in [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes) format.\\n\\nDefaults to the currency defined in the site settings, unless specified in the request\\'s `x-wix-currency` header.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                )\n                .optional()\n                .nullable(),\n              breadcrumbsInfo: z\n                .object({\n                  breadcrumbs: z\n                    .array(\n                      z.object({\n                        categoryId: z\n                          .string()\n                          .describe('Category ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        categoryName: z\n                          .string()\n                          .describe('Category name.')\n                          .min(1)\n                          .max(80)\n                          .optional(),\n                        categorySlug: z\n                          .string()\n                          .describe('Category slug.')\n                          .min(1)\n                          .max(100)\n                          .optional(),\n                      })\n                    )\n                    .max(5)\n                    .optional(),\n                })\n                .describe(\n                  'Breadcrumbs of the `mainCategoryId`. Used to navigate to parent [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction). Useful for building navigation UI and for SEO purposes.\\n> **Note:** Returned only when you pass `\"BREADCRUMBS_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              actualPriceRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum value.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum value.')\n                    .optional(),\n                })\n                .describe(\n                  'Minimum and maximum current selling prices across all product variants.'\n                )\n                .optional(),\n              compareAtPriceRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum value.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum value.')\n                    .optional(),\n                })\n                .describe(\n                  'Minimum and maximum compare-at prices (original prices before discounts) across all product variants. Used to show savings to customers.'\n                )\n                .optional(),\n              variantsInfo: z\n                .object({\n                  variants: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          _id: z\n                            .string()\n                            .describe('Variant ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          visible: z\n                            .boolean()\n                            .describe(\n                              \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                            )\n                            .optional()\n                            .nullable(),\n                          sku: z\n                            .string()\n                            .describe('Variant SKU (stock keeping unit).')\n                            .min(1)\n                            .max(40)\n                            .optional()\n                            .nullable(),\n                          barcode: z\n                            .string()\n                            .describe('Variant barcode.')\n                            .min(1)\n                            .max(40)\n                            .optional()\n                            .nullable(),\n                          choices: z\n                            .array(\n                              z.object({\n                                optionChoiceIds: z\n                                  .object({\n                                    optionId: z\n                                      .string()\n                                      .describe('Option ID.')\n                                      .min(1)\n                                      .max(36)\n                                      .optional(),\n                                    choiceId: z\n                                      .string()\n                                      .describe('Choice ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                                  )\n                                  .optional(),\n                                optionChoiceNames: z\n                                  .object({\n                                    optionName: z\n                                      .string()\n                                      .describe('Option name.')\n                                      .min(1)\n                                      .optional(),\n                                    choiceName: z\n                                      .string()\n                                      .describe('Choice name.')\n                                      .min(1)\n                                      .optional(),\n                                    renderType: z\n                                      .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                      .describe(\n                                        'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .optional(),\n                              })\n                            )\n                            .min(0)\n                            .max(6)\n                            .optional(),\n                          price: z\n                            .object({\n                              actualPrice: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  \"Variant's current selling price. Must be greater than or equal to 0.\"\n                                )\n                                .optional(),\n                              compareAtPrice: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                                )\n                                .optional(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                            .describe('Variant price.')\n                            .optional(),\n                          revenueDetails: z\n                            .object({\n                              cost: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe('Item cost.')\n                                .optional(),\n                              profit: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                                )\n                                .optional(),\n                              profitMargin: z\n                                .number()\n                                .describe(\n                                  'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                                )\n                                .min(0)\n                                .max(1)\n                                .optional(),\n                            })\n                            .describe(\n                              'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                            )\n                            .optional(),\n                          media: z\n                            .intersection(\n                              z.object({\n                                altText: z\n                                  .string()\n                                  .describe('Image alt text.')\n                                  .min(1)\n                                  .max(1000)\n                                  .optional()\n                                  .nullable(),\n                                displayName: z\n                                  .string()\n                                  .describe(\n                                    \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                  )\n                                  .max(80)\n                                  .optional()\n                                  .nullable(),\n                                mediaType: z\n                                  .enum(['IMAGE', 'VIDEO'])\n                                  .describe('Media type.')\n                                  .optional(),\n                                thumbnail: z\n                                  .object({\n                                    url: z\n                                      .string()\n                                      .describe('Thumbnail url.')\n                                      .url()\n                                      .optional(),\n                                    height: z\n                                      .number()\n                                      .int()\n                                      .describe('Thumbnail height.')\n                                      .optional(),\n                                    width: z\n                                      .number()\n                                      .int()\n                                      .describe('Thumbnail width.')\n                                      .optional(),\n                                    altText: z\n                                      .string()\n                                      .describe('Thumbnail alt text.')\n                                      .min(1)\n                                      .max(1000)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .optional(),\n                                uploadId: z\n                                  .string()\n                                  .describe(\n                                    'ID used to upload media to Wix Media Manager.'\n                                  )\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional(),\n                              }),\n                              z.intersection(\n                                z.xor([\n                                  z.object({\n                                    _id: z.never().optional(),\n                                    url: z.never().optional(),\n                                  }),\n                                  z.object({\n                                    url: z.never().optional(),\n                                    _id: z\n                                      .string()\n                                      .describe(\n                                        'Set media by ID of an existing file in Wix Media Manager.'\n                                      )\n                                      .min(1)\n                                      .max(200),\n                                  }),\n                                  z.object({\n                                    _id: z.never().optional(),\n                                    url: z\n                                      .string()\n                                      .describe(\n                                        'Set media using an external media URL.'\n                                      )\n                                      .url(),\n                                  }),\n                                ]),\n                                z.xor([\n                                  z.object({\n                                    image: z.never().optional(),\n                                    video: z.never().optional(),\n                                  }),\n                                  z.object({\n                                    video: z.never().optional(),\n                                    image: z\n                                      .string()\n                                      .describe(\n                                        \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                      ),\n                                  }),\n                                  z.object({\n                                    image: z.never().optional(),\n                                    video: z\n                                      .string()\n                                      .describe(\n                                        \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                      ),\n                                  }),\n                                ])\n                              )\n                            )\n                            .describe('Variant media.')\n                            .optional(),\n                          subscriptionPricesInfo: z\n                            .object({\n                              subscriptionPrices: z\n                                .array(\n                                  z.object({\n                                    subscriptionId: z\n                                      .string()\n                                      .describe('Subscription ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional(),\n                                    price: z\n                                      .object({\n                                        amount: z\n                                          .string()\n                                          .describe(\n                                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                          )\n                                          .optional(),\n                                        formattedAmount: z\n                                          .string()\n                                          .describe(\n                                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                      )\n                                      .optional(),\n                                    pricePerUnit: z\n                                      .object({\n                                        value: z\n                                          .string()\n                                          .describe(\n                                            'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                          )\n                                          .optional(),\n                                        description: z\n                                          .string()\n                                          .describe(\n                                            'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                        priceAfterDiscount: z\n                                          .object({\n                                            amount: z\n                                              .string()\n                                              .describe(\n                                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                              )\n                                              .optional(),\n                                            formattedAmount: z\n                                              .string()\n                                              .describe(\n                                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .max(20)\n                                              .optional()\n                                              .nullable(),\n                                          })\n                                          .describe(\n                                            'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe('Price per unit info.')\n                                      .optional(),\n                                    priceAfterDiscount: z\n                                      .object({\n                                        amount: z\n                                          .string()\n                                          .describe(\n                                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                          )\n                                          .optional(),\n                                        formattedAmount: z\n                                          .string()\n                                          .describe(\n                                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                      )\n                                      .optional(),\n                                  })\n                                )\n                                .max(6)\n                                .optional(),\n                            })\n                            .describe(\n                              'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                          inventoryStatus: z\n                            .object({\n                              inStock: z\n                                .boolean()\n                                .describe('Whether the variant is in stock.')\n                                .optional(),\n                              preorderEnabled: z\n                                .boolean()\n                                .describe(\n                                  'Whether preorder is enabled for this variant.'\n                                )\n                                .optional(),\n                            })\n                            .describe('Variant inventory status.')\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({\n                            physicalProperties: z.never().optional(),\n                            digitalProperties: z.never().optional(),\n                          }),\n                          z.object({\n                            digitalProperties: z.never().optional(),\n                            physicalProperties: z\n                              .object({\n                                weight: z\n                                  .number()\n                                  .describe(\n                                    'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                                  )\n                                  .min(0)\n                                  .max(999999999.99)\n                                  .optional()\n                                  .nullable(),\n                                pricePerUnit: z\n                                  .object({\n                                    settings: z\n                                      .object({\n                                        quantity: z\n                                          .number()\n                                          .describe(\n                                            'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                          )\n                                          .min(0.01)\n                                          .max(999999999.99)\n                                          .optional(),\n                                        measurementUnit: z\n                                          .enum([\n                                            'UNSPECIFIED',\n                                            'ML',\n                                            'CL',\n                                            'L',\n                                            'CBM',\n                                            'MG',\n                                            'G',\n                                            'KG',\n                                            'MM',\n                                            'CM',\n                                            'M',\n                                            'SQM',\n                                            'OZ',\n                                            'LB',\n                                            'FLOZ',\n                                            'PT',\n                                            'QT',\n                                            'GAL',\n                                            'IN',\n                                            'FT',\n                                            'YD',\n                                            'SQFT',\n                                          ])\n                                          .describe(\n                                            'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                      )\n                                      .optional(),\n                                    value: z\n                                      .string()\n                                      .describe(\n                                        \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                      )\n                                      .optional(),\n                                    description: z\n                                      .string()\n                                      .describe(\n                                        'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(100)\n                                      .optional()\n                                      .nullable(),\n                                    priceAfterDiscount: z\n                                      .object({\n                                        amount: z\n                                          .string()\n                                          .describe(\n                                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                          )\n                                          .optional(),\n                                        formattedAmount: z\n                                          .string()\n                                          .describe(\n                                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                                  )\n                                  .optional(),\n                                productDimensions: z\n                                  .object({\n                                    length: z\n                                      .string()\n                                      .describe(\n                                        'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    width: z\n                                      .string()\n                                      .describe(\n                                        'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    height: z\n                                      .string()\n                                      .describe(\n                                        'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    unit: z\n                                      .enum([\n                                        'UNKNOWN_DIMENSIONS_UNIT',\n                                        'MM',\n                                        'CM',\n                                        'M',\n                                        'IN',\n                                        'FT',\n                                        'YD',\n                                      ])\n                                      .describe(\n                                        'Unit of measurement for dimensions (length, width, height).'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Product dimensions (length, width, height of the physical product).'\n                                  )\n                                  .optional(),\n                                packageDimensions: z\n                                  .object({\n                                    length: z\n                                      .string()\n                                      .describe(\n                                        'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    width: z\n                                      .string()\n                                      .describe(\n                                        'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    height: z\n                                      .string()\n                                      .describe(\n                                        'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    unit: z\n                                      .enum([\n                                        'UNKNOWN_DIMENSIONS_UNIT',\n                                        'MM',\n                                        'CM',\n                                        'M',\n                                        'IN',\n                                        'FT',\n                                        'YD',\n                                      ])\n                                      .describe(\n                                        'Unit of measurement for dimensions (length, width, height).'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Package dimensions (length, width, height of the shipping package).'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Physical properties. Must be passed when `productType: PHYSICAL`'\n                              ),\n                          }),\n                          z.object({\n                            physicalProperties: z.never().optional(),\n                            digitalProperties: z\n                              .object({\n                                digitalFile: z\n                                  .object({\n                                    _id: z\n                                      .string()\n                                      .describe('Media ID in media manager.')\n                                      .min(1)\n                                      .max(100)\n                                      .optional(),\n                                    fileName: z\n                                      .string()\n                                      .describe('Original file name.')\n                                      .min(1)\n                                      .max(1000)\n                                      .optional(),\n                                    fileSize: z\n                                      .string()\n                                      .describe('Original file size.')\n                                      .min(1)\n                                      .max(1000)\n                                      .optional()\n                                      .nullable(),\n                                    fileType: z\n                                      .enum([\n                                        'UNSPECIFIED',\n                                        'SECURE_PICTURE',\n                                        'SECURE_VIDEO',\n                                        'SECURE_DOCUMENT',\n                                        'SECURE_MUSIC',\n                                        'SECURE_ARCHIVE',\n                                        'SECURE_RAW',\n                                      ])\n                                      .describe('File type.')\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Digital properties. Must be passed when `productType: DIGITAL`'\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                    .min(1)\n                    .max(1000)\n                    .optional(),\n                })\n                .describe(\n                  'Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nYou must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).'\n                )\n                .optional(),\n              purchaseEligibility: z\n                .object({ userCriteria: z.enum(['MEMBERS_ONLY']).optional() })\n                .describe('Purchase eligibility settings for the product.')\n                .optional(),\n              additionalRibbons: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Ribbon ID.')\n                      .min(1)\n                      .max(36)\n                      .optional()\n                      .nullable(),\n                    name: z\n                      .string()\n                      .describe('Ribbon name.')\n                      .max(30)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(4)\n                .optional(),\n              extendedFields: z\n                .object({\n                  namespaces: z\n                    .record(z.string(), z.record(z.string(), z.any()))\n                    .describe(\n                      'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n                )\n                .optional(),\n              tags: z\n                .object({\n                  privateTags: z\n                    .object({ tagIds: z.array(z.string()).max(100).optional() })\n                    .describe(\n                      'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n                    )\n                    .optional(),\n                  publicTags: z\n                    .object({ tagIds: z.array(z.string()).max(100).optional() })\n                    .describe(\n                      'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n                    )\n                    .optional(),\n                })\n                .describe('Tags')\n                .optional(),\n              subscriptionDetails: z\n                .object({\n                  subscriptions: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          _id: z\n                            .string()\n                            .describe('Subscription ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          title: z\n                            .string()\n                            .describe('Subscription title.')\n                            .min(1)\n                            .max(20)\n                            .optional(),\n                          description: z\n                            .string()\n                            .describe('Subscription description.')\n                            .max(60)\n                            .optional()\n                            .nullable(),\n                          visible: z\n                            .boolean()\n                            .describe(\n                              'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                            )\n                            .optional()\n                            .nullable(),\n                          frequency: z\n                            .enum(['UNDEFINED', 'DAY', 'WEEK', 'MONTH', 'YEAR'])\n                            .describe(\n                              'Frequency of recurring payment.\\nFor example, if `frequency: MONTH` and `billingCycles: 6`; payment will be made monthly for 6 months.'\n                            )\n                            .optional(),\n                          interval: z\n                            .number()\n                            .int()\n                            .describe(\n                              'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                            )\n                            .min(1)\n                            .max(50)\n                            .optional()\n                            .nullable(),\n                          discount: z\n                            .intersection(\n                              z.object({\n                                type: z\n                                  .enum(['AMOUNT', 'PERCENT'])\n                                  .describe('Discount type.')\n                                  .optional(),\n                              }),\n                              z.xor([\n                                z.object({\n                                  amountOff: z.never().optional(),\n                                  percentOff: z.never().optional(),\n                                }),\n                                z.object({\n                                  percentOff: z.never().optional(),\n                                  amountOff: z\n                                    .string()\n                                    .describe(\n                                      'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                                    ),\n                                }),\n                                z.object({\n                                  amountOff: z.never().optional(),\n                                  percentOff: z\n                                    .number()\n                                    .describe(\n                                      'Percentage subtracted from the variant price when calculating subscription prices.'\n                                    )\n                                    .min(0.1)\n                                    .max(99.9),\n                                }),\n                              ])\n                            )\n                            .describe(\n                              'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                            )\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({\n                            autoRenewal: z.never().optional(),\n                            billingCycles: z.never().optional(),\n                          }),\n                          z.object({\n                            billingCycles: z.never().optional(),\n                            autoRenewal: z\n                              .boolean()\n                              .describe(\n                                'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                              ),\n                          }),\n                          z.object({\n                            autoRenewal: z.never().optional(),\n                            billingCycles: z\n                              .number()\n                              .int()\n                              .describe(\n                                'Number of billing cycles before subscription ends.'\n                              )\n                              .min(2)\n                              .max(999),\n                          }),\n                        ])\n                      )\n                    )\n                    .min(1)\n                    .max(6)\n                    .optional(),\n                  allowOneTimePurchases: z\n                    .boolean()\n                    .describe(\n                      'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n                    )\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n                )\n                .optional(),\n              variantSummary: z\n                .object({\n                  variantCount: z\n                    .number()\n                    .int()\n                    .describe('The total number of variants for the product.')\n                    .optional(),\n                  minPriceVariant: z\n                    .intersection(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('Variant ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        visible: z\n                          .boolean()\n                          .describe(\n                            \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                          )\n                          .optional()\n                          .nullable(),\n                        sku: z\n                          .string()\n                          .describe('Variant SKU (stock keeping unit).')\n                          .min(1)\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        barcode: z\n                          .string()\n                          .describe('Variant barcode.')\n                          .min(1)\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        choices: z\n                          .array(\n                            z.object({\n                              optionChoiceIds: z\n                                .object({\n                                  optionId: z\n                                    .string()\n                                    .describe('Option ID.')\n                                    .min(1)\n                                    .max(36)\n                                    .optional(),\n                                  choiceId: z\n                                    .string()\n                                    .describe('Choice ID.')\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                                )\n                                .optional(),\n                              optionChoiceNames: z\n                                .object({\n                                  optionName: z\n                                    .string()\n                                    .describe('Option name.')\n                                    .min(1)\n                                    .optional(),\n                                  choiceName: z\n                                    .string()\n                                    .describe('Choice name.')\n                                    .min(1)\n                                    .optional(),\n                                  renderType: z\n                                    .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                    .describe(\n                                      'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                                )\n                                .optional(),\n                            })\n                          )\n                          .min(0)\n                          .max(6)\n                          .optional(),\n                        price: z\n                          .object({\n                            actualPrice: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                \"Variant's current selling price. Must be greater than or equal to 0.\"\n                              )\n                              .optional(),\n                            compareAtPrice: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                              )\n                              .optional(),\n                            priceAfterDiscount: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                              )\n                              .optional(),\n                          })\n                          .describe('Variant price.')\n                          .optional(),\n                        revenueDetails: z\n                          .object({\n                            cost: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe('Item cost.')\n                              .optional(),\n                            profit: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                              )\n                              .optional(),\n                            profitMargin: z\n                              .number()\n                              .describe(\n                                'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                              )\n                              .min(0)\n                              .max(1)\n                              .optional(),\n                          })\n                          .describe(\n                            'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                          )\n                          .optional(),\n                        media: z\n                          .intersection(\n                            z.object({\n                              altText: z\n                                .string()\n                                .describe('Image alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              displayName: z\n                                .string()\n                                .describe(\n                                  \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                )\n                                .max(80)\n                                .optional()\n                                .nullable(),\n                              mediaType: z\n                                .enum(['IMAGE', 'VIDEO'])\n                                .describe('Media type.')\n                                .optional(),\n                              thumbnail: z\n                                .object({\n                                  url: z\n                                    .string()\n                                    .describe('Thumbnail url.')\n                                    .url()\n                                    .optional(),\n                                  height: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail height.')\n                                    .optional(),\n                                  width: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail width.')\n                                    .optional(),\n                                  altText: z\n                                    .string()\n                                    .describe('Thumbnail alt text.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                )\n                                .optional(),\n                              uploadId: z\n                                .string()\n                                .describe(\n                                  'ID used to upload media to Wix Media Manager.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                            }),\n                            z.intersection(\n                              z.xor([\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z.never().optional(),\n                                }),\n                                z.object({\n                                  url: z.never().optional(),\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Set media by ID of an existing file in Wix Media Manager.'\n                                    )\n                                    .min(1)\n                                    .max(200),\n                                }),\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z\n                                    .string()\n                                    .describe(\n                                      'Set media using an external media URL.'\n                                    )\n                                    .url(),\n                                }),\n                              ]),\n                              z.xor([\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z.never().optional(),\n                                }),\n                                z.object({\n                                  video: z.never().optional(),\n                                  image: z\n                                    .string()\n                                    .describe(\n                                      \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                    ),\n                                }),\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z\n                                    .string()\n                                    .describe(\n                                      \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                    ),\n                                }),\n                              ])\n                            )\n                          )\n                          .describe('Variant media.')\n                          .optional(),\n                        subscriptionPricesInfo: z\n                          .object({\n                            subscriptionPrices: z\n                              .array(\n                                z.object({\n                                  subscriptionId: z\n                                    .string()\n                                    .describe('Subscription ID.')\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                  price: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                    )\n                                    .optional(),\n                                  pricePerUnit: z\n                                    .object({\n                                      value: z\n                                        .string()\n                                        .describe(\n                                          'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                        )\n                                        .optional(),\n                                      description: z\n                                        .string()\n                                        .describe(\n                                          'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                      priceAfterDiscount: z\n                                        .object({\n                                          amount: z\n                                            .string()\n                                            .describe(\n                                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                            )\n                                            .optional(),\n                                          formattedAmount: z\n                                            .string()\n                                            .describe(\n                                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                            )\n                                            .max(20)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                        )\n                                        .optional(),\n                                    })\n                                    .describe('Price per unit info.')\n                                    .optional(),\n                                  priceAfterDiscount: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                    )\n                                    .optional(),\n                                })\n                              )\n                              .max(6)\n                              .optional(),\n                          })\n                          .describe(\n                            'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        inventoryStatus: z\n                          .object({\n                            inStock: z\n                              .boolean()\n                              .describe('Whether the variant is in stock.')\n                              .optional(),\n                            preorderEnabled: z\n                              .boolean()\n                              .describe(\n                                'Whether preorder is enabled for this variant.'\n                              )\n                              .optional(),\n                          })\n                          .describe('Variant inventory status.')\n                          .optional(),\n                      }),\n                      z.xor([\n                        z.object({\n                          physicalProperties: z.never().optional(),\n                          digitalProperties: z.never().optional(),\n                        }),\n                        z.object({\n                          digitalProperties: z.never().optional(),\n                          physicalProperties: z\n                            .object({\n                              weight: z\n                                .number()\n                                .describe(\n                                  'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                                )\n                                .min(0)\n                                .max(999999999.99)\n                                .optional()\n                                .nullable(),\n                              pricePerUnit: z\n                                .object({\n                                  settings: z\n                                    .object({\n                                      quantity: z\n                                        .number()\n                                        .describe(\n                                          'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                        )\n                                        .min(0.01)\n                                        .max(999999999.99)\n                                        .optional(),\n                                      measurementUnit: z\n                                        .enum([\n                                          'UNSPECIFIED',\n                                          'ML',\n                                          'CL',\n                                          'L',\n                                          'CBM',\n                                          'MG',\n                                          'G',\n                                          'KG',\n                                          'MM',\n                                          'CM',\n                                          'M',\n                                          'SQM',\n                                          'OZ',\n                                          'LB',\n                                          'FLOZ',\n                                          'PT',\n                                          'QT',\n                                          'GAL',\n                                          'IN',\n                                          'FT',\n                                          'YD',\n                                          'SQFT',\n                                        ])\n                                        .describe(\n                                          'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                        )\n                                        .optional(),\n                                    })\n                                    .describe(\n                                      'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                    )\n                                    .optional(),\n                                  value: z\n                                    .string()\n                                    .describe(\n                                      \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                    )\n                                    .optional(),\n                                  description: z\n                                    .string()\n                                    .describe(\n                                      'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(100)\n                                    .optional()\n                                    .nullable(),\n                                  priceAfterDiscount: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                                )\n                                .optional(),\n                              productDimensions: z\n                                .object({\n                                  length: z\n                                    .string()\n                                    .describe(\n                                      'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  width: z\n                                    .string()\n                                    .describe(\n                                      'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  height: z\n                                    .string()\n                                    .describe(\n                                      'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  unit: z\n                                    .enum([\n                                      'UNKNOWN_DIMENSIONS_UNIT',\n                                      'MM',\n                                      'CM',\n                                      'M',\n                                      'IN',\n                                      'FT',\n                                      'YD',\n                                    ])\n                                    .describe(\n                                      'Unit of measurement for dimensions (length, width, height).'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Product dimensions (length, width, height of the physical product).'\n                                )\n                                .optional(),\n                              packageDimensions: z\n                                .object({\n                                  length: z\n                                    .string()\n                                    .describe(\n                                      'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  width: z\n                                    .string()\n                                    .describe(\n                                      'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  height: z\n                                    .string()\n                                    .describe(\n                                      'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  unit: z\n                                    .enum([\n                                      'UNKNOWN_DIMENSIONS_UNIT',\n                                      'MM',\n                                      'CM',\n                                      'M',\n                                      'IN',\n                                      'FT',\n                                      'YD',\n                                    ])\n                                    .describe(\n                                      'Unit of measurement for dimensions (length, width, height).'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Package dimensions (length, width, height of the shipping package).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Physical properties. Must be passed when `productType: PHYSICAL`'\n                            ),\n                        }),\n                        z.object({\n                          physicalProperties: z.never().optional(),\n                          digitalProperties: z\n                            .object({\n                              digitalFile: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe('Media ID in media manager.')\n                                    .min(1)\n                                    .max(100)\n                                    .optional(),\n                                  fileName: z\n                                    .string()\n                                    .describe('Original file name.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional(),\n                                  fileSize: z\n                                    .string()\n                                    .describe('Original file size.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                  fileType: z\n                                    .enum([\n                                      'UNSPECIFIED',\n                                      'SECURE_PICTURE',\n                                      'SECURE_VIDEO',\n                                      'SECURE_DOCUMENT',\n                                      'SECURE_MUSIC',\n                                      'SECURE_ARCHIVE',\n                                      'SECURE_RAW',\n                                    ])\n                                    .describe('File type.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Digital properties. Must be passed when `productType: DIGITAL`'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\n                      'The variant with the lowest `actualPrice` among visible variants for this product.\\n\\nHidden variants are excluded; ties are broken by variant order. Empty if the product has no visible variants.\\n> **Note:** Returned only when you pass `\"MIN_PRICE_VARIANT\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                })\n                .describe('The total number of variants for the product.')\n                .optional(),\n            }),\n            z.xor([\n              z.object({ physicalProperties: z.never().optional() }),\n              z.object({\n                physicalProperties: z\n                  .object({\n                    pricePerUnit: z\n                      .object({\n                        quantity: z\n                          .number()\n                          .describe(\n                            'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                          )\n                          .min(0.01)\n                          .max(999999999.99)\n                          .optional(),\n                        measurementUnit: z\n                          .enum([\n                            'UNSPECIFIED',\n                            'ML',\n                            'CL',\n                            'L',\n                            'CBM',\n                            'MG',\n                            'G',\n                            'KG',\n                            'MM',\n                            'CM',\n                            'M',\n                            'SQM',\n                            'OZ',\n                            'LB',\n                            'FLOZ',\n                            'PT',\n                            'QT',\n                            'GAL',\n                            'IN',\n                            'FT',\n                            'YD',\n                            'SQFT',\n                          ])\n                          .describe(\n                            'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n                      )\n                      .optional(),\n                    fulfillerId: z\n                      .string()\n                      .describe('Fulfiller ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    shippingWeightRange: z\n                      .object({\n                        minValue: z\n                          .number()\n                          .describe(\n                            'Minimum weight across all variants associated with this product.'\n                          )\n                          .min(0)\n                          .max(999999999.99)\n                          .optional(),\n                        maxValue: z\n                          .number()\n                          .describe(\n                            'Maximum weight across all variants associated with this product.'\n                          )\n                          .min(0)\n                          .max(999999999.99)\n                          .optional(),\n                      })\n                      .describe(\n                        'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n                      )\n                      .optional(),\n                    pricePerUnitRange: z\n                      .object({\n                        minValue: z\n                          .object({\n                            value: z\n                              .string()\n                              .describe(\n                                \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                              )\n                              .optional(),\n                            description: z\n                              .string()\n                              .describe(\n                                'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                              )\n                              .max(100)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Minimum price per unit across all variants.'\n                          )\n                          .optional(),\n                        maxValue: z\n                          .object({\n                            value: z\n                              .string()\n                              .describe(\n                                \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                              )\n                              .optional(),\n                            description: z\n                              .string()\n                              .describe(\n                                'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                              )\n                              .max(100)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Maximum price per unit across all variants.'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n                      )\n                      .optional(),\n                    weightMeasurementUnitInfo: z\n                      .object({\n                        weightMeasurementUnit: z\n                          .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                          .describe('Weight measurement unit.')\n                          .optional(),\n                      })\n                      .describe(\n                        'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    deliveryProfileId: z\n                      .string()\n                      .describe('Delivery profile ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe(\n                    'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'Full product entity.\\n\\nReturned only if `returnEntity: true` is passed in the request.'\n          )\n          .optional(),\n      })\n    )\n    .min(1)\n    .max(100)\n    .optional(),\n  bulkActionMetadata: z\n    .object({\n      totalSuccesses: z\n        .number()\n        .int()\n        .describe('Number of items that were successfully processed.')\n        .optional(),\n      totalFailures: z\n        .number()\n        .int()\n        .describe(\"Number of items that couldn't be processed.\")\n        .optional(),\n      undetailedFailures: z\n        .number()\n        .int()\n        .describe(\n          'Number of failures without details because detailed failure threshold was exceeded.'\n        )\n        .optional(),\n    })\n    .describe('Bulk action metadata.')\n    .optional(),\n});\nexport const BulkCreateProductsWithInventoryRequest = z.object({\n  products: z\n    .array(\n      z.intersection(\n        z.object({\n          _id: z\n            .string()\n            .describe('Product ID.')\n            .min(1)\n            .max(36)\n            .optional()\n            .nullable(),\n          revision: z\n            .string()\n            .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n            .describe(\n              'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product with inventory.'\n            )\n            .optional()\n            .nullable(),\n          name: z\n            .string()\n            .describe('Product name. Translatable.')\n            .min(1)\n            .max(80),\n          slug: z\n            .string()\n            .describe(\n              'Product slug.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n            )\n            .min(1)\n            .max(300)\n            .optional()\n            .nullable(),\n          plainDescription: z\n            .string()\n            .describe(\n              'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n            )\n            .max(16000)\n            .optional()\n            .nullable(),\n          visible: z\n            .boolean()\n            .describe(\n              'Whether the product is visible to site visitors.\\n\\nDefault: `true`'\n            )\n            .optional()\n            .nullable(),\n          visibleInPos: z\n            .boolean()\n            .describe(\n              'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n            )\n            .optional()\n            .nullable(),\n          media: z\n            .object({\n              main: z\n                .intersection(\n                  z.object({\n                    altText: z\n                      .string()\n                      .describe('Image alt text.')\n                      .min(1)\n                      .max(1000)\n                      .optional()\n                      .nullable(),\n                    displayName: z\n                      .string()\n                      .describe(\n                        \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                      )\n                      .max(80)\n                      .optional()\n                      .nullable(),\n                    mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                    thumbnail: z\n                      .object({\n                        url: z\n                          .string()\n                          .describe('Thumbnail url.')\n                          .url()\n                          .optional(),\n                        height: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail height.')\n                          .optional(),\n                        width: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail width.')\n                          .optional(),\n                        altText: z\n                          .string()\n                          .describe('Thumbnail alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    uploadId: z\n                      .string()\n                      .describe('ID used to upload media to Wix Media Manager.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                  }),\n                  z.intersection(\n                    z.xor([\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z.never().optional(),\n                      }),\n                      z.object({\n                        url: z.never().optional(),\n                        _id: z\n                          .string()\n                          .describe(\n                            'Set media by ID of an existing file in Wix Media Manager.'\n                          )\n                          .min(1)\n                          .max(200),\n                      }),\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z\n                          .string()\n                          .describe('Set media using an external media URL.')\n                          .url(),\n                      }),\n                    ]),\n                    z.xor([\n                      z.object({\n                        image: z.never().optional(),\n                        video: z.never().optional(),\n                      }),\n                      z.object({\n                        video: z.never().optional(),\n                        image: z\n                          .string()\n                          .describe(\n                            \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                          ),\n                      }),\n                      z.object({\n                        image: z.never().optional(),\n                        video: z\n                          .string()\n                          .describe(\n                            \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                          ),\n                      }),\n                    ])\n                  )\n                )\n                .describe(\n                  'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n                )\n                .optional(),\n              itemsInfo: z\n                .object({\n                  items: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          altText: z\n                            .string()\n                            .describe('Image alt text.')\n                            .min(1)\n                            .max(1000)\n                            .optional()\n                            .nullable(),\n                          displayName: z\n                            .string()\n                            .describe(\n                              \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                            )\n                            .max(80)\n                            .optional()\n                            .nullable(),\n                          mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                          thumbnail: z\n                            .object({\n                              url: z\n                                .string()\n                                .describe('Thumbnail url.')\n                                .url()\n                                .optional(),\n                              height: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail height.')\n                                .optional(),\n                              width: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail width.')\n                                .optional(),\n                              altText: z\n                                .string()\n                                .describe('Thumbnail alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                          uploadId: z\n                            .string()\n                            .describe(\n                              'ID used to upload media to Wix Media Manager.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                        }),\n                        z.intersection(\n                          z.xor([\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z.never().optional(),\n                            }),\n                            z.object({\n                              url: z.never().optional(),\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Set media by ID of an existing file in Wix Media Manager.'\n                                )\n                                .min(1)\n                                .max(200),\n                            }),\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z\n                                .string()\n                                .describe(\n                                  'Set media using an external media URL.'\n                                )\n                                .url(),\n                            }),\n                          ]),\n                          z.xor([\n                            z.object({\n                              image: z.never().optional(),\n                              video: z.never().optional(),\n                            }),\n                            z.object({\n                              video: z.never().optional(),\n                              image: z\n                                .string()\n                                .describe(\n                                  \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                ),\n                            }),\n                            z.object({\n                              image: z.never().optional(),\n                              video: z\n                                .string()\n                                .describe(\n                                  \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                ),\n                            }),\n                          ])\n                        )\n                      )\n                    )\n                    .max(50)\n                    .optional(),\n                })\n                .describe(\n                  'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n            })\n            .describe('Product media items.')\n            .optional(),\n          seoData: z\n            .object({\n              tags: z\n                .array(\n                  z.object({\n                    type: z\n                      .string()\n                      .describe(\n                        'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                      )\n                      .optional(),\n                    props: z\n                      .record(z.string(), z.any())\n                      .describe(\n                        'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    meta: z\n                      .record(z.string(), z.any())\n                      .describe(\n                        'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    children: z\n                      .string()\n                      .describe(\n                        'SEO tag inner content. For example, `<title> inner content </title>`.'\n                      )\n                      .optional(),\n                    custom: z\n                      .boolean()\n                      .describe(\n                        'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                      )\n                      .optional(),\n                    disabled: z\n                      .boolean()\n                      .describe(\n                        \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                      )\n                      .optional(),\n                  })\n                )\n                .optional(),\n              settings: z\n                .object({\n                  preventAutoRedirect: z\n                    .boolean()\n                    .describe(\n                      'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n                    )\n                    .optional(),\n                  keywords: z\n                    .array(\n                      z.object({\n                        term: z.string().describe('Keyword value.').optional(),\n                        isMain: z\n                          .boolean()\n                          .describe(\n                            'Whether the keyword is the main focus keyword.'\n                          )\n                          .optional(),\n                        origin: z\n                          .string()\n                          .describe(\n                            'The source that added the keyword terms to the SEO settings.'\n                          )\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(5)\n                    .optional(),\n                })\n                .describe('SEO general settings.')\n                .optional(),\n            })\n            .describe('Product SEO data.')\n            .optional(),\n          taxGroupId: z\n            .string()\n            .describe(\n              '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n            )\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          options: z\n            .array(\n              z.intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe(\n                      'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n                    )\n                    .min(1)\n                    .max(36)\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Option name.')\n                    .min(1)\n                    .max(50)\n                    .optional()\n                    .nullable(),\n                  optionRenderType: z\n                    .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                    .optional(),\n                  key: z\n                    .string()\n                    .describe(\n                      'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                    )\n                    .min(1)\n                    .max(50)\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    choicesSettings: z\n                      .object({\n                        choices: z\n                          .array(\n                            z.intersection(\n                              z.object({\n                                choiceId: z\n                                  .string()\n                                  .describe('Choice ID.')\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                linkedMedia: z\n                                  .array(\n                                    z.intersection(\n                                      z.object({\n                                        altText: z\n                                          .string()\n                                          .describe('Image alt text.')\n                                          .min(1)\n                                          .max(1000)\n                                          .optional()\n                                          .nullable(),\n                                        displayName: z\n                                          .string()\n                                          .describe(\n                                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                          )\n                                          .max(80)\n                                          .optional()\n                                          .nullable(),\n                                        mediaType: z\n                                          .enum(['IMAGE', 'VIDEO'])\n                                          .optional(),\n                                        thumbnail: z\n                                          .object({\n                                            url: z\n                                              .string()\n                                              .describe('Thumbnail url.')\n                                              .url()\n                                              .optional(),\n                                            height: z\n                                              .number()\n                                              .int()\n                                              .describe('Thumbnail height.')\n                                              .optional(),\n                                            width: z\n                                              .number()\n                                              .int()\n                                              .describe('Thumbnail width.')\n                                              .optional(),\n                                            altText: z\n                                              .string()\n                                              .describe('Thumbnail alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                          })\n                                          .describe(\n                                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .optional(),\n                                        uploadId: z\n                                          .string()\n                                          .describe(\n                                            'ID used to upload media to Wix Media Manager.'\n                                          )\n                                          .regex(\n                                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                            'Must be a valid GUID'\n                                          )\n                                          .optional(),\n                                      }),\n                                      z.intersection(\n                                        z.xor([\n                                          z.object({\n                                            _id: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            _id: z\n                                              .string()\n                                              .describe(\n                                                'Set media by ID of an existing file in Wix Media Manager.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            _id: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'Set media using an external media URL.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ]),\n                                        z.xor([\n                                          z.object({\n                                            image: z.never().optional(),\n                                            video: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            video: z.never().optional(),\n                                            image: z\n                                              .string()\n                                              .describe(\n                                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                              ),\n                                          }),\n                                          z.object({\n                                            image: z.never().optional(),\n                                            video: z\n                                              .string()\n                                              .describe(\n                                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                              ),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                  )\n                                  .max(15)\n                                  .optional(),\n                                choiceType: z\n                                  .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                  .optional(),\n                                key: z\n                                  .string()\n                                  .describe(\n                                    'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                  )\n                                  .min(1)\n                                  .max(50)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe(\n                                    'Choice name. For text choices, this field also contains the choice value.'\n                                  )\n                                  .min(1)\n                                  .max(50)\n                                  .optional()\n                                  .nullable(),\n                                inStock: z\n                                  .boolean()\n                                  .describe(\n                                    'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                                  )\n                                  .optional(),\n                                visible: z\n                                  .boolean()\n                                  .describe(\n                                    'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                                  )\n                                  .optional(),\n                                displayImage: z\n                                  .string()\n                                  .describe(\n                                    'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                  )\n                                  .optional(),\n                                media: z\n                                  .object({\n                                    items: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({}),\n                                          z.xor([\n                                            z.object({\n                                              mediaId: z.never().optional(),\n                                              url: z.never().optional(),\n                                            }),\n                                            z.object({\n                                              url: z.never().optional(),\n                                              mediaId: z\n                                                .string()\n                                                .describe(\n                                                  'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                )\n                                                .min(1)\n                                                .max(200),\n                                            }),\n                                            z.object({\n                                              mediaId: z.never().optional(),\n                                              url: z\n                                                .string()\n                                                .describe(\n                                                  'External media URL. Can be used only on write.'\n                                                )\n                                                .url(),\n                                            }),\n                                          ])\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                  )\n                                  .optional(),\n                              }),\n                              z.xor([\n                                z.object({ colorCode: z.never().optional() }),\n                                z.object({\n                                  colorCode: z\n                                    .string()\n                                    .describe(\n                                      'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                                    )\n                                    .min(3)\n                                    .max(20),\n                                }),\n                              ])\n                            )\n                          )\n                          .min(1)\n                          .max(100)\n                          .optional(),\n                      })\n                      .describe('Choices settings.'),\n                  }),\n                ])\n              )\n            )\n            .max(6)\n            .optional(),\n          modifiers: z\n            .array(\n              z.intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe(\n                      'ID of a customization with `customizationType: MODIFIER`.'\n                    )\n                    .min(1)\n                    .max(36)\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Modifier title.')\n                    .min(1)\n                    .max(50)\n                    .optional()\n                    .nullable(),\n                  modifierRenderType: z\n                    .enum(['FREE_TEXT', 'TEXT_CHOICES', 'SWATCH_CHOICES'])\n                    .optional(),\n                  mandatory: z\n                    .boolean()\n                    .describe(\n                      'Whether customer input is required for this modifier.'\n                    )\n                    .optional(),\n                  key: z\n                    .string()\n                    .describe(\n                      'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                    )\n                    .min(1)\n                    .max(50)\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    choicesSettings: z.never().optional(),\n                    freeTextSettings: z\n                      .object({\n                        minCharCount: z\n                          .number()\n                          .int()\n                          .describe('Minimum number of characters.')\n                          .optional(),\n                        maxCharCount: z\n                          .number()\n                          .int()\n                          .describe('Maximum number of characters.')\n                          .max(500)\n                          .optional(),\n                        defaultAddedPrice: z\n                          .string()\n                          .describe(\n                            \"Default amount to be added to the product's price.\"\n                          )\n                          .optional()\n                          .nullable(),\n                        title: z\n                          .string()\n                          .describe(\n                            'Title of the text to be input by the customer.'\n                          )\n                          .min(1)\n                          .max(150)\n                          .optional(),\n                        key: z\n                          .string()\n                          .describe(\n                            'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                          )\n                          .min(1)\n                          .max(150)\n                          .optional(),\n                      })\n                      .describe('Free text modifier settings.'),\n                  }),\n                  z.object({\n                    freeTextSettings: z.never().optional(),\n                    choicesSettings: z\n                      .object({\n                        choices: z\n                          .array(\n                            z.intersection(\n                              z.object({\n                                choiceId: z\n                                  .string()\n                                  .describe('Choice ID.')\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                linkedMedia: z\n                                  .array(\n                                    z.intersection(\n                                      z.object({\n                                        altText: z\n                                          .string()\n                                          .describe('Image alt text.')\n                                          .min(1)\n                                          .max(1000)\n                                          .optional()\n                                          .nullable(),\n                                        displayName: z\n                                          .string()\n                                          .describe(\n                                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                          )\n                                          .max(80)\n                                          .optional()\n                                          .nullable(),\n                                        mediaType: z\n                                          .enum(['IMAGE', 'VIDEO'])\n                                          .optional(),\n                                        thumbnail: z\n                                          .object({\n                                            url: z\n                                              .string()\n                                              .describe('Thumbnail url.')\n                                              .url()\n                                              .optional(),\n                                            height: z\n                                              .number()\n                                              .int()\n                                              .describe('Thumbnail height.')\n                                              .optional(),\n                                            width: z\n                                              .number()\n                                              .int()\n                                              .describe('Thumbnail width.')\n                                              .optional(),\n                                            altText: z\n                                              .string()\n                                              .describe('Thumbnail alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                          })\n                                          .describe(\n                                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .optional(),\n                                        uploadId: z\n                                          .string()\n                                          .describe(\n                                            'ID used to upload media to Wix Media Manager.'\n                                          )\n                                          .regex(\n                                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                            'Must be a valid GUID'\n                                          )\n                                          .optional(),\n                                      }),\n                                      z.intersection(\n                                        z.xor([\n                                          z.object({\n                                            _id: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            _id: z\n                                              .string()\n                                              .describe(\n                                                'Set media by ID of an existing file in Wix Media Manager.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            _id: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'Set media using an external media URL.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ]),\n                                        z.xor([\n                                          z.object({\n                                            image: z.never().optional(),\n                                            video: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            video: z.never().optional(),\n                                            image: z\n                                              .string()\n                                              .describe(\n                                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                              ),\n                                          }),\n                                          z.object({\n                                            image: z.never().optional(),\n                                            video: z\n                                              .string()\n                                              .describe(\n                                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                              ),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                  )\n                                  .max(15)\n                                  .optional(),\n                                choiceType: z\n                                  .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                  .optional(),\n                                key: z\n                                  .string()\n                                  .describe(\n                                    'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                  )\n                                  .min(1)\n                                  .max(50)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe('Choice name.')\n                                  .min(1)\n                                  .max(50)\n                                  .optional()\n                                  .nullable(),\n                                addedPrice: z\n                                  .string()\n                                  .describe('Added price.')\n                                  .optional()\n                                  .nullable(),\n                                displayImage: z\n                                  .string()\n                                  .describe(\n                                    'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                  )\n                                  .optional(),\n                                media: z\n                                  .object({\n                                    items: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({}),\n                                          z.xor([\n                                            z.object({\n                                              mediaId: z.never().optional(),\n                                              url: z.never().optional(),\n                                            }),\n                                            z.object({\n                                              url: z.never().optional(),\n                                              mediaId: z\n                                                .string()\n                                                .describe(\n                                                  'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                )\n                                                .min(1)\n                                                .max(200),\n                                            }),\n                                            z.object({\n                                              mediaId: z.never().optional(),\n                                              url: z\n                                                .string()\n                                                .describe(\n                                                  'External media URL. Can be used only on write.'\n                                                )\n                                                .url(),\n                                            }),\n                                          ])\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                  )\n                                  .optional(),\n                              }),\n                              z.xor([\n                                z.object({ colorCode: z.never().optional() }),\n                                z.object({\n                                  colorCode: z\n                                    .string()\n                                    .describe(\n                                      'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                                    )\n                                    .min(3)\n                                    .max(20),\n                                }),\n                              ])\n                            )\n                          )\n                          .min(1)\n                          .max(100)\n                          .optional(),\n                      })\n                      .describe('Choice settings.'),\n                  }),\n                ])\n              )\n            )\n            .max(10)\n            .optional(),\n          brand: z\n            .object({\n              _id: z\n                .string()\n                .describe('Brand ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Brand name.')\n                .max(50)\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              \"Product brand.\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n            )\n            .optional(),\n          infoSections: z\n            .array(\n              z.object({\n                _id: z\n                  .string()\n                  .describe('Info section ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                uniqueName: z\n                  .string()\n                  .describe(\n                    'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(100)\n                  .optional()\n                  .nullable(),\n                title: z\n                  .string()\n                  .describe(\n                    'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                description: z\n                  .any()\n                  .describe(\n                    'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                  )\n                  .optional(),\n                plainDescription: z\n                  .string()\n                  .describe(\n                    'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(16000)\n                  .optional()\n                  .nullable(),\n              })\n            )\n            .max(10)\n            .optional(),\n          ribbon: z\n            .object({\n              _id: z\n                .string()\n                .describe('Ribbon ID.')\n                .min(1)\n                .max(36)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Ribbon name.')\n                .max(30)\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              \"Primary product ribbon displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n            )\n            .optional(),\n          additionalRibbons: z\n            .array(\n              z.object({\n                _id: z\n                  .string()\n                  .describe('Ribbon ID.')\n                  .min(1)\n                  .max(36)\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Ribbon name.')\n                  .max(30)\n                  .optional()\n                  .nullable(),\n              })\n            )\n            .max(4)\n            .optional(),\n          mainCategoryId: z\n            .string()\n            .describe(\n              'The ID of the product\\'s primary direct category, which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n            )\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          productType: z.enum(['PHYSICAL', 'DIGITAL']),\n          handle: z\n            .string()\n            .describe(\n              \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n            )\n            .min(1)\n            .max(100)\n            .optional()\n            .nullable(),\n          variantsInfo: z\n            .object({\n              variants: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe('Variant ID.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional()\n                        .nullable(),\n                      visible: z\n                        .boolean()\n                        .describe(\n                          'Whether the variant is visible to site visitors.\\n\\nDefault: `true`'\n                        )\n                        .optional()\n                        .nullable(),\n                      sku: z\n                        .string()\n                        .describe('Variant SKU (stock keeping unit).')\n                        .min(1)\n                        .max(40)\n                        .optional()\n                        .nullable(),\n                      barcode: z\n                        .string()\n                        .describe('Variant barcode.')\n                        .min(1)\n                        .max(40)\n                        .optional()\n                        .nullable(),\n                      price: z\n                        .object({\n                          actualPrice: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              \"Variant's current selling price. Must be greater than or equal to 0.\"\n                            ),\n                          compareAtPrice: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                            )\n                            .optional(),\n                          priceAfterDiscount: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                            )\n                            .optional(),\n                        })\n                        .describe('Variant price.'),\n                      revenueDetails: z\n                        .object({\n                          cost: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe('Item cost.')\n                            .optional(),\n                          profit: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                            )\n                            .optional(),\n                          profitMargin: z\n                            .number()\n                            .describe(\n                              'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                            )\n                            .min(0)\n                            .max(1)\n                            .optional(),\n                        })\n                        .describe(\n                          'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                        )\n                        .optional(),\n                      inventoryItem: z\n                        .intersection(\n                          z.object({\n                            _id: z\n                              .string()\n                              .describe(\n                                'Inventory item ID.\\nIf you want to update existing inventory item you must provide id,\\notherwise new inventory item with different id will be created.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional()\n                              .nullable(),\n                            revision: z\n                              .string()\n                              .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                              .describe('Inventory item revision.')\n                              .optional()\n                              .nullable(),\n                            preorderInfo: z\n                              .object({\n                                enabled: z\n                                  .boolean()\n                                  .describe(\n                                    \"Whether preorder is enabled for this inventory item.\\n\\n> **Note:** Preorder can't be enabled for digital products or products with subscriptions.\\n\\nDefault: `false`\"\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                message: z\n                                  .string()\n                                  .describe(\n                                    'Message displayed to customers when the item is out of stock and preorder is enabled.'\n                                  )\n                                  .min(1)\n                                  .max(250)\n                                  .optional()\n                                  .nullable(),\n                                limit: z\n                                  .number()\n                                  .int()\n                                  .describe(\n                                    'Maximum number of items that can be preordered after stock reaches zero.\\n\\nSupported only for inventory items with `trackQuantity = true`.\\n\\nDefault: `100000`'\n                                  )\n                                  .min(0)\n                                  .max(100000)\n                                  .optional()\n                                  .nullable(),\n                                counter: z\n                                  .number()\n                                  .int()\n                                  .describe(\n                                    'Number of times this item has been preordered.\\n\\nSupported only for inventory items with `trackQuantity = true`.'\n                                  )\n                                  .min(0)\n                                  .max(99999)\n                                  .optional()\n                                  .nullable(),\n                                quantity: z\n                                  .number()\n                                  .int()\n                                  .describe(\n                                    'Remaining quantity available for preorder.\\n\\nSupported only for items with `trackQuantity` set to `true`.'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe('Item preorder info.')\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              inStock: z.never().optional(),\n                              quantity: z.never().optional(),\n                            }),\n                            z.object({\n                              quantity: z.never().optional(),\n                              inStock: z\n                                .boolean()\n                                .describe(\n                                  'Tracking method - in stock.\\n\\nWhen set to `true`, the item is available for sale without a quantity limit.'\n                                ),\n                            }),\n                            z.object({\n                              inStock: z.never().optional(),\n                              quantity: z\n                                .number()\n                                .int()\n                                .describe(\n                                  'Tracking method - quantity left in inventory.\\n\\nQuantity can be negative when decrementing inventory for an order that has already been paid.'\n                                )\n                                .min(-99999)\n                                .max(99999),\n                            }),\n                          ])\n                        )\n                        .describe(\n                          'Inventory item of the variant on the default location.'\n                        )\n                        .optional(),\n                      choices: z\n                        .array(\n                          z.object({\n                            optionChoiceIds: z\n                              .object({\n                                optionId: z\n                                  .string()\n                                  .describe('Option ID.')\n                                  .min(1)\n                                  .max(36),\n                                choiceId: z\n                                  .string()\n                                  .describe('Choice ID.')\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  ),\n                              })\n                              .describe('Option and choice IDs.')\n                              .optional(),\n                            optionChoiceNames: z\n                              .object({\n                                optionName: z\n                                  .string()\n                                  .describe('Option name.')\n                                  .min(1)\n                                  .optional(),\n                                choiceName: z\n                                  .string()\n                                  .describe('Choice name.')\n                                  .min(1)\n                                  .optional(),\n                                renderType: z\n                                  .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                  .optional(),\n                              })\n                              .describe('Option and choice names.')\n                              .optional(),\n                          })\n                        )\n                        .min(0)\n                        .max(6)\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({\n                        physicalProperties: z.never().optional(),\n                        digitalProperties: z.never().optional(),\n                      }),\n                      z.object({\n                        digitalProperties: z.never().optional(),\n                        physicalProperties: z\n                          .object({\n                            weight: z\n                              .number()\n                              .describe(\n                                'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                              )\n                              .min(0)\n                              .max(999999999.99)\n                              .optional()\n                              .nullable(),\n                            pricePerUnit: z\n                              .object({\n                                settings: z\n                                  .object({\n                                    quantity: z\n                                      .number()\n                                      .describe(\n                                        'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                      )\n                                      .min(0.01)\n                                      .max(999999999.99)\n                                      .optional(),\n                                    measurementUnit: z\n                                      .enum([\n                                        'UNSPECIFIED',\n                                        'ML',\n                                        'CL',\n                                        'L',\n                                        'CBM',\n                                        'MG',\n                                        'G',\n                                        'KG',\n                                        'MM',\n                                        'CM',\n                                        'M',\n                                        'SQM',\n                                        'OZ',\n                                        'LB',\n                                        'FLOZ',\n                                        'PT',\n                                        'QT',\n                                        'GAL',\n                                        'IN',\n                                        'FT',\n                                        'YD',\n                                        'SQFT',\n                                      ])\n                                      .describe(\n                                        'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                  )\n                                  .optional(),\n                                value: z\n                                  .string()\n                                  .describe(\n                                    \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                  )\n                                  .optional(),\n                                description: z\n                                  .string()\n                                  .describe(\n                                    'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(100)\n                                  .optional()\n                                  .nullable(),\n                                priceAfterDiscount: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                              )\n                              .optional(),\n                            productDimensions: z\n                              .object({\n                                length: z\n                                  .string()\n                                  .describe(\n                                    'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                width: z\n                                  .string()\n                                  .describe(\n                                    'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                height: z\n                                  .string()\n                                  .describe(\n                                    'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                unit: z\n                                  .enum([\n                                    'UNKNOWN_DIMENSIONS_UNIT',\n                                    'MM',\n                                    'CM',\n                                    'M',\n                                    'IN',\n                                    'FT',\n                                    'YD',\n                                  ])\n                                  .describe(\n                                    'Unit of measurement for dimensions (length, width, height).'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Product dimensions (length, width, height of the physical product).'\n                              )\n                              .optional(),\n                            packageDimensions: z\n                              .object({\n                                length: z\n                                  .string()\n                                  .describe(\n                                    'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                width: z\n                                  .string()\n                                  .describe(\n                                    'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                height: z\n                                  .string()\n                                  .describe(\n                                    'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                unit: z\n                                  .enum([\n                                    'UNKNOWN_DIMENSIONS_UNIT',\n                                    'MM',\n                                    'CM',\n                                    'M',\n                                    'IN',\n                                    'FT',\n                                    'YD',\n                                  ])\n                                  .describe(\n                                    'Unit of measurement for dimensions (length, width, height).'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Package dimensions (length, width, height of the shipping package).'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Physical properties. Must be passed when `productType: PHYSICAL`'\n                          ),\n                      }),\n                      z.object({\n                        physicalProperties: z.never().optional(),\n                        digitalProperties: z\n                          .object({\n                            digitalFile: z\n                              .object({\n                                _id: z\n                                  .string()\n                                  .describe('Media ID in media manager.')\n                                  .min(1)\n                                  .max(100)\n                                  .optional(),\n                                fileName: z\n                                  .string()\n                                  .describe('Original file name.')\n                                  .min(1)\n                                  .max(1000)\n                                  .optional(),\n                                fileSize: z\n                                  .string()\n                                  .describe('Original file size.')\n                                  .min(1)\n                                  .max(1000)\n                                  .optional()\n                                  .nullable(),\n                                fileType: z\n                                  .enum([\n                                    'UNSPECIFIED',\n                                    'SECURE_PICTURE',\n                                    'SECURE_VIDEO',\n                                    'SECURE_DOCUMENT',\n                                    'SECURE_MUSIC',\n                                    'SECURE_ARCHIVE',\n                                    'SECURE_RAW',\n                                  ])\n                                  .describe('File type.')\n                                  .optional(),\n                              })\n                              .describe(\n                                'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Digital properties. Must be passed when `productType: DIGITAL`'\n                          ),\n                      }),\n                    ])\n                  )\n                )\n                .min(1)\n                .max(1000)\n                .optional(),\n            })\n            .describe(\n              \"Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nVariants aren't auto-generated. You must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).\"\n            ),\n          subscriptionDetails: z\n            .object({\n              subscriptions: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe('Subscription ID.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional()\n                        .nullable(),\n                      title: z\n                        .string()\n                        .describe('Subscription title.')\n                        .min(1)\n                        .max(20),\n                      description: z\n                        .string()\n                        .describe('Subscription description.')\n                        .max(60)\n                        .optional()\n                        .nullable(),\n                      visible: z\n                        .boolean()\n                        .describe(\n                          'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                        )\n                        .optional()\n                        .nullable(),\n                      frequency: z.enum([\n                        'UNDEFINED',\n                        'DAY',\n                        'WEEK',\n                        'MONTH',\n                        'YEAR',\n                      ]),\n                      interval: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                        )\n                        .min(1)\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                      discount: z\n                        .intersection(\n                          z.object({ type: z.enum(['AMOUNT', 'PERCENT']) }),\n                          z.xor([\n                            z.object({\n                              percentOff: z.never().optional(),\n                              amountOff: z\n                                .string()\n                                .describe(\n                                  'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                                ),\n                            }),\n                            z.object({\n                              amountOff: z.never().optional(),\n                              percentOff: z\n                                .number()\n                                .describe(\n                                  'Percentage subtracted from the variant price when calculating subscription prices.'\n                                )\n                                .min(0.1)\n                                .max(99.9),\n                            }),\n                          ])\n                        )\n                        .describe(\n                          'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                        )\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({\n                        billingCycles: z.never().optional(),\n                        autoRenewal: z\n                          .boolean()\n                          .describe(\n                            'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                          ),\n                      }),\n                      z.object({\n                        autoRenewal: z.never().optional(),\n                        billingCycles: z\n                          .number()\n                          .int()\n                          .describe(\n                            'Number of billing cycles before subscription ends.'\n                          )\n                          .min(2)\n                          .max(999),\n                      }),\n                    ])\n                  )\n                )\n                .min(1)\n                .max(6),\n              allowOneTimePurchases: z\n                .boolean()\n                .describe(\n                  'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n                )\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n            )\n            .optional(),\n          purchaseEligibility: z\n            .object({ userCriteria: z.enum(['MEMBERS_ONLY']).optional() })\n            .describe('Purchase eligibility settings for the product.')\n            .optional(),\n          extendedFields: z\n            .object({\n              namespaces: z\n                .record(z.string(), z.record(z.string(), z.any()))\n                .describe(\n                  'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                )\n                .optional(),\n            })\n            .describe(\n              'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the [app dashboard](https://dev.wix.com/dc3/my-apps/) before they can be accessed with API calls.'\n            )\n            .optional(),\n          tags: z\n            .object({\n              privateTags: z\n                .object({ tagIds: z.array(z.string()).max(100).optional() })\n                .describe(\n                  'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n                )\n                .optional(),\n              publicTags: z\n                .object({ tagIds: z.array(z.string()).max(100).optional() })\n                .describe(\n                  'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n                )\n                .optional(),\n            })\n            .describe('Tags')\n            .optional(),\n        }),\n        z.xor([\n          z.object({ physicalProperties: z.never().optional() }),\n          z.object({\n            physicalProperties: z\n              .object({\n                pricePerUnit: z\n                  .object({\n                    quantity: z\n                      .number()\n                      .describe(\n                        'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                      )\n                      .min(0.01)\n                      .max(999999999.99)\n                      .optional(),\n                    measurementUnit: z\n                      .enum([\n                        'UNSPECIFIED',\n                        'ML',\n                        'CL',\n                        'L',\n                        'CBM',\n                        'MG',\n                        'G',\n                        'KG',\n                        'MM',\n                        'CM',\n                        'M',\n                        'SQM',\n                        'OZ',\n                        'LB',\n                        'FLOZ',\n                        'PT',\n                        'QT',\n                        'GAL',\n                        'IN',\n                        'FT',\n                        'YD',\n                        'SQFT',\n                      ])\n                      .describe(\n                        'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                      )\n                      .optional(),\n                  })\n                  .describe(\n                    'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n                  )\n                  .optional(),\n                fulfillerId: z\n                  .string()\n                  .describe('Fulfiller ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                shippingWeightRange: z\n                  .object({\n                    minValue: z\n                      .number()\n                      .describe(\n                        'Minimum weight across all variants associated with this product.'\n                      )\n                      .min(0)\n                      .max(999999999.99)\n                      .optional(),\n                    maxValue: z\n                      .number()\n                      .describe(\n                        'Maximum weight across all variants associated with this product.'\n                      )\n                      .min(0)\n                      .max(999999999.99)\n                      .optional(),\n                  })\n                  .describe(\n                    'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n                  )\n                  .optional(),\n                pricePerUnitRange: z\n                  .object({\n                    minValue: z\n                      .object({\n                        value: z\n                          .string()\n                          .describe(\n                            \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                          )\n                          .optional(),\n                        description: z\n                          .string()\n                          .describe(\n                            'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                          )\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe('Minimum price per unit across all variants.')\n                      .optional(),\n                    maxValue: z\n                      .object({\n                        value: z\n                          .string()\n                          .describe(\n                            \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                          )\n                          .optional(),\n                        description: z\n                          .string()\n                          .describe(\n                            'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                          )\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe('Maximum price per unit across all variants.')\n                      .optional(),\n                  })\n                  .describe(\n                    'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n                  )\n                  .optional(),\n                weightMeasurementUnitInfo: z\n                  .object({\n                    weightMeasurementUnit: z\n                      .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                      .describe('Weight measurement unit.')\n                      .optional(),\n                  })\n                  .describe(\n                    'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n                  )\n                  .optional(),\n                deliveryProfileId: z\n                  .string()\n                  .describe('Delivery profile ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n              })\n              .describe(\n                'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n              ),\n          }),\n        ])\n      )\n    )\n    .min(1)\n    .max(100),\n  options: z\n    .object({\n      returnEntity: z\n        .boolean()\n        .describe(\n          'Whether to return the full product entities in the response.\\n\\nDefault: `false`'\n        )\n        .optional(),\n      fields: z\n        .array(\n          z.enum([\n            'URL',\n            'CURRENCY',\n            'INFO_SECTION',\n            'MERCHANT_DATA',\n            'PLAIN_DESCRIPTION',\n            'INFO_SECTION_PLAIN_DESCRIPTION',\n            'SUBSCRIPTION_PRICES_INFO',\n            'BREADCRUMBS_INFO',\n            'WEIGHT_MEASUREMENT_UNIT_INFO',\n            'VARIANT_OPTION_CHOICE_NAMES',\n            'MEDIA_ITEMS_INFO',\n            'DESCRIPTION',\n            'DIRECT_CATEGORIES_INFO',\n            'ALL_CATEGORIES_INFO',\n            'INFO_SECTION_DESCRIPTION',\n            'THUMBNAIL',\n            'PRODUCT_CHOICES_MEDIA_REFERENCES',\n            'PRODUCT_CHOICES_DISPLAY_IMAGE',\n            'MIN_PRICE_VARIANT',\n            'DISCOUNT_INFO',\n          ])\n        )\n        .max(100)\n        .optional(),\n    })\n    .optional(),\n});\nexport const BulkCreateProductsWithInventoryResponse = z.object({\n  productResults: z\n    .object({\n      results: z\n        .array(\n          z.object({\n            itemMetadata: z\n              .object({\n                _id: z\n                  .string()\n                  .describe(\n                    \"Item ID. Should always be available, unless it's impossible (for example, when failing to create an item).\"\n                  )\n                  .min(1)\n                  .max(36)\n                  .optional()\n                  .nullable(),\n                originalIndex: z\n                  .number()\n                  .int()\n                  .describe(\n                    'Index of the item within the request array. Allows for correlation between request and response items.'\n                  )\n                  .optional(),\n                success: z\n                  .boolean()\n                  .describe(\n                    'Whether the requested action was successful for this item. When `false`, the `error` field is populated.'\n                  )\n                  .optional(),\n                error: z\n                  .object({\n                    code: z.string().describe('Error code.').optional(),\n                    description: z\n                      .string()\n                      .describe('Description of the error.')\n                      .optional(),\n                    data: z\n                      .record(z.string(), z.any())\n                      .describe('Data related to the error.')\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe('Details about the error in case of failure.')\n                  .optional(),\n              })\n              .describe(\n                'Information about successful action or error for failure.'\n              )\n              .optional(),\n            item: z\n              .intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Product ID.')\n                    .min(1)\n                    .max(36)\n                    .optional()\n                    .nullable(),\n                  revision: z\n                    .string()\n                    .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                    .describe(\n                      'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product.'\n                    )\n                    .optional()\n                    .nullable(),\n                  _createdDate: z\n                    .date()\n                    .describe('Date and time the product was created.')\n                    .optional()\n                    .nullable(),\n                  _updatedDate: z\n                    .date()\n                    .describe('Date and time the product was updated.')\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Product name. Translatable.')\n                    .min(1)\n                    .max(80)\n                    .optional()\n                    .nullable(),\n                  slug: z\n                    .string()\n                    .describe(\n                      'Product slug. A URL-friendly identifier used in the product page address.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n                    )\n                    .min(1)\n                    .max(300)\n                    .optional()\n                    .nullable(),\n                  url: z\n                    .string()\n                    .describe(\n                      'URL to the site\\'s product page.\\n\\n> **Note:** Returned only when you pass `\"URL\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                  description: z\n                    .any()\n                    .describe(\n                      'Product description using rich content.\\n> **Note:** Returned only when you pass `\"DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                    )\n                    .optional(),\n                  plainDescription: z\n                    .string()\n                    .describe(\n                      'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(16000)\n                    .optional()\n                    .nullable(),\n                  visible: z\n                    .boolean()\n                    .describe(\n                      \"Whether the product is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the default variant's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                    )\n                    .optional()\n                    .nullable(),\n                  visibleInPos: z\n                    .boolean()\n                    .describe(\n                      'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  media: z\n                    .object({\n                      main: z\n                        .intersection(\n                          z.object({\n                            altText: z\n                              .string()\n                              .describe('Image alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                            displayName: z\n                              .string()\n                              .describe(\n                                \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                              )\n                              .max(80)\n                              .optional()\n                              .nullable(),\n                            mediaType: z\n                              .enum(['IMAGE', 'VIDEO'])\n                              .describe('Media type.')\n                              .optional(),\n                            thumbnail: z\n                              .object({\n                                url: z\n                                  .string()\n                                  .describe('Thumbnail url.')\n                                  .url()\n                                  .optional(),\n                                height: z\n                                  .number()\n                                  .int()\n                                  .describe('Thumbnail height.')\n                                  .optional(),\n                                width: z\n                                  .number()\n                                  .int()\n                                  .describe('Thumbnail width.')\n                                  .optional(),\n                                altText: z\n                                  .string()\n                                  .describe('Thumbnail alt text.')\n                                  .min(1)\n                                  .max(1000)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                              )\n                              .optional(),\n                            uploadId: z\n                              .string()\n                              .describe(\n                                'ID used to upload media to Wix Media Manager.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          }),\n                          z.intersection(\n                            z.xor([\n                              z.object({\n                                _id: z.never().optional(),\n                                url: z.never().optional(),\n                              }),\n                              z.object({\n                                url: z.never().optional(),\n                                _id: z\n                                  .string()\n                                  .describe(\n                                    'Set media by ID of an existing file in Wix Media Manager.'\n                                  )\n                                  .min(1)\n                                  .max(200),\n                              }),\n                              z.object({\n                                _id: z.never().optional(),\n                                url: z\n                                  .string()\n                                  .describe(\n                                    'Set media using an external media URL.'\n                                  )\n                                  .url(),\n                              }),\n                            ]),\n                            z.xor([\n                              z.object({\n                                image: z.never().optional(),\n                                video: z.never().optional(),\n                              }),\n                              z.object({\n                                video: z.never().optional(),\n                                image: z\n                                  .string()\n                                  .describe(\n                                    \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                  ),\n                              }),\n                              z.object({\n                                image: z.never().optional(),\n                                video: z\n                                  .string()\n                                  .describe(\n                                    \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                  ),\n                              }),\n                            ])\n                          )\n                        )\n                        .describe(\n                          'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n                        )\n                        .optional(),\n                      itemsInfo: z\n                        .object({\n                          items: z\n                            .array(\n                              z.intersection(\n                                z.object({\n                                  altText: z\n                                    .string()\n                                    .describe('Image alt text.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                  displayName: z\n                                    .string()\n                                    .describe(\n                                      \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                    )\n                                    .max(80)\n                                    .optional()\n                                    .nullable(),\n                                  mediaType: z\n                                    .enum(['IMAGE', 'VIDEO'])\n                                    .describe('Media type.')\n                                    .optional(),\n                                  thumbnail: z\n                                    .object({\n                                      url: z\n                                        .string()\n                                        .describe('Thumbnail url.')\n                                        .url()\n                                        .optional(),\n                                      height: z\n                                        .number()\n                                        .int()\n                                        .describe('Thumbnail height.')\n                                        .optional(),\n                                      width: z\n                                        .number()\n                                        .int()\n                                        .describe('Thumbnail width.')\n                                        .optional(),\n                                      altText: z\n                                        .string()\n                                        .describe('Thumbnail alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .optional(),\n                                  uploadId: z\n                                    .string()\n                                    .describe(\n                                      'ID used to upload media to Wix Media Manager.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                }),\n                                z.intersection(\n                                  z.xor([\n                                    z.object({\n                                      _id: z.never().optional(),\n                                      url: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      url: z.never().optional(),\n                                      _id: z\n                                        .string()\n                                        .describe(\n                                          'Set media by ID of an existing file in Wix Media Manager.'\n                                        )\n                                        .min(1)\n                                        .max(200),\n                                    }),\n                                    z.object({\n                                      _id: z.never().optional(),\n                                      url: z\n                                        .string()\n                                        .describe(\n                                          'Set media using an external media URL.'\n                                        )\n                                        .url(),\n                                    }),\n                                  ]),\n                                  z.xor([\n                                    z.object({\n                                      image: z.never().optional(),\n                                      video: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      video: z.never().optional(),\n                                      image: z\n                                        .string()\n                                        .describe(\n                                          \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                        ),\n                                    }),\n                                    z.object({\n                                      image: z.never().optional(),\n                                      video: z\n                                        .string()\n                                        .describe(\n                                          \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                        ),\n                                    }),\n                                  ])\n                                )\n                              )\n                            )\n                            .max(50)\n                            .optional(),\n                        })\n                        .describe(\n                          'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n                        )\n                        .optional(),\n                    })\n                    .describe(\n                      'Product media items. For a detailed explanation of product media, see [About Product Media](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/about-product-media).'\n                    )\n                    .optional(),\n                  seoData: z\n                    .object({\n                      tags: z\n                        .array(\n                          z.object({\n                            type: z\n                              .string()\n                              .describe(\n                                'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                              )\n                              .optional(),\n                            props: z\n                              .record(z.string(), z.any())\n                              .describe(\n                                'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                              )\n                              .optional()\n                              .nullable(),\n                            meta: z\n                              .record(z.string(), z.any())\n                              .describe(\n                                'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                              )\n                              .optional()\n                              .nullable(),\n                            children: z\n                              .string()\n                              .describe(\n                                'SEO tag inner content. For example, `<title> inner content </title>`.'\n                              )\n                              .optional(),\n                            custom: z\n                              .boolean()\n                              .describe(\n                                'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                              )\n                              .optional(),\n                            disabled: z\n                              .boolean()\n                              .describe(\n                                \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                              )\n                              .optional(),\n                          })\n                        )\n                        .optional(),\n                      settings: z\n                        .object({\n                          preventAutoRedirect: z\n                            .boolean()\n                            .describe(\n                              'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n                            )\n                            .optional(),\n                          keywords: z\n                            .array(\n                              z.object({\n                                term: z\n                                  .string()\n                                  .describe('Keyword value.')\n                                  .optional(),\n                                isMain: z\n                                  .boolean()\n                                  .describe(\n                                    'Whether the keyword is the main focus keyword.'\n                                  )\n                                  .optional(),\n                                origin: z\n                                  .string()\n                                  .describe(\n                                    'The source that added the keyword terms to the SEO settings.'\n                                  )\n                                  .max(1000)\n                                  .optional()\n                                  .nullable(),\n                              })\n                            )\n                            .max(5)\n                            .optional(),\n                        })\n                        .describe('SEO general settings.')\n                        .optional(),\n                    })\n                    .describe('Product SEO data.')\n                    .optional(),\n                  taxGroupId: z\n                    .string()\n                    .describe(\n                      '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  options: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          _id: z\n                            .string()\n                            .describe(\n                              'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n                            )\n                            .min(1)\n                            .max(36)\n                            .optional()\n                            .nullable(),\n                          name: z\n                            .string()\n                            .describe('Option name.')\n                            .min(1)\n                            .max(50)\n                            .optional()\n                            .nullable(),\n                          optionRenderType: z\n                            .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                            .describe('Option render type.')\n                            .optional(),\n                          key: z\n                            .string()\n                            .describe(\n                              'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                            )\n                            .min(1)\n                            .max(50)\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({ choicesSettings: z.never().optional() }),\n                          z.object({\n                            choicesSettings: z\n                              .object({\n                                choices: z\n                                  .array(\n                                    z.intersection(\n                                      z.object({\n                                        choiceId: z\n                                          .string()\n                                          .describe('Choice ID.')\n                                          .regex(\n                                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                            'Must be a valid GUID'\n                                          )\n                                          .optional()\n                                          .nullable(),\n                                        linkedMedia: z\n                                          .array(\n                                            z.intersection(\n                                              z.object({\n                                                altText: z\n                                                  .string()\n                                                  .describe('Image alt text.')\n                                                  .min(1)\n                                                  .max(1000)\n                                                  .optional()\n                                                  .nullable(),\n                                                displayName: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                                  )\n                                                  .max(80)\n                                                  .optional()\n                                                  .nullable(),\n                                                mediaType: z\n                                                  .enum(['IMAGE', 'VIDEO'])\n                                                  .describe('Media type.')\n                                                  .optional(),\n                                                thumbnail: z\n                                                  .object({\n                                                    url: z\n                                                      .string()\n                                                      .describe(\n                                                        'Thumbnail url.'\n                                                      )\n                                                      .url()\n                                                      .optional(),\n                                                    height: z\n                                                      .number()\n                                                      .int()\n                                                      .describe(\n                                                        'Thumbnail height.'\n                                                      )\n                                                      .optional(),\n                                                    width: z\n                                                      .number()\n                                                      .int()\n                                                      .describe(\n                                                        'Thumbnail width.'\n                                                      )\n                                                      .optional(),\n                                                    altText: z\n                                                      .string()\n                                                      .describe(\n                                                        'Thumbnail alt text.'\n                                                      )\n                                                      .min(1)\n                                                      .max(1000)\n                                                      .optional()\n                                                      .nullable(),\n                                                  })\n                                                  .describe(\n                                                    'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                                  )\n                                                  .optional(),\n                                                uploadId: z\n                                                  .string()\n                                                  .describe(\n                                                    'ID used to upload media to Wix Media Manager.'\n                                                  )\n                                                  .regex(\n                                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                                    'Must be a valid GUID'\n                                                  )\n                                                  .optional(),\n                                              }),\n                                              z.intersection(\n                                                z.xor([\n                                                  z.object({\n                                                    _id: z.never().optional(),\n                                                    url: z.never().optional(),\n                                                  }),\n                                                  z.object({\n                                                    url: z.never().optional(),\n                                                    _id: z\n                                                      .string()\n                                                      .describe(\n                                                        'Set media by ID of an existing file in Wix Media Manager.'\n                                                      )\n                                                      .min(1)\n                                                      .max(200),\n                                                  }),\n                                                  z.object({\n                                                    _id: z.never().optional(),\n                                                    url: z\n                                                      .string()\n                                                      .describe(\n                                                        'Set media using an external media URL.'\n                                                      )\n                                                      .url(),\n                                                  }),\n                                                ]),\n                                                z.xor([\n                                                  z.object({\n                                                    image: z.never().optional(),\n                                                    video: z.never().optional(),\n                                                  }),\n                                                  z.object({\n                                                    video: z.never().optional(),\n                                                    image: z\n                                                      .string()\n                                                      .describe(\n                                                        \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                                      ),\n                                                  }),\n                                                  z.object({\n                                                    image: z.never().optional(),\n                                                    video: z\n                                                      .string()\n                                                      .describe(\n                                                        \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                                      ),\n                                                  }),\n                                                ])\n                                              )\n                                            )\n                                          )\n                                          .max(15)\n                                          .optional(),\n                                        choiceType: z\n                                          .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                          .describe('Choice type.')\n                                          .optional(),\n                                        key: z\n                                          .string()\n                                          .describe(\n                                            'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                          )\n                                          .min(1)\n                                          .max(50)\n                                          .optional(),\n                                        name: z\n                                          .string()\n                                          .describe(\n                                            'Choice name. For text choices, this field also contains the choice value.'\n                                          )\n                                          .min(1)\n                                          .max(50)\n                                          .optional()\n                                          .nullable(),\n                                        inStock: z\n                                          .boolean()\n                                          .describe(\n                                            'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                                          )\n                                          .optional(),\n                                        visible: z\n                                          .boolean()\n                                          .describe(\n                                            'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                                          )\n                                          .optional(),\n                                        displayImage: z\n                                          .string()\n                                          .describe(\n                                            'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                          )\n                                          .optional(),\n                                        media: z\n                                          .object({\n                                            items: z\n                                              .array(\n                                                z.intersection(\n                                                  z.object({}),\n                                                  z.xor([\n                                                    z.object({\n                                                      mediaId: z\n                                                        .never()\n                                                        .optional(),\n                                                      url: z.never().optional(),\n                                                    }),\n                                                    z.object({\n                                                      url: z.never().optional(),\n                                                      mediaId: z\n                                                        .string()\n                                                        .describe(\n                                                          'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                        )\n                                                        .min(1)\n                                                        .max(200),\n                                                    }),\n                                                    z.object({\n                                                      mediaId: z\n                                                        .never()\n                                                        .optional(),\n                                                      url: z\n                                                        .string()\n                                                        .describe(\n                                                          'External media URL. Can be used only on write.'\n                                                        )\n                                                        .url(),\n                                                    }),\n                                                  ])\n                                                )\n                                              )\n                                              .max(15)\n                                              .optional(),\n                                          })\n                                          .describe(\n                                            'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                          )\n                                          .optional(),\n                                      }),\n                                      z.xor([\n                                        z.object({\n                                          colorCode: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          colorCode: z\n                                            .string()\n                                            .describe(\n                                              'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                                            )\n                                            .min(3)\n                                            .max(20),\n                                        }),\n                                      ])\n                                    )\n                                  )\n                                  .min(1)\n                                  .max(100)\n                                  .optional(),\n                              })\n                              .describe('Choices settings.'),\n                          }),\n                        ])\n                      )\n                    )\n                    .max(6)\n                    .optional(),\n                  modifiers: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          _id: z\n                            .string()\n                            .describe(\n                              'ID of a customization with `customizationType: MODIFIER`.'\n                            )\n                            .min(1)\n                            .max(36)\n                            .optional()\n                            .nullable(),\n                          name: z\n                            .string()\n                            .describe('Modifier title.')\n                            .min(1)\n                            .max(50)\n                            .optional()\n                            .nullable(),\n                          modifierRenderType: z\n                            .enum([\n                              'FREE_TEXT',\n                              'TEXT_CHOICES',\n                              'SWATCH_CHOICES',\n                            ])\n                            .describe('Modifier render type.')\n                            .optional(),\n                          mandatory: z\n                            .boolean()\n                            .describe(\n                              'Whether customer input is required for this modifier.'\n                            )\n                            .optional(),\n                          key: z\n                            .string()\n                            .describe(\n                              'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                            )\n                            .min(1)\n                            .max(50)\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({\n                            freeTextSettings: z.never().optional(),\n                            choicesSettings: z.never().optional(),\n                          }),\n                          z.object({\n                            choicesSettings: z.never().optional(),\n                            freeTextSettings: z\n                              .object({\n                                minCharCount: z\n                                  .number()\n                                  .int()\n                                  .describe('Minimum number of characters.')\n                                  .optional(),\n                                maxCharCount: z\n                                  .number()\n                                  .int()\n                                  .describe('Maximum number of characters.')\n                                  .max(500)\n                                  .optional(),\n                                defaultAddedPrice: z\n                                  .string()\n                                  .describe(\n                                    \"Default amount to be added to the product's price.\"\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                title: z\n                                  .string()\n                                  .describe(\n                                    'Title of the text to be input by the customer.'\n                                  )\n                                  .min(1)\n                                  .max(150)\n                                  .optional(),\n                                key: z\n                                  .string()\n                                  .describe(\n                                    'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                  )\n                                  .min(1)\n                                  .max(150)\n                                  .optional(),\n                              })\n                              .describe('Free text modifier settings.'),\n                          }),\n                          z.object({\n                            freeTextSettings: z.never().optional(),\n                            choicesSettings: z\n                              .object({\n                                choices: z\n                                  .array(\n                                    z.intersection(\n                                      z.object({\n                                        choiceId: z\n                                          .string()\n                                          .describe('Choice ID.')\n                                          .regex(\n                                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                            'Must be a valid GUID'\n                                          )\n                                          .optional()\n                                          .nullable(),\n                                        linkedMedia: z\n                                          .array(\n                                            z.intersection(\n                                              z.object({\n                                                altText: z\n                                                  .string()\n                                                  .describe('Image alt text.')\n                                                  .min(1)\n                                                  .max(1000)\n                                                  .optional()\n                                                  .nullable(),\n                                                displayName: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                                  )\n                                                  .max(80)\n                                                  .optional()\n                                                  .nullable(),\n                                                mediaType: z\n                                                  .enum(['IMAGE', 'VIDEO'])\n                                                  .describe('Media type.')\n                                                  .optional(),\n                                                thumbnail: z\n                                                  .object({\n                                                    url: z\n                                                      .string()\n                                                      .describe(\n                                                        'Thumbnail url.'\n                                                      )\n                                                      .url()\n                                                      .optional(),\n                                                    height: z\n                                                      .number()\n                                                      .int()\n                                                      .describe(\n                                                        'Thumbnail height.'\n                                                      )\n                                                      .optional(),\n                                                    width: z\n                                                      .number()\n                                                      .int()\n                                                      .describe(\n                                                        'Thumbnail width.'\n                                                      )\n                                                      .optional(),\n                                                    altText: z\n                                                      .string()\n                                                      .describe(\n                                                        'Thumbnail alt text.'\n                                                      )\n                                                      .min(1)\n                                                      .max(1000)\n                                                      .optional()\n                                                      .nullable(),\n                                                  })\n                                                  .describe(\n                                                    'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                                  )\n                                                  .optional(),\n                                                uploadId: z\n                                                  .string()\n                                                  .describe(\n                                                    'ID used to upload media to Wix Media Manager.'\n                                                  )\n                                                  .regex(\n                                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                                    'Must be a valid GUID'\n                                                  )\n                                                  .optional(),\n                                              }),\n                                              z.intersection(\n                                                z.xor([\n                                                  z.object({\n                                                    _id: z.never().optional(),\n                                                    url: z.never().optional(),\n                                                  }),\n                                                  z.object({\n                                                    url: z.never().optional(),\n                                                    _id: z\n                                                      .string()\n                                                      .describe(\n                                                        'Set media by ID of an existing file in Wix Media Manager.'\n                                                      )\n                                                      .min(1)\n                                                      .max(200),\n                                                  }),\n                                                  z.object({\n                                                    _id: z.never().optional(),\n                                                    url: z\n                                                      .string()\n                                                      .describe(\n                                                        'Set media using an external media URL.'\n                                                      )\n                                                      .url(),\n                                                  }),\n                                                ]),\n                                                z.xor([\n                                                  z.object({\n                                                    image: z.never().optional(),\n                                                    video: z.never().optional(),\n                                                  }),\n                                                  z.object({\n                                                    video: z.never().optional(),\n                                                    image: z\n                                                      .string()\n                                                      .describe(\n                                                        \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                                      ),\n                                                  }),\n                                                  z.object({\n                                                    image: z.never().optional(),\n                                                    video: z\n                                                      .string()\n                                                      .describe(\n                                                        \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                                      ),\n                                                  }),\n                                                ])\n                                              )\n                                            )\n                                          )\n                                          .max(15)\n                                          .optional(),\n                                        choiceType: z\n                                          .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                          .describe('Choice type.')\n                                          .optional(),\n                                        key: z\n                                          .string()\n                                          .describe(\n                                            'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                          )\n                                          .min(1)\n                                          .max(50)\n                                          .optional(),\n                                        name: z\n                                          .string()\n                                          .describe('Choice name.')\n                                          .min(1)\n                                          .max(50)\n                                          .optional()\n                                          .nullable(),\n                                        addedPrice: z\n                                          .string()\n                                          .describe('Added price.')\n                                          .optional()\n                                          .nullable(),\n                                        displayImage: z\n                                          .string()\n                                          .describe(\n                                            'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                          )\n                                          .optional(),\n                                        media: z\n                                          .object({\n                                            items: z\n                                              .array(\n                                                z.intersection(\n                                                  z.object({}),\n                                                  z.xor([\n                                                    z.object({\n                                                      mediaId: z\n                                                        .never()\n                                                        .optional(),\n                                                      url: z.never().optional(),\n                                                    }),\n                                                    z.object({\n                                                      url: z.never().optional(),\n                                                      mediaId: z\n                                                        .string()\n                                                        .describe(\n                                                          'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                        )\n                                                        .min(1)\n                                                        .max(200),\n                                                    }),\n                                                    z.object({\n                                                      mediaId: z\n                                                        .never()\n                                                        .optional(),\n                                                      url: z\n                                                        .string()\n                                                        .describe(\n                                                          'External media URL. Can be used only on write.'\n                                                        )\n                                                        .url(),\n                                                    }),\n                                                  ])\n                                                )\n                                              )\n                                              .max(15)\n                                              .optional(),\n                                          })\n                                          .describe(\n                                            'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                          )\n                                          .optional(),\n                                      }),\n                                      z.xor([\n                                        z.object({\n                                          colorCode: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          colorCode: z\n                                            .string()\n                                            .describe(\n                                              'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                                            )\n                                            .min(3)\n                                            .max(20),\n                                        }),\n                                      ])\n                                    )\n                                  )\n                                  .min(1)\n                                  .max(100)\n                                  .optional(),\n                              })\n                              .describe('Choice settings.'),\n                          }),\n                        ])\n                      )\n                    )\n                    .max(10)\n                    .optional(),\n                  brand: z\n                    .object({\n                      _id: z\n                        .string()\n                        .describe('Brand ID.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional()\n                        .nullable(),\n                      name: z\n                        .string()\n                        .describe('Brand name.')\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      \"Product [brand](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/brands-v3/introduction).\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n                    )\n                    .optional(),\n                  infoSections: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('Info section ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        uniqueName: z\n                          .string()\n                          .describe(\n                            'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                        title: z\n                          .string()\n                          .describe(\n                            'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                          )\n                          .min(1)\n                          .max(50)\n                          .optional()\n                          .nullable(),\n                        description: z\n                          .any()\n                          .describe(\n                            'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                          )\n                          .optional(),\n                        plainDescription: z\n                          .string()\n                          .describe(\n                            'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(16000)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(10)\n                    .optional(),\n                  ribbon: z\n                    .object({\n                      _id: z\n                        .string()\n                        .describe('Ribbon ID.')\n                        .min(1)\n                        .max(36)\n                        .optional()\n                        .nullable(),\n                      name: z\n                        .string()\n                        .describe('Ribbon name.')\n                        .max(30)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      \"Primary [ribbon](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/ribbons-v3/introduction) displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n                    )\n                    .optional(),\n                  directCategoriesInfo: z\n                    .object({\n                      categories: z\n                        .array(\n                          z.object({\n                            _id: z\n                              .string()\n                              .describe('Category ID.')\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                            index: z\n                              .number()\n                              .int()\n                              .describe(\n                                'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                              )\n                              .min(0)\n                              .max(200)\n                              .optional()\n                              .nullable(),\n                          })\n                        )\n                        .max(2000)\n                        .optional(),\n                    })\n                    .describe(\n                      'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product.\\n\\nUpdated automatically when a product is added/removed from a category, when an item is moved within a category, or when a category is deleted.\\n> **Note:** Returned only when you pass `\"DIRECT_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                  allCategoriesInfo: z\n                    .object({\n                      categories: z\n                        .array(\n                          z.object({\n                            _id: z\n                              .string()\n                              .describe('Category ID.')\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                            index: z\n                              .number()\n                              .int()\n                              .describe(\n                                'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                              )\n                              .min(0)\n                              .max(200)\n                              .optional()\n                              .nullable(),\n                          })\n                        )\n                        .max(2000)\n                        .optional(),\n                    })\n                    .describe(\n                      'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product, as well as their parent categories.\\n> **Note:** Returned only when you pass `\"ALL_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                  mainCategoryId: z\n                    .string()\n                    .describe(\n                      'The ID of the product\\'s primary direct [category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction), which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  costRange: z\n                    .object({\n                      minValue: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe('Minimum value.')\n                        .optional(),\n                      maxValue: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe('Maximum value.')\n                        .optional(),\n                    })\n                    .describe(\n                      'Product cost range - minimum and maximum costs of all product variants.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                    )\n                    .optional(),\n                  inventory: z\n                    .object({\n                      availabilityStatus: z\n                        .enum([\n                          'IN_STOCK',\n                          'OUT_OF_STOCK',\n                          'PARTIALLY_OUT_OF_STOCK',\n                        ])\n                        .describe('Current availability status.')\n                        .optional(),\n                      preorderStatus: z\n                        .enum(['ENABLED', 'DISABLED', 'PARTIALLY_ENABLED'])\n                        .describe('Current preorder status.')\n                        .optional(),\n                      preorderAvailability: z\n                        .enum(['ALL_VARIANTS', 'NO_VARIANTS', 'SOME_VARIANTS'])\n                        .describe('Preorder availability status.')\n                        .optional(),\n                    })\n                    .describe(\n                      'Product inventory info.\\n\\n> **Note:** This field reflects the aggregated inventory status from the default location only. Use the [Inventory Items API](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/inventory-items-v3/introduction) to manage inventory for specific locations. Learn more about [inventory management](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-inventory-management).'\n                    )\n                    .optional(),\n                  productType: z\n                    .enum(['PHYSICAL', 'DIGITAL'])\n                    .describe(\n                      'Product type: `PHYSICAL` for tangible goods that require shipping, or `DIGITAL` for downloadable content.\\n\\nWhen passing `productType: PHYSICAL`, you must also pass `physicalProperties`. When passing `productType: DIGITAL`, you can optionally pass `digitalProperties` in each variant.'\n                    )\n                    .optional(),\n                  handle: z\n                    .string()\n                    .describe(\n                      \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n                    )\n                    .min(1)\n                    .max(100)\n                    .optional()\n                    .nullable(),\n                  currency: z\n                    .string()\n                    .describe(\n                      'Currency used for the pricing of this product, in [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes) format.\\n\\nDefaults to the currency defined in the site settings, unless specified in the request\\'s `x-wix-currency` header.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional()\n                    .nullable(),\n                  breadcrumbsInfo: z\n                    .object({\n                      breadcrumbs: z\n                        .array(\n                          z.object({\n                            categoryId: z\n                              .string()\n                              .describe('Category ID.')\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                            categoryName: z\n                              .string()\n                              .describe('Category name.')\n                              .min(1)\n                              .max(80)\n                              .optional(),\n                            categorySlug: z\n                              .string()\n                              .describe('Category slug.')\n                              .min(1)\n                              .max(100)\n                              .optional(),\n                          })\n                        )\n                        .max(5)\n                        .optional(),\n                    })\n                    .describe(\n                      'Breadcrumbs of the `mainCategoryId`. Used to navigate to parent [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction). Useful for building navigation UI and for SEO purposes.\\n> **Note:** Returned only when you pass `\"BREADCRUMBS_INFO\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                  actualPriceRange: z\n                    .object({\n                      minValue: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe('Minimum value.')\n                        .optional(),\n                      maxValue: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe('Maximum value.')\n                        .optional(),\n                    })\n                    .describe(\n                      'Minimum and maximum current selling prices across all product variants.'\n                    )\n                    .optional(),\n                  compareAtPriceRange: z\n                    .object({\n                      minValue: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe('Minimum value.')\n                        .optional(),\n                      maxValue: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe('Maximum value.')\n                        .optional(),\n                    })\n                    .describe(\n                      'Minimum and maximum compare-at prices (original prices before discounts) across all product variants. Used to show savings to customers.'\n                    )\n                    .optional(),\n                  variantsInfo: z\n                    .object({\n                      variants: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              _id: z\n                                .string()\n                                .describe('Variant ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              visible: z\n                                .boolean()\n                                .describe(\n                                  \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                                )\n                                .optional()\n                                .nullable(),\n                              sku: z\n                                .string()\n                                .describe('Variant SKU (stock keeping unit).')\n                                .min(1)\n                                .max(40)\n                                .optional()\n                                .nullable(),\n                              barcode: z\n                                .string()\n                                .describe('Variant barcode.')\n                                .min(1)\n                                .max(40)\n                                .optional()\n                                .nullable(),\n                              choices: z\n                                .array(\n                                  z.object({\n                                    optionChoiceIds: z\n                                      .object({\n                                        optionId: z\n                                          .string()\n                                          .describe('Option ID.')\n                                          .min(1)\n                                          .max(36)\n                                          .optional(),\n                                        choiceId: z\n                                          .string()\n                                          .describe('Choice ID.')\n                                          .regex(\n                                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                            'Must be a valid GUID'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                                      )\n                                      .optional(),\n                                    optionChoiceNames: z\n                                      .object({\n                                        optionName: z\n                                          .string()\n                                          .describe('Option name.')\n                                          .min(1)\n                                          .optional(),\n                                        choiceName: z\n                                          .string()\n                                          .describe('Choice name.')\n                                          .min(1)\n                                          .optional(),\n                                        renderType: z\n                                          .enum([\n                                            'TEXT_CHOICES',\n                                            'SWATCH_CHOICES',\n                                          ])\n                                          .describe(\n                                            'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .optional(),\n                                  })\n                                )\n                                .min(0)\n                                .max(6)\n                                .optional(),\n                              price: z\n                                .object({\n                                  actualPrice: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      \"Variant's current selling price. Must be greater than or equal to 0.\"\n                                    )\n                                    .optional(),\n                                  compareAtPrice: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                                    )\n                                    .optional(),\n                                  priceAfterDiscount: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe('Variant price.')\n                                .optional(),\n                              revenueDetails: z\n                                .object({\n                                  cost: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe('Item cost.')\n                                    .optional(),\n                                  profit: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                                    )\n                                    .optional(),\n                                  profitMargin: z\n                                    .number()\n                                    .describe(\n                                      'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                                    )\n                                    .min(0)\n                                    .max(1)\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                                )\n                                .optional(),\n                              media: z\n                                .intersection(\n                                  z.object({\n                                    altText: z\n                                      .string()\n                                      .describe('Image alt text.')\n                                      .min(1)\n                                      .max(1000)\n                                      .optional()\n                                      .nullable(),\n                                    displayName: z\n                                      .string()\n                                      .describe(\n                                        \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                      )\n                                      .max(80)\n                                      .optional()\n                                      .nullable(),\n                                    mediaType: z\n                                      .enum(['IMAGE', 'VIDEO'])\n                                      .describe('Media type.')\n                                      .optional(),\n                                    thumbnail: z\n                                      .object({\n                                        url: z\n                                          .string()\n                                          .describe('Thumbnail url.')\n                                          .url()\n                                          .optional(),\n                                        height: z\n                                          .number()\n                                          .int()\n                                          .describe('Thumbnail height.')\n                                          .optional(),\n                                        width: z\n                                          .number()\n                                          .int()\n                                          .describe('Thumbnail width.')\n                                          .optional(),\n                                        altText: z\n                                          .string()\n                                          .describe('Thumbnail alt text.')\n                                          .min(1)\n                                          .max(1000)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .optional(),\n                                    uploadId: z\n                                      .string()\n                                      .describe(\n                                        'ID used to upload media to Wix Media Manager.'\n                                      )\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional(),\n                                  }),\n                                  z.intersection(\n                                    z.xor([\n                                      z.object({\n                                        _id: z.never().optional(),\n                                        url: z.never().optional(),\n                                      }),\n                                      z.object({\n                                        url: z.never().optional(),\n                                        _id: z\n                                          .string()\n                                          .describe(\n                                            'Set media by ID of an existing file in Wix Media Manager.'\n                                          )\n                                          .min(1)\n                                          .max(200),\n                                      }),\n                                      z.object({\n                                        _id: z.never().optional(),\n                                        url: z\n                                          .string()\n                                          .describe(\n                                            'Set media using an external media URL.'\n                                          )\n                                          .url(),\n                                      }),\n                                    ]),\n                                    z.xor([\n                                      z.object({\n                                        image: z.never().optional(),\n                                        video: z.never().optional(),\n                                      }),\n                                      z.object({\n                                        video: z.never().optional(),\n                                        image: z\n                                          .string()\n                                          .describe(\n                                            \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                          ),\n                                      }),\n                                      z.object({\n                                        image: z.never().optional(),\n                                        video: z\n                                          .string()\n                                          .describe(\n                                            \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                          ),\n                                      }),\n                                    ])\n                                  )\n                                )\n                                .describe('Variant media.')\n                                .optional(),\n                              subscriptionPricesInfo: z\n                                .object({\n                                  subscriptionPrices: z\n                                    .array(\n                                      z.object({\n                                        subscriptionId: z\n                                          .string()\n                                          .describe('Subscription ID.')\n                                          .regex(\n                                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                            'Must be a valid GUID'\n                                          )\n                                          .optional(),\n                                        price: z\n                                          .object({\n                                            amount: z\n                                              .string()\n                                              .describe(\n                                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                              )\n                                              .optional(),\n                                            formattedAmount: z\n                                              .string()\n                                              .describe(\n                                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .max(20)\n                                              .optional()\n                                              .nullable(),\n                                          })\n                                          .describe(\n                                            'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                          )\n                                          .optional(),\n                                        pricePerUnit: z\n                                          .object({\n                                            value: z\n                                              .string()\n                                              .describe(\n                                                'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                              )\n                                              .optional(),\n                                            description: z\n                                              .string()\n                                              .describe(\n                                                'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .max(20)\n                                              .optional()\n                                              .nullable(),\n                                            priceAfterDiscount: z\n                                              .object({\n                                                amount: z\n                                                  .string()\n                                                  .describe(\n                                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                                  )\n                                                  .optional(),\n                                                formattedAmount: z\n                                                  .string()\n                                                  .describe(\n                                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                                  )\n                                                  .max(20)\n                                                  .optional()\n                                                  .nullable(),\n                                              })\n                                              .describe(\n                                                'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                              )\n                                              .optional(),\n                                          })\n                                          .describe('Price per unit info.')\n                                          .optional(),\n                                        priceAfterDiscount: z\n                                          .object({\n                                            amount: z\n                                              .string()\n                                              .describe(\n                                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                              )\n                                              .optional(),\n                                            formattedAmount: z\n                                              .string()\n                                              .describe(\n                                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .max(20)\n                                              .optional()\n                                              .nullable(),\n                                          })\n                                          .describe(\n                                            'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                          )\n                                          .optional(),\n                                      })\n                                    )\n                                    .max(6)\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                                )\n                                .optional(),\n                              inventoryStatus: z\n                                .object({\n                                  inStock: z\n                                    .boolean()\n                                    .describe(\n                                      'Whether the variant is in stock.'\n                                    )\n                                    .optional(),\n                                  preorderEnabled: z\n                                    .boolean()\n                                    .describe(\n                                      'Whether preorder is enabled for this variant.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe('Variant inventory status.')\n                                .optional(),\n                            }),\n                            z.xor([\n                              z.object({\n                                physicalProperties: z.never().optional(),\n                                digitalProperties: z.never().optional(),\n                              }),\n                              z.object({\n                                digitalProperties: z.never().optional(),\n                                physicalProperties: z\n                                  .object({\n                                    weight: z\n                                      .number()\n                                      .describe(\n                                        'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                                      )\n                                      .min(0)\n                                      .max(999999999.99)\n                                      .optional()\n                                      .nullable(),\n                                    pricePerUnit: z\n                                      .object({\n                                        settings: z\n                                          .object({\n                                            quantity: z\n                                              .number()\n                                              .describe(\n                                                'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                              )\n                                              .min(0.01)\n                                              .max(999999999.99)\n                                              .optional(),\n                                            measurementUnit: z\n                                              .enum([\n                                                'UNSPECIFIED',\n                                                'ML',\n                                                'CL',\n                                                'L',\n                                                'CBM',\n                                                'MG',\n                                                'G',\n                                                'KG',\n                                                'MM',\n                                                'CM',\n                                                'M',\n                                                'SQM',\n                                                'OZ',\n                                                'LB',\n                                                'FLOZ',\n                                                'PT',\n                                                'QT',\n                                                'GAL',\n                                                'IN',\n                                                'FT',\n                                                'YD',\n                                                'SQFT',\n                                              ])\n                                              .describe(\n                                                'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                              )\n                                              .optional(),\n                                          })\n                                          .describe(\n                                            'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                          )\n                                          .optional(),\n                                        value: z\n                                          .string()\n                                          .describe(\n                                            \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                          )\n                                          .optional(),\n                                        description: z\n                                          .string()\n                                          .describe(\n                                            'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(100)\n                                          .optional()\n                                          .nullable(),\n                                        priceAfterDiscount: z\n                                          .object({\n                                            amount: z\n                                              .string()\n                                              .describe(\n                                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                              )\n                                              .optional(),\n                                            formattedAmount: z\n                                              .string()\n                                              .describe(\n                                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .max(20)\n                                              .optional()\n                                              .nullable(),\n                                          })\n                                          .describe(\n                                            'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                                      )\n                                      .optional(),\n                                    productDimensions: z\n                                      .object({\n                                        length: z\n                                          .string()\n                                          .describe(\n                                            'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                          )\n                                          .optional()\n                                          .nullable(),\n                                        width: z\n                                          .string()\n                                          .describe(\n                                            'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                          )\n                                          .optional()\n                                          .nullable(),\n                                        height: z\n                                          .string()\n                                          .describe(\n                                            'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                          )\n                                          .optional()\n                                          .nullable(),\n                                        unit: z\n                                          .enum([\n                                            'UNKNOWN_DIMENSIONS_UNIT',\n                                            'MM',\n                                            'CM',\n                                            'M',\n                                            'IN',\n                                            'FT',\n                                            'YD',\n                                          ])\n                                          .describe(\n                                            'Unit of measurement for dimensions (length, width, height).'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Product dimensions (length, width, height of the physical product).'\n                                      )\n                                      .optional(),\n                                    packageDimensions: z\n                                      .object({\n                                        length: z\n                                          .string()\n                                          .describe(\n                                            'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                          )\n                                          .optional()\n                                          .nullable(),\n                                        width: z\n                                          .string()\n                                          .describe(\n                                            'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                          )\n                                          .optional()\n                                          .nullable(),\n                                        height: z\n                                          .string()\n                                          .describe(\n                                            'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                          )\n                                          .optional()\n                                          .nullable(),\n                                        unit: z\n                                          .enum([\n                                            'UNKNOWN_DIMENSIONS_UNIT',\n                                            'MM',\n                                            'CM',\n                                            'M',\n                                            'IN',\n                                            'FT',\n                                            'YD',\n                                          ])\n                                          .describe(\n                                            'Unit of measurement for dimensions (length, width, height).'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Package dimensions (length, width, height of the shipping package).'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Physical properties. Must be passed when `productType: PHYSICAL`'\n                                  ),\n                              }),\n                              z.object({\n                                physicalProperties: z.never().optional(),\n                                digitalProperties: z\n                                  .object({\n                                    digitalFile: z\n                                      .object({\n                                        _id: z\n                                          .string()\n                                          .describe(\n                                            'Media ID in media manager.'\n                                          )\n                                          .min(1)\n                                          .max(100)\n                                          .optional(),\n                                        fileName: z\n                                          .string()\n                                          .describe('Original file name.')\n                                          .min(1)\n                                          .max(1000)\n                                          .optional(),\n                                        fileSize: z\n                                          .string()\n                                          .describe('Original file size.')\n                                          .min(1)\n                                          .max(1000)\n                                          .optional()\n                                          .nullable(),\n                                        fileType: z\n                                          .enum([\n                                            'UNSPECIFIED',\n                                            'SECURE_PICTURE',\n                                            'SECURE_VIDEO',\n                                            'SECURE_DOCUMENT',\n                                            'SECURE_MUSIC',\n                                            'SECURE_ARCHIVE',\n                                            'SECURE_RAW',\n                                          ])\n                                          .describe('File type.')\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Digital properties. Must be passed when `productType: DIGITAL`'\n                                  ),\n                              }),\n                            ])\n                          )\n                        )\n                        .min(1)\n                        .max(1000)\n                        .optional(),\n                    })\n                    .describe(\n                      'Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nYou must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).'\n                    )\n                    .optional(),\n                  purchaseEligibility: z\n                    .object({\n                      userCriteria: z.enum(['MEMBERS_ONLY']).optional(),\n                    })\n                    .describe('Purchase eligibility settings for the product.')\n                    .optional(),\n                  additionalRibbons: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('Ribbon ID.')\n                          .min(1)\n                          .max(36)\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Ribbon name.')\n                          .max(30)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(4)\n                    .optional(),\n                  extendedFields: z\n                    .object({\n                      namespaces: z\n                        .record(z.string(), z.record(z.string(), z.any()))\n                        .describe(\n                          'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                        )\n                        .optional(),\n                    })\n                    .describe(\n                      'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n                    )\n                    .optional(),\n                  tags: z\n                    .object({\n                      privateTags: z\n                        .object({\n                          tagIds: z.array(z.string()).max(100).optional(),\n                        })\n                        .describe(\n                          'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n                        )\n                        .optional(),\n                      publicTags: z\n                        .object({\n                          tagIds: z.array(z.string()).max(100).optional(),\n                        })\n                        .describe(\n                          'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n                        )\n                        .optional(),\n                    })\n                    .describe('Tags')\n                    .optional(),\n                  subscriptionDetails: z\n                    .object({\n                      subscriptions: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              _id: z\n                                .string()\n                                .describe('Subscription ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              title: z\n                                .string()\n                                .describe('Subscription title.')\n                                .min(1)\n                                .max(20)\n                                .optional(),\n                              description: z\n                                .string()\n                                .describe('Subscription description.')\n                                .max(60)\n                                .optional()\n                                .nullable(),\n                              visible: z\n                                .boolean()\n                                .describe(\n                                  'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                                )\n                                .optional()\n                                .nullable(),\n                              frequency: z\n                                .enum([\n                                  'UNDEFINED',\n                                  'DAY',\n                                  'WEEK',\n                                  'MONTH',\n                                  'YEAR',\n                                ])\n                                .describe(\n                                  'Frequency of recurring payment.\\nFor example, if `frequency: MONTH` and `billingCycles: 6`; payment will be made monthly for 6 months.'\n                                )\n                                .optional(),\n                              interval: z\n                                .number()\n                                .int()\n                                .describe(\n                                  'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional()\n                                .nullable(),\n                              discount: z\n                                .intersection(\n                                  z.object({\n                                    type: z\n                                      .enum(['AMOUNT', 'PERCENT'])\n                                      .describe('Discount type.')\n                                      .optional(),\n                                  }),\n                                  z.xor([\n                                    z.object({\n                                      amountOff: z.never().optional(),\n                                      percentOff: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      percentOff: z.never().optional(),\n                                      amountOff: z\n                                        .string()\n                                        .describe(\n                                          'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                                        ),\n                                    }),\n                                    z.object({\n                                      amountOff: z.never().optional(),\n                                      percentOff: z\n                                        .number()\n                                        .describe(\n                                          'Percentage subtracted from the variant price when calculating subscription prices.'\n                                        )\n                                        .min(0.1)\n                                        .max(99.9),\n                                    }),\n                                  ])\n                                )\n                                .describe(\n                                  'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                                )\n                                .optional(),\n                            }),\n                            z.xor([\n                              z.object({\n                                autoRenewal: z.never().optional(),\n                                billingCycles: z.never().optional(),\n                              }),\n                              z.object({\n                                billingCycles: z.never().optional(),\n                                autoRenewal: z\n                                  .boolean()\n                                  .describe(\n                                    'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                                  ),\n                              }),\n                              z.object({\n                                autoRenewal: z.never().optional(),\n                                billingCycles: z\n                                  .number()\n                                  .int()\n                                  .describe(\n                                    'Number of billing cycles before subscription ends.'\n                                  )\n                                  .min(2)\n                                  .max(999),\n                              }),\n                            ])\n                          )\n                        )\n                        .min(1)\n                        .max(6)\n                        .optional(),\n                      allowOneTimePurchases: z\n                        .boolean()\n                        .describe(\n                          'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n                        )\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n                    )\n                    .optional(),\n                  variantSummary: z\n                    .object({\n                      variantCount: z\n                        .number()\n                        .int()\n                        .describe(\n                          'The total number of variants for the product.'\n                        )\n                        .optional(),\n                      minPriceVariant: z\n                        .intersection(\n                          z.object({\n                            _id: z\n                              .string()\n                              .describe('Variant ID.')\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional()\n                              .nullable(),\n                            visible: z\n                              .boolean()\n                              .describe(\n                                \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                              )\n                              .optional()\n                              .nullable(),\n                            sku: z\n                              .string()\n                              .describe('Variant SKU (stock keeping unit).')\n                              .min(1)\n                              .max(40)\n                              .optional()\n                              .nullable(),\n                            barcode: z\n                              .string()\n                              .describe('Variant barcode.')\n                              .min(1)\n                              .max(40)\n                              .optional()\n                              .nullable(),\n                            choices: z\n                              .array(\n                                z.object({\n                                  optionChoiceIds: z\n                                    .object({\n                                      optionId: z\n                                        .string()\n                                        .describe('Option ID.')\n                                        .min(1)\n                                        .max(36)\n                                        .optional(),\n                                      choiceId: z\n                                        .string()\n                                        .describe('Choice ID.')\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    })\n                                    .describe(\n                                      \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                                    )\n                                    .optional(),\n                                  optionChoiceNames: z\n                                    .object({\n                                      optionName: z\n                                        .string()\n                                        .describe('Option name.')\n                                        .min(1)\n                                        .optional(),\n                                      choiceName: z\n                                        .string()\n                                        .describe('Choice name.')\n                                        .min(1)\n                                        .optional(),\n                                      renderType: z\n                                        .enum([\n                                          'TEXT_CHOICES',\n                                          'SWATCH_CHOICES',\n                                        ])\n                                        .describe(\n                                          'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                                        )\n                                        .optional(),\n                                    })\n                                    .describe(\n                                      'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .optional(),\n                                })\n                              )\n                              .min(0)\n                              .max(6)\n                              .optional(),\n                            price: z\n                              .object({\n                                actualPrice: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    \"Variant's current selling price. Must be greater than or equal to 0.\"\n                                  )\n                                  .optional(),\n                                compareAtPrice: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                                  )\n                                  .optional(),\n                                priceAfterDiscount: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe('Variant price.')\n                              .optional(),\n                            revenueDetails: z\n                              .object({\n                                cost: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe('Item cost.')\n                                  .optional(),\n                                profit: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                                  )\n                                  .optional(),\n                                profitMargin: z\n                                  .number()\n                                  .describe(\n                                    'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                                  )\n                                  .min(0)\n                                  .max(1)\n                                  .optional(),\n                              })\n                              .describe(\n                                'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                              )\n                              .optional(),\n                            media: z\n                              .intersection(\n                                z.object({\n                                  altText: z\n                                    .string()\n                                    .describe('Image alt text.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                  displayName: z\n                                    .string()\n                                    .describe(\n                                      \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                    )\n                                    .max(80)\n                                    .optional()\n                                    .nullable(),\n                                  mediaType: z\n                                    .enum(['IMAGE', 'VIDEO'])\n                                    .describe('Media type.')\n                                    .optional(),\n                                  thumbnail: z\n                                    .object({\n                                      url: z\n                                        .string()\n                                        .describe('Thumbnail url.')\n                                        .url()\n                                        .optional(),\n                                      height: z\n                                        .number()\n                                        .int()\n                                        .describe('Thumbnail height.')\n                                        .optional(),\n                                      width: z\n                                        .number()\n                                        .int()\n                                        .describe('Thumbnail width.')\n                                        .optional(),\n                                      altText: z\n                                        .string()\n                                        .describe('Thumbnail alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .optional(),\n                                  uploadId: z\n                                    .string()\n                                    .describe(\n                                      'ID used to upload media to Wix Media Manager.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                }),\n                                z.intersection(\n                                  z.xor([\n                                    z.object({\n                                      _id: z.never().optional(),\n                                      url: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      url: z.never().optional(),\n                                      _id: z\n                                        .string()\n                                        .describe(\n                                          'Set media by ID of an existing file in Wix Media Manager.'\n                                        )\n                                        .min(1)\n                                        .max(200),\n                                    }),\n                                    z.object({\n                                      _id: z.never().optional(),\n                                      url: z\n                                        .string()\n                                        .describe(\n                                          'Set media using an external media URL.'\n                                        )\n                                        .url(),\n                                    }),\n                                  ]),\n                                  z.xor([\n                                    z.object({\n                                      image: z.never().optional(),\n                                      video: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      video: z.never().optional(),\n                                      image: z\n                                        .string()\n                                        .describe(\n                                          \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                        ),\n                                    }),\n                                    z.object({\n                                      image: z.never().optional(),\n                                      video: z\n                                        .string()\n                                        .describe(\n                                          \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                        ),\n                                    }),\n                                  ])\n                                )\n                              )\n                              .describe('Variant media.')\n                              .optional(),\n                            subscriptionPricesInfo: z\n                              .object({\n                                subscriptionPrices: z\n                                  .array(\n                                    z.object({\n                                      subscriptionId: z\n                                        .string()\n                                        .describe('Subscription ID.')\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                      price: z\n                                        .object({\n                                          amount: z\n                                            .string()\n                                            .describe(\n                                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                            )\n                                            .optional(),\n                                          formattedAmount: z\n                                            .string()\n                                            .describe(\n                                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                            )\n                                            .max(20)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                        )\n                                        .optional(),\n                                      pricePerUnit: z\n                                        .object({\n                                          value: z\n                                            .string()\n                                            .describe(\n                                              'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                            )\n                                            .optional(),\n                                          description: z\n                                            .string()\n                                            .describe(\n                                              'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                            )\n                                            .max(20)\n                                            .optional()\n                                            .nullable(),\n                                          priceAfterDiscount: z\n                                            .object({\n                                              amount: z\n                                                .string()\n                                                .describe(\n                                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                                )\n                                                .optional(),\n                                              formattedAmount: z\n                                                .string()\n                                                .describe(\n                                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                                )\n                                                .max(20)\n                                                .optional()\n                                                .nullable(),\n                                            })\n                                            .describe(\n                                              'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                            )\n                                            .optional(),\n                                        })\n                                        .describe('Price per unit info.')\n                                        .optional(),\n                                      priceAfterDiscount: z\n                                        .object({\n                                          amount: z\n                                            .string()\n                                            .describe(\n                                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                            )\n                                            .optional(),\n                                          formattedAmount: z\n                                            .string()\n                                            .describe(\n                                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                            )\n                                            .max(20)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                        )\n                                        .optional(),\n                                    })\n                                  )\n                                  .max(6)\n                                  .optional(),\n                              })\n                              .describe(\n                                'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                              )\n                              .optional(),\n                            inventoryStatus: z\n                              .object({\n                                inStock: z\n                                  .boolean()\n                                  .describe('Whether the variant is in stock.')\n                                  .optional(),\n                                preorderEnabled: z\n                                  .boolean()\n                                  .describe(\n                                    'Whether preorder is enabled for this variant.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe('Variant inventory status.')\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              physicalProperties: z.never().optional(),\n                              digitalProperties: z.never().optional(),\n                            }),\n                            z.object({\n                              digitalProperties: z.never().optional(),\n                              physicalProperties: z\n                                .object({\n                                  weight: z\n                                    .number()\n                                    .describe(\n                                      'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                                    )\n                                    .min(0)\n                                    .max(999999999.99)\n                                    .optional()\n                                    .nullable(),\n                                  pricePerUnit: z\n                                    .object({\n                                      settings: z\n                                        .object({\n                                          quantity: z\n                                            .number()\n                                            .describe(\n                                              'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                            )\n                                            .min(0.01)\n                                            .max(999999999.99)\n                                            .optional(),\n                                          measurementUnit: z\n                                            .enum([\n                                              'UNSPECIFIED',\n                                              'ML',\n                                              'CL',\n                                              'L',\n                                              'CBM',\n                                              'MG',\n                                              'G',\n                                              'KG',\n                                              'MM',\n                                              'CM',\n                                              'M',\n                                              'SQM',\n                                              'OZ',\n                                              'LB',\n                                              'FLOZ',\n                                              'PT',\n                                              'QT',\n                                              'GAL',\n                                              'IN',\n                                              'FT',\n                                              'YD',\n                                              'SQFT',\n                                            ])\n                                            .describe(\n                                              'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                            )\n                                            .optional(),\n                                        })\n                                        .describe(\n                                          'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                        )\n                                        .optional(),\n                                      value: z\n                                        .string()\n                                        .describe(\n                                          \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                        )\n                                        .optional(),\n                                      description: z\n                                        .string()\n                                        .describe(\n                                          'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(100)\n                                        .optional()\n                                        .nullable(),\n                                      priceAfterDiscount: z\n                                        .object({\n                                          amount: z\n                                            .string()\n                                            .describe(\n                                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                            )\n                                            .optional(),\n                                          formattedAmount: z\n                                            .string()\n                                            .describe(\n                                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                            )\n                                            .max(20)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                        )\n                                        .optional(),\n                                    })\n                                    .describe(\n                                      \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                                    )\n                                    .optional(),\n                                  productDimensions: z\n                                    .object({\n                                      length: z\n                                        .string()\n                                        .describe(\n                                          'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                        )\n                                        .optional()\n                                        .nullable(),\n                                      width: z\n                                        .string()\n                                        .describe(\n                                          'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                        )\n                                        .optional()\n                                        .nullable(),\n                                      height: z\n                                        .string()\n                                        .describe(\n                                          'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                        )\n                                        .optional()\n                                        .nullable(),\n                                      unit: z\n                                        .enum([\n                                          'UNKNOWN_DIMENSIONS_UNIT',\n                                          'MM',\n                                          'CM',\n                                          'M',\n                                          'IN',\n                                          'FT',\n                                          'YD',\n                                        ])\n                                        .describe(\n                                          'Unit of measurement for dimensions (length, width, height).'\n                                        )\n                                        .optional(),\n                                    })\n                                    .describe(\n                                      'Product dimensions (length, width, height of the physical product).'\n                                    )\n                                    .optional(),\n                                  packageDimensions: z\n                                    .object({\n                                      length: z\n                                        .string()\n                                        .describe(\n                                          'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                        )\n                                        .optional()\n                                        .nullable(),\n                                      width: z\n                                        .string()\n                                        .describe(\n                                          'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                        )\n                                        .optional()\n                                        .nullable(),\n                                      height: z\n                                        .string()\n                                        .describe(\n                                          'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                        )\n                                        .optional()\n                                        .nullable(),\n                                      unit: z\n                                        .enum([\n                                          'UNKNOWN_DIMENSIONS_UNIT',\n                                          'MM',\n                                          'CM',\n                                          'M',\n                                          'IN',\n                                          'FT',\n                                          'YD',\n                                        ])\n                                        .describe(\n                                          'Unit of measurement for dimensions (length, width, height).'\n                                        )\n                                        .optional(),\n                                    })\n                                    .describe(\n                                      'Package dimensions (length, width, height of the shipping package).'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Physical properties. Must be passed when `productType: PHYSICAL`'\n                                ),\n                            }),\n                            z.object({\n                              physicalProperties: z.never().optional(),\n                              digitalProperties: z\n                                .object({\n                                  digitalFile: z\n                                    .object({\n                                      _id: z\n                                        .string()\n                                        .describe('Media ID in media manager.')\n                                        .min(1)\n                                        .max(100)\n                                        .optional(),\n                                      fileName: z\n                                        .string()\n                                        .describe('Original file name.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional(),\n                                      fileSize: z\n                                        .string()\n                                        .describe('Original file size.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                      fileType: z\n                                        .enum([\n                                          'UNSPECIFIED',\n                                          'SECURE_PICTURE',\n                                          'SECURE_VIDEO',\n                                          'SECURE_DOCUMENT',\n                                          'SECURE_MUSIC',\n                                          'SECURE_ARCHIVE',\n                                          'SECURE_RAW',\n                                        ])\n                                        .describe('File type.')\n                                        .optional(),\n                                    })\n                                    .describe(\n                                      'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Digital properties. Must be passed when `productType: DIGITAL`'\n                                ),\n                            }),\n                          ])\n                        )\n                        .describe(\n                          'The variant with the lowest `actualPrice` among visible variants for this product.\\n\\nHidden variants are excluded; ties are broken by variant order. Empty if the product has no visible variants.\\n> **Note:** Returned only when you pass `\"MIN_PRICE_VARIANT\"` to the `fields` array in Products API requests.'\n                        )\n                        .optional(),\n                    })\n                    .describe('The total number of variants for the product.')\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({ physicalProperties: z.never().optional() }),\n                  z.object({\n                    physicalProperties: z\n                      .object({\n                        pricePerUnit: z\n                          .object({\n                            quantity: z\n                              .number()\n                              .describe(\n                                'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                              )\n                              .min(0.01)\n                              .max(999999999.99)\n                              .optional(),\n                            measurementUnit: z\n                              .enum([\n                                'UNSPECIFIED',\n                                'ML',\n                                'CL',\n                                'L',\n                                'CBM',\n                                'MG',\n                                'G',\n                                'KG',\n                                'MM',\n                                'CM',\n                                'M',\n                                'SQM',\n                                'OZ',\n                                'LB',\n                                'FLOZ',\n                                'PT',\n                                'QT',\n                                'GAL',\n                                'IN',\n                                'FT',\n                                'YD',\n                                'SQFT',\n                              ])\n                              .describe(\n                                'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n                          )\n                          .optional(),\n                        fulfillerId: z\n                          .string()\n                          .describe('Fulfiller ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        shippingWeightRange: z\n                          .object({\n                            minValue: z\n                              .number()\n                              .describe(\n                                'Minimum weight across all variants associated with this product.'\n                              )\n                              .min(0)\n                              .max(999999999.99)\n                              .optional(),\n                            maxValue: z\n                              .number()\n                              .describe(\n                                'Maximum weight across all variants associated with this product.'\n                              )\n                              .min(0)\n                              .max(999999999.99)\n                              .optional(),\n                          })\n                          .describe(\n                            'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n                          )\n                          .optional(),\n                        pricePerUnitRange: z\n                          .object({\n                            minValue: z\n                              .object({\n                                value: z\n                                  .string()\n                                  .describe(\n                                    \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                  )\n                                  .optional(),\n                                description: z\n                                  .string()\n                                  .describe(\n                                    'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                                  )\n                                  .max(100)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Minimum price per unit across all variants.'\n                              )\n                              .optional(),\n                            maxValue: z\n                              .object({\n                                value: z\n                                  .string()\n                                  .describe(\n                                    \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                  )\n                                  .optional(),\n                                description: z\n                                  .string()\n                                  .describe(\n                                    'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                                  )\n                                  .max(100)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Maximum price per unit across all variants.'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n                          )\n                          .optional(),\n                        weightMeasurementUnitInfo: z\n                          .object({\n                            weightMeasurementUnit: z\n                              .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                              .describe('Weight measurement unit.')\n                              .optional(),\n                          })\n                          .describe(\n                            'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        deliveryProfileId: z\n                          .string()\n                          .describe('Delivery profile ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\n                'Full product entity.\\n\\nReturned only if `returnEntity: true` is passed in the request.'\n              )\n              .optional(),\n          })\n        )\n        .min(1)\n        .max(100)\n        .optional(),\n      bulkActionMetadata: z\n        .object({\n          totalSuccesses: z\n            .number()\n            .int()\n            .describe('Number of items that were successfully processed.')\n            .optional(),\n          totalFailures: z\n            .number()\n            .int()\n            .describe(\"Number of items that couldn't be processed.\")\n            .optional(),\n          undetailedFailures: z\n            .number()\n            .int()\n            .describe(\n              'Number of failures without details because detailed failure threshold was exceeded.'\n            )\n            .optional(),\n        })\n        .describe('Bulk action metadata.')\n        .optional(),\n    })\n    .describe('Products created by bulk action.')\n    .optional(),\n  inventoryResults: z\n    .object({\n      results: z\n        .array(\n          z.object({\n            itemMetadata: z\n              .object({\n                _id: z\n                  .string()\n                  .describe(\n                    \"Item ID. Should always be available, unless it's impossible (for example, when failing to create an item).\"\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                originalIndex: z\n                  .number()\n                  .int()\n                  .describe(\n                    'Index of the item within the request array. Allows for correlation between request and response items.'\n                  )\n                  .optional(),\n                success: z\n                  .boolean()\n                  .describe(\n                    'Whether the requested action was successful for this item. When `false`, the `error` field is populated.'\n                  )\n                  .optional(),\n                error: z\n                  .object({\n                    code: z.string().describe('Error code.').optional(),\n                    description: z\n                      .string()\n                      .describe('Description of the error.')\n                      .optional(),\n                    data: z\n                      .record(z.string(), z.any())\n                      .describe('Data related to the error.')\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe('Details about the error in case of failure.')\n                  .optional(),\n              })\n              .describe('Bulk action metadata for inventory item.')\n              .optional(),\n            item: z\n              .intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Inventory item ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  revision: z\n                    .string()\n                    .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                    .describe(\n                      'Revision number, which increments by 1 each time the inventory item is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the inventory item.\\n\\nIgnored when creating an inventory item.'\n                    )\n                    .optional()\n                    .nullable(),\n                  _createdDate: z\n                    .date()\n                    .describe('Date and time the inventory item was created.')\n                    .optional()\n                    .nullable(),\n                  _updatedDate: z\n                    .date()\n                    .describe(\n                      'Date and time the inventory item was last updated.'\n                    )\n                    .optional()\n                    .nullable(),\n                  variantId: z\n                    .string()\n                    .describe('Variant ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                  locationId: z\n                    .string()\n                    .describe(\n                      \"Stores location ID. If not specified when creating an inventory item, the store's default location is used.\"\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  productId: z\n                    .string()\n                    .describe('Product ID.')\n                    .min(1)\n                    .max(36)\n                    .optional(),\n                  trackQuantity: z\n                    .boolean()\n                    .describe('Whether the quantity is being tracked.')\n                    .optional(),\n                  availabilityStatus: z\n                    .enum(['OUT_OF_STOCK', 'IN_STOCK', 'PREORDER'])\n                    .describe('Inventory item availability status.')\n                    .optional(),\n                  preorderInfo: z\n                    .object({\n                      enabled: z\n                        .boolean()\n                        .describe(\n                          \"Whether preorder is enabled for this inventory item.\\n\\n> **Note:** Preorder can't be enabled for digital products or products with subscriptions.\\n\\nDefault: `false`\"\n                        )\n                        .optional()\n                        .nullable(),\n                      message: z\n                        .string()\n                        .describe(\n                          'Message displayed to customers when the item is out of stock and preorder is enabled.'\n                        )\n                        .min(1)\n                        .max(250)\n                        .optional()\n                        .nullable(),\n                      limit: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Maximum number of items that can be preordered after stock reaches zero.\\n\\nSupported only for inventory items with `trackQuantity = true`.\\n\\nDefault: `100000`'\n                        )\n                        .min(0)\n                        .max(100000)\n                        .optional()\n                        .nullable(),\n                      counter: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Number of times this item has been preordered.\\n\\nSupported only for inventory items with `trackQuantity = true`.'\n                        )\n                        .min(0)\n                        .max(99999)\n                        .optional()\n                        .nullable(),\n                      quantity: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Remaining quantity available for preorder.\\n\\nSupported only for items with `trackQuantity` set to `true`.'\n                        )\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      \"Item preorder info.\\n\\nPreorder settings are configured per inventory item, so each variant-location combination can have its own preorder configuration.\\n\\n> **Note:** The product entity's `inventory.preorderStatus` and `inventory.preorderAvailability` fields reflect only the default location's preorder state.\"\n                    )\n                    .optional(),\n                  product: z\n                    .object({\n                      name: z\n                        .string()\n                        .describe('Product name.')\n                        .max(80)\n                        .optional()\n                        .nullable(),\n                      directCategoryIds: z\n                        .array(z.string())\n                        .max(2000)\n                        .optional(),\n                      variantName: z\n                        .string()\n                        .describe('Variant name.')\n                        .min(1)\n                        .max(250)\n                        .optional()\n                        .nullable(),\n                      variantSku: z\n                        .string()\n                        .describe('Variant SKU (stock keeping unit).')\n                        .min(1)\n                        .max(40)\n                        .optional()\n                        .nullable(),\n                      variantVisible: z\n                        .boolean()\n                        .describe(\n                          'Whether the variant is visible in the store.'\n                        )\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Associated product and variant details.')\n                    .optional(),\n                  extendedFields: z\n                    .object({\n                      namespaces: z\n                        .record(z.string(), z.record(z.string(), z.any()))\n                        .describe(\n                          'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                        )\n                        .optional(),\n                    })\n                    .describe(\n                      'Custom field data for the inventory item object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n                    )\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    inStock: z.never().optional(),\n                    quantity: z.never().optional(),\n                  }),\n                  z.object({\n                    quantity: z.never().optional(),\n                    inStock: z\n                      .boolean()\n                      .describe(\n                        \"Indicates that inventory is tracked by status rather than quantity.\\n\\nWhen set to `true`, the item is marked as available for sale without tracking exact quantities.\\nWhen set to `false`, the item is marked as out of stock.\\nThis tracking method is useful for made-to-order products or items with unlimited inventory.\\n\\nWhen using this tracking method, `trackQuantity` is `false` and preorder limits aren't supported.\"\n                      ),\n                  }),\n                  z.object({\n                    inStock: z.never().optional(),\n                    quantity: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Indicates that inventory is tracked by quantity.\\n\\nSet this field to the number of items currently in stock.\\nThis tracking method is useful when you need to know exactly how many items are available.\\n\\nWhen using this tracking method, `trackQuantity` is `true`.\\nQuantity can be negative when inventory is decremented for an order that has already been paid.'\n                      )\n                      .min(-99999)\n                      .max(99999),\n                  }),\n                ])\n              )\n              .describe(\n                'Full inventory item entity.\\n\\nReturned only if `returnEntity: true` is passed in the request.'\n              )\n              .optional(),\n          })\n        )\n        .min(0)\n        .max(1000)\n        .optional(),\n      bulkActionMetadata: z\n        .object({\n          totalSuccesses: z\n            .number()\n            .int()\n            .describe('Number of items that were successfully processed.')\n            .optional(),\n          totalFailures: z\n            .number()\n            .int()\n            .describe(\"Number of items that couldn't be processed.\")\n            .optional(),\n          undetailedFailures: z\n            .number()\n            .int()\n            .describe(\n              'Number of failures without details because detailed failure threshold was exceeded.'\n            )\n            .optional(),\n        })\n        .describe('Bulk action metadata.')\n        .optional(),\n      error: z\n        .object({\n          code: z.string().describe('Error code.').optional(),\n          description: z\n            .string()\n            .describe('Description of the error.')\n            .optional(),\n          data: z\n            .record(z.string(), z.any())\n            .describe('Data related to the error.')\n            .optional()\n            .nullable(),\n        })\n        .describe('Error details in case of failed action.')\n        .optional(),\n    })\n    .describe('Inventories created by bulk action.')\n    .optional(),\n});\nexport const BulkUpdateProductsRequest = z.object({\n  products: z\n    .array(\n      z.object({\n        product: z\n          .intersection(\n            z.object({\n              _id: z.string().describe('Product ID.').min(1).max(36),\n              revision: z\n                .string()\n                .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                .describe(\n                  'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product.'\n                ),\n              _createdDate: z\n                .date()\n                .describe('Date and time the product was created.')\n                .optional()\n                .nullable(),\n              _updatedDate: z\n                .date()\n                .describe('Date and time the product was updated.')\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Product name. Translatable.')\n                .min(1)\n                .max(80)\n                .optional()\n                .nullable(),\n              slug: z\n                .string()\n                .describe(\n                  'Product slug. A URL-friendly identifier used in the product page address.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n                )\n                .min(1)\n                .max(300)\n                .optional()\n                .nullable(),\n              url: z\n                .string()\n                .describe(\n                  'URL to the site\\'s product page.\\n\\n> **Note:** Returned only when you pass `\"URL\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              description: z\n                .any()\n                .describe(\n                  'Product description using rich content.\\n> **Note:** Returned only when you pass `\"DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                )\n                .optional(),\n              plainDescription: z\n                .string()\n                .describe(\n                  'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                )\n                .max(16000)\n                .optional()\n                .nullable(),\n              visible: z\n                .boolean()\n                .describe(\n                  \"Whether the product is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the default variant's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                )\n                .optional()\n                .nullable(),\n              visibleInPos: z\n                .boolean()\n                .describe(\n                  'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n                )\n                .optional()\n                .nullable(),\n              media: z\n                .object({\n                  main: z\n                    .intersection(\n                      z.object({\n                        altText: z\n                          .string()\n                          .describe('Image alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        displayName: z\n                          .string()\n                          .describe(\n                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                          )\n                          .max(80)\n                          .optional()\n                          .nullable(),\n                        mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                        thumbnail: z\n                          .object({\n                            url: z\n                              .string()\n                              .describe('Thumbnail url.')\n                              .url()\n                              .optional(),\n                            height: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail height.')\n                              .optional(),\n                            width: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail width.')\n                              .optional(),\n                            altText: z\n                              .string()\n                              .describe('Thumbnail alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        uploadId: z\n                          .string()\n                          .describe(\n                            'ID used to upload media to Wix Media Manager.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                      }),\n                      z.intersection(\n                        z.xor([\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z.never().optional(),\n                          }),\n                          z.object({\n                            url: z.never().optional(),\n                            _id: z\n                              .string()\n                              .describe(\n                                'Set media by ID of an existing file in Wix Media Manager.'\n                              )\n                              .min(1)\n                              .max(200),\n                          }),\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z\n                              .string()\n                              .describe(\n                                'Set media using an external media URL.'\n                              )\n                              .url(),\n                          }),\n                        ]),\n                        z.xor([\n                          z.object({\n                            image: z.never().optional(),\n                            video: z.never().optional(),\n                          }),\n                          z.object({\n                            video: z.never().optional(),\n                            image: z\n                              .string()\n                              .describe(\n                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                              ),\n                          }),\n                          z.object({\n                            image: z.never().optional(),\n                            video: z\n                              .string()\n                              .describe(\n                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                    .describe(\n                      'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n                    )\n                    .optional(),\n                  itemsInfo: z\n                    .object({\n                      items: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              altText: z\n                                .string()\n                                .describe('Image alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              displayName: z\n                                .string()\n                                .describe(\n                                  \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                )\n                                .max(80)\n                                .optional()\n                                .nullable(),\n                              mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                              thumbnail: z\n                                .object({\n                                  url: z\n                                    .string()\n                                    .describe('Thumbnail url.')\n                                    .url()\n                                    .optional(),\n                                  height: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail height.')\n                                    .optional(),\n                                  width: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail width.')\n                                    .optional(),\n                                  altText: z\n                                    .string()\n                                    .describe('Thumbnail alt text.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                )\n                                .optional(),\n                              uploadId: z\n                                .string()\n                                .describe(\n                                  'ID used to upload media to Wix Media Manager.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                            }),\n                            z.intersection(\n                              z.xor([\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z.never().optional(),\n                                }),\n                                z.object({\n                                  url: z.never().optional(),\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Set media by ID of an existing file in Wix Media Manager.'\n                                    )\n                                    .min(1)\n                                    .max(200),\n                                }),\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z\n                                    .string()\n                                    .describe(\n                                      'Set media using an external media URL.'\n                                    )\n                                    .url(),\n                                }),\n                              ]),\n                              z.xor([\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z.never().optional(),\n                                }),\n                                z.object({\n                                  video: z.never().optional(),\n                                  image: z\n                                    .string()\n                                    .describe(\n                                      \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                    ),\n                                }),\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z\n                                    .string()\n                                    .describe(\n                                      \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                    ),\n                                }),\n                              ])\n                            )\n                          )\n                        )\n                        .max(50)\n                        .optional(),\n                    })\n                    .describe(\n                      'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Product media items. For a detailed explanation of product media, see [About Product Media](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/about-product-media).'\n                )\n                .optional(),\n              seoData: z\n                .object({\n                  tags: z\n                    .array(\n                      z.object({\n                        type: z\n                          .string()\n                          .describe(\n                            'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                          )\n                          .optional(),\n                        props: z\n                          .record(z.string(), z.any())\n                          .describe(\n                            'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                          )\n                          .optional()\n                          .nullable(),\n                        meta: z\n                          .record(z.string(), z.any())\n                          .describe(\n                            'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                          )\n                          .optional()\n                          .nullable(),\n                        children: z\n                          .string()\n                          .describe(\n                            'SEO tag inner content. For example, `<title> inner content </title>`.'\n                          )\n                          .optional(),\n                        custom: z\n                          .boolean()\n                          .describe(\n                            'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                          )\n                          .optional(),\n                        disabled: z\n                          .boolean()\n                          .describe(\n                            \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                          )\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                  settings: z\n                    .object({\n                      preventAutoRedirect: z\n                        .boolean()\n                        .describe(\n                          'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n                        )\n                        .optional(),\n                      keywords: z\n                        .array(\n                          z.object({\n                            term: z\n                              .string()\n                              .describe('Keyword value.')\n                              .optional(),\n                            isMain: z\n                              .boolean()\n                              .describe(\n                                'Whether the keyword is the main focus keyword.'\n                              )\n                              .optional(),\n                            origin: z\n                              .string()\n                              .describe(\n                                'The source that added the keyword terms to the SEO settings.'\n                              )\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                        )\n                        .max(5)\n                        .optional(),\n                    })\n                    .describe('SEO general settings.')\n                    .optional(),\n                })\n                .describe('Product SEO data.')\n                .optional(),\n              taxGroupId: z\n                .string()\n                .describe(\n                  '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              options: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe(\n                          'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n                        )\n                        .min(1)\n                        .max(36)\n                        .optional()\n                        .nullable(),\n                      name: z\n                        .string()\n                        .describe('Option name.')\n                        .min(1)\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                      optionRenderType: z\n                        .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                        .optional(),\n                      key: z\n                        .string()\n                        .describe(\n                          'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                        )\n                        .min(1)\n                        .max(50)\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({\n                        choicesSettings: z\n                          .object({\n                            choices: z\n                              .array(\n                                z.intersection(\n                                  z.object({\n                                    choiceId: z\n                                      .string()\n                                      .describe('Choice ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    linkedMedia: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({\n                                            altText: z\n                                              .string()\n                                              .describe('Image alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                            displayName: z\n                                              .string()\n                                              .describe(\n                                                \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                              )\n                                              .max(80)\n                                              .optional()\n                                              .nullable(),\n                                            mediaType: z\n                                              .enum(['IMAGE', 'VIDEO'])\n                                              .optional(),\n                                            thumbnail: z\n                                              .object({\n                                                url: z\n                                                  .string()\n                                                  .describe('Thumbnail url.')\n                                                  .url()\n                                                  .optional(),\n                                                height: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail height.')\n                                                  .optional(),\n                                                width: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail width.')\n                                                  .optional(),\n                                                altText: z\n                                                  .string()\n                                                  .describe(\n                                                    'Thumbnail alt text.'\n                                                  )\n                                                  .min(1)\n                                                  .max(1000)\n                                                  .optional()\n                                                  .nullable(),\n                                              })\n                                              .describe(\n                                                'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .optional(),\n                                            uploadId: z\n                                              .string()\n                                              .describe(\n                                                'ID used to upload media to Wix Media Manager.'\n                                              )\n                                              .regex(\n                                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                                'Must be a valid GUID'\n                                              )\n                                              .optional(),\n                                          }),\n                                          z.intersection(\n                                            z.xor([\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                url: z.never().optional(),\n                                                _id: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media by ID of an existing file in Wix Media Manager.'\n                                                  )\n                                                  .min(1)\n                                                  .max(200),\n                                              }),\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media using an external media URL.'\n                                                  )\n                                                  .url(),\n                                              }),\n                                            ]),\n                                            z.xor([\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                video: z.never().optional(),\n                                                image: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                                  ),\n                                              }),\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                                  ),\n                                              }),\n                                            ])\n                                          )\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                    choiceType: z\n                                      .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                      .optional(),\n                                    key: z\n                                      .string()\n                                      .describe(\n                                        'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                      )\n                                      .min(1)\n                                      .max(50)\n                                      .optional(),\n                                    name: z\n                                      .string()\n                                      .describe(\n                                        'Choice name. For text choices, this field also contains the choice value.'\n                                      )\n                                      .min(1)\n                                      .max(50)\n                                      .optional()\n                                      .nullable(),\n                                    inStock: z\n                                      .boolean()\n                                      .describe(\n                                        'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                                      )\n                                      .optional(),\n                                    visible: z\n                                      .boolean()\n                                      .describe(\n                                        'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                                      )\n                                      .optional(),\n                                    displayImage: z\n                                      .string()\n                                      .describe(\n                                        'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                      )\n                                      .optional(),\n                                    media: z\n                                      .object({\n                                        items: z\n                                          .array(\n                                            z.intersection(\n                                              z.object({}),\n                                              z.xor([\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z.never().optional(),\n                                                }),\n                                                z.object({\n                                                  url: z.never().optional(),\n                                                  mediaId: z\n                                                    .string()\n                                                    .describe(\n                                                      'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                    )\n                                                    .min(1)\n                                                    .max(200),\n                                                }),\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z\n                                                    .string()\n                                                    .describe(\n                                                      'External media URL. Can be used only on write.'\n                                                    )\n                                                    .url(),\n                                                }),\n                                              ])\n                                            )\n                                          )\n                                          .max(15)\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                      )\n                                      .optional(),\n                                  }),\n                                  z.xor([\n                                    z.object({\n                                      colorCode: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      colorCode: z\n                                        .string()\n                                        .describe(\n                                          'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                                        )\n                                        .min(3)\n                                        .max(20),\n                                    }),\n                                  ])\n                                )\n                              )\n                              .min(1)\n                              .max(100)\n                              .optional(),\n                          })\n                          .describe('Choices settings.'),\n                      }),\n                    ])\n                  )\n                )\n                .max(6)\n                .optional(),\n              modifiers: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe(\n                          'ID of a customization with `customizationType: MODIFIER`.'\n                        )\n                        .min(1)\n                        .max(36)\n                        .optional()\n                        .nullable(),\n                      name: z\n                        .string()\n                        .describe('Modifier title.')\n                        .min(1)\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                      modifierRenderType: z\n                        .enum(['FREE_TEXT', 'TEXT_CHOICES', 'SWATCH_CHOICES'])\n                        .optional(),\n                      mandatory: z\n                        .boolean()\n                        .describe(\n                          'Whether customer input is required for this modifier.'\n                        )\n                        .optional(),\n                      key: z\n                        .string()\n                        .describe(\n                          'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                        )\n                        .min(1)\n                        .max(50)\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({\n                        choicesSettings: z.never().optional(),\n                        freeTextSettings: z\n                          .object({\n                            minCharCount: z\n                              .number()\n                              .int()\n                              .describe('Minimum number of characters.')\n                              .optional(),\n                            maxCharCount: z\n                              .number()\n                              .int()\n                              .describe('Maximum number of characters.')\n                              .max(500)\n                              .optional(),\n                            defaultAddedPrice: z\n                              .string()\n                              .describe(\n                                \"Default amount to be added to the product's price.\"\n                              )\n                              .optional()\n                              .nullable(),\n                            title: z\n                              .string()\n                              .describe(\n                                'Title of the text to be input by the customer.'\n                              )\n                              .min(1)\n                              .max(150)\n                              .optional(),\n                            key: z\n                              .string()\n                              .describe(\n                                'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                              )\n                              .min(1)\n                              .max(150)\n                              .optional(),\n                          })\n                          .describe('Free text modifier settings.'),\n                      }),\n                      z.object({\n                        freeTextSettings: z.never().optional(),\n                        choicesSettings: z\n                          .object({\n                            choices: z\n                              .array(\n                                z.intersection(\n                                  z.object({\n                                    choiceId: z\n                                      .string()\n                                      .describe('Choice ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    linkedMedia: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({\n                                            altText: z\n                                              .string()\n                                              .describe('Image alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                            displayName: z\n                                              .string()\n                                              .describe(\n                                                \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                              )\n                                              .max(80)\n                                              .optional()\n                                              .nullable(),\n                                            mediaType: z\n                                              .enum(['IMAGE', 'VIDEO'])\n                                              .optional(),\n                                            thumbnail: z\n                                              .object({\n                                                url: z\n                                                  .string()\n                                                  .describe('Thumbnail url.')\n                                                  .url()\n                                                  .optional(),\n                                                height: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail height.')\n                                                  .optional(),\n                                                width: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail width.')\n                                                  .optional(),\n                                                altText: z\n                                                  .string()\n                                                  .describe(\n                                                    'Thumbnail alt text.'\n                                                  )\n                                                  .min(1)\n                                                  .max(1000)\n                                                  .optional()\n                                                  .nullable(),\n                                              })\n                                              .describe(\n                                                'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .optional(),\n                                            uploadId: z\n                                              .string()\n                                              .describe(\n                                                'ID used to upload media to Wix Media Manager.'\n                                              )\n                                              .regex(\n                                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                                'Must be a valid GUID'\n                                              )\n                                              .optional(),\n                                          }),\n                                          z.intersection(\n                                            z.xor([\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                url: z.never().optional(),\n                                                _id: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media by ID of an existing file in Wix Media Manager.'\n                                                  )\n                                                  .min(1)\n                                                  .max(200),\n                                              }),\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media using an external media URL.'\n                                                  )\n                                                  .url(),\n                                              }),\n                                            ]),\n                                            z.xor([\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                video: z.never().optional(),\n                                                image: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                                  ),\n                                              }),\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                                  ),\n                                              }),\n                                            ])\n                                          )\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                    choiceType: z\n                                      .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                      .optional(),\n                                    key: z\n                                      .string()\n                                      .describe(\n                                        'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                      )\n                                      .min(1)\n                                      .max(50)\n                                      .optional(),\n                                    name: z\n                                      .string()\n                                      .describe('Choice name.')\n                                      .min(1)\n                                      .max(50)\n                                      .optional()\n                                      .nullable(),\n                                    addedPrice: z\n                                      .string()\n                                      .describe('Added price.')\n                                      .optional()\n                                      .nullable(),\n                                    displayImage: z\n                                      .string()\n                                      .describe(\n                                        'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                      )\n                                      .optional(),\n                                    media: z\n                                      .object({\n                                        items: z\n                                          .array(\n                                            z.intersection(\n                                              z.object({}),\n                                              z.xor([\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z.never().optional(),\n                                                }),\n                                                z.object({\n                                                  url: z.never().optional(),\n                                                  mediaId: z\n                                                    .string()\n                                                    .describe(\n                                                      'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                    )\n                                                    .min(1)\n                                                    .max(200),\n                                                }),\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z\n                                                    .string()\n                                                    .describe(\n                                                      'External media URL. Can be used only on write.'\n                                                    )\n                                                    .url(),\n                                                }),\n                                              ])\n                                            )\n                                          )\n                                          .max(15)\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                      )\n                                      .optional(),\n                                  }),\n                                  z.xor([\n                                    z.object({\n                                      colorCode: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      colorCode: z\n                                        .string()\n                                        .describe(\n                                          'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                                        )\n                                        .min(3)\n                                        .max(20),\n                                    }),\n                                  ])\n                                )\n                              )\n                              .min(1)\n                              .max(100)\n                              .optional(),\n                          })\n                          .describe('Choice settings.'),\n                      }),\n                    ])\n                  )\n                )\n                .max(10)\n                .optional(),\n              brand: z\n                .object({\n                  _id: z\n                    .string()\n                    .describe('Brand ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Brand name.')\n                    .max(50)\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  \"Product [brand](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/brands-v3/introduction).\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n                )\n                .optional(),\n              infoSections: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Info section ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    uniqueName: z\n                      .string()\n                      .describe(\n                        'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                      )\n                      .max(100)\n                      .optional()\n                      .nullable(),\n                    title: z\n                      .string()\n                      .describe(\n                        'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                      )\n                      .min(1)\n                      .max(50)\n                      .optional()\n                      .nullable(),\n                    description: z\n                      .any()\n                      .describe(\n                        'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                      )\n                      .optional(),\n                    plainDescription: z\n                      .string()\n                      .describe(\n                        'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                      )\n                      .max(16000)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(10)\n                .optional(),\n              ribbon: z\n                .object({\n                  _id: z\n                    .string()\n                    .describe('Ribbon ID.')\n                    .min(1)\n                    .max(36)\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Ribbon name.')\n                    .max(30)\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  \"Primary [ribbon](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/ribbons-v3/introduction) displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n                )\n                .optional(),\n              directCategoriesInfo: z\n                .object({\n                  categories: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('Category ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        index: z\n                          .number()\n                          .int()\n                          .describe(\n                            'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                          )\n                          .min(0)\n                          .max(200)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(2000)\n                    .optional(),\n                })\n                .describe(\n                  'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product.\\n\\nUpdated automatically when a product is added/removed from a category, when an item is moved within a category, or when a category is deleted.\\n> **Note:** Returned only when you pass `\"DIRECT_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              allCategoriesInfo: z\n                .object({\n                  categories: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('Category ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        index: z\n                          .number()\n                          .int()\n                          .describe(\n                            'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                          )\n                          .min(0)\n                          .max(200)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(2000)\n                    .optional(),\n                })\n                .describe(\n                  'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product, as well as their parent categories.\\n> **Note:** Returned only when you pass `\"ALL_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              mainCategoryId: z\n                .string()\n                .describe(\n                  'The ID of the product\\'s primary direct [category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction), which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              costRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum value.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum value.')\n                    .optional(),\n                })\n                .describe(\n                  'Product cost range - minimum and maximum costs of all product variants.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                )\n                .optional(),\n              inventory: z\n                .object({\n                  availabilityStatus: z\n                    .enum([\n                      'IN_STOCK',\n                      'OUT_OF_STOCK',\n                      'PARTIALLY_OUT_OF_STOCK',\n                    ])\n                    .optional(),\n                  preorderStatus: z\n                    .enum(['ENABLED', 'DISABLED', 'PARTIALLY_ENABLED'])\n                    .optional(),\n                  preorderAvailability: z\n                    .enum(['ALL_VARIANTS', 'NO_VARIANTS', 'SOME_VARIANTS'])\n                    .optional(),\n                })\n                .describe(\n                  'Product inventory info.\\n\\n> **Note:** This field reflects the aggregated inventory status from the default location only. Use the [Inventory Items API](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/inventory-items-v3/introduction) to manage inventory for specific locations. Learn more about [inventory management](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-inventory-management).'\n                )\n                .optional(),\n              productType: z.enum(['PHYSICAL', 'DIGITAL']).optional(),\n              handle: z\n                .string()\n                .describe(\n                  \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n                )\n                .min(1)\n                .max(100)\n                .optional()\n                .nullable(),\n              currency: z\n                .string()\n                .describe(\n                  'Currency used for the pricing of this product, in [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes) format.\\n\\nDefaults to the currency defined in the site settings, unless specified in the request\\'s `x-wix-currency` header.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                )\n                .optional()\n                .nullable(),\n              breadcrumbsInfo: z\n                .object({\n                  breadcrumbs: z\n                    .array(\n                      z.object({\n                        categoryId: z\n                          .string()\n                          .describe('Category ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        categoryName: z\n                          .string()\n                          .describe('Category name.')\n                          .min(1)\n                          .max(80)\n                          .optional(),\n                        categorySlug: z\n                          .string()\n                          .describe('Category slug.')\n                          .min(1)\n                          .max(100)\n                          .optional(),\n                      })\n                    )\n                    .max(5)\n                    .optional(),\n                })\n                .describe(\n                  'Breadcrumbs of the `mainCategoryId`. Used to navigate to parent [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction). Useful for building navigation UI and for SEO purposes.\\n> **Note:** Returned only when you pass `\"BREADCRUMBS_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              actualPriceRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum value.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum value.')\n                    .optional(),\n                })\n                .describe(\n                  'Minimum and maximum current selling prices across all product variants.'\n                )\n                .optional(),\n              compareAtPriceRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum value.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum value.')\n                    .optional(),\n                })\n                .describe(\n                  'Minimum and maximum compare-at prices (original prices before discounts) across all product variants. Used to show savings to customers.'\n                )\n                .optional(),\n              variantsInfo: z\n                .object({\n                  variants: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          _id: z\n                            .string()\n                            .describe('Variant ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          visible: z\n                            .boolean()\n                            .describe(\n                              \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                            )\n                            .optional()\n                            .nullable(),\n                          sku: z\n                            .string()\n                            .describe('Variant SKU (stock keeping unit).')\n                            .min(1)\n                            .max(40)\n                            .optional()\n                            .nullable(),\n                          barcode: z\n                            .string()\n                            .describe('Variant barcode.')\n                            .min(1)\n                            .max(40)\n                            .optional()\n                            .nullable(),\n                          choices: z\n                            .array(\n                              z.object({\n                                optionChoiceIds: z\n                                  .object({\n                                    optionId: z\n                                      .string()\n                                      .describe('Option ID.')\n                                      .min(1)\n                                      .max(36),\n                                    choiceId: z\n                                      .string()\n                                      .describe('Choice ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      ),\n                                  })\n                                  .describe(\n                                    \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                                  )\n                                  .optional(),\n                                optionChoiceNames: z\n                                  .object({\n                                    optionName: z\n                                      .string()\n                                      .describe('Option name.')\n                                      .min(1)\n                                      .optional(),\n                                    choiceName: z\n                                      .string()\n                                      .describe('Choice name.')\n                                      .min(1)\n                                      .optional(),\n                                    renderType: z\n                                      .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .optional(),\n                              })\n                            )\n                            .min(0)\n                            .max(6)\n                            .optional(),\n                          price: z\n                            .object({\n                              actualPrice: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  \"Variant's current selling price. Must be greater than or equal to 0.\"\n                                ),\n                              compareAtPrice: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                                )\n                                .optional(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                            .describe('Variant price.'),\n                          revenueDetails: z\n                            .object({\n                              cost: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe('Item cost.')\n                                .optional(),\n                              profit: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                                )\n                                .optional(),\n                              profitMargin: z\n                                .number()\n                                .describe(\n                                  'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                                )\n                                .min(0)\n                                .max(1)\n                                .optional(),\n                            })\n                            .describe(\n                              'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                            )\n                            .optional(),\n                          media: z\n                            .intersection(\n                              z.object({\n                                altText: z\n                                  .string()\n                                  .describe('Image alt text.')\n                                  .min(1)\n                                  .max(1000)\n                                  .optional()\n                                  .nullable(),\n                                displayName: z\n                                  .string()\n                                  .describe(\n                                    \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                  )\n                                  .max(80)\n                                  .optional()\n                                  .nullable(),\n                                mediaType: z\n                                  .enum(['IMAGE', 'VIDEO'])\n                                  .optional(),\n                                thumbnail: z\n                                  .object({\n                                    url: z\n                                      .string()\n                                      .describe('Thumbnail url.')\n                                      .url()\n                                      .optional(),\n                                    height: z\n                                      .number()\n                                      .int()\n                                      .describe('Thumbnail height.')\n                                      .optional(),\n                                    width: z\n                                      .number()\n                                      .int()\n                                      .describe('Thumbnail width.')\n                                      .optional(),\n                                    altText: z\n                                      .string()\n                                      .describe('Thumbnail alt text.')\n                                      .min(1)\n                                      .max(1000)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .optional(),\n                                uploadId: z\n                                  .string()\n                                  .describe(\n                                    'ID used to upload media to Wix Media Manager.'\n                                  )\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional(),\n                              }),\n                              z.intersection(\n                                z.xor([\n                                  z.object({\n                                    _id: z.never().optional(),\n                                    url: z.never().optional(),\n                                  }),\n                                  z.object({\n                                    url: z.never().optional(),\n                                    _id: z\n                                      .string()\n                                      .describe(\n                                        'Set media by ID of an existing file in Wix Media Manager.'\n                                      )\n                                      .min(1)\n                                      .max(200),\n                                  }),\n                                  z.object({\n                                    _id: z.never().optional(),\n                                    url: z\n                                      .string()\n                                      .describe(\n                                        'Set media using an external media URL.'\n                                      )\n                                      .url(),\n                                  }),\n                                ]),\n                                z.xor([\n                                  z.object({\n                                    image: z.never().optional(),\n                                    video: z.never().optional(),\n                                  }),\n                                  z.object({\n                                    video: z.never().optional(),\n                                    image: z\n                                      .string()\n                                      .describe(\n                                        \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                      ),\n                                  }),\n                                  z.object({\n                                    image: z.never().optional(),\n                                    video: z\n                                      .string()\n                                      .describe(\n                                        \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                      ),\n                                  }),\n                                ])\n                              )\n                            )\n                            .describe('Variant media.')\n                            .optional(),\n                          subscriptionPricesInfo: z\n                            .object({\n                              subscriptionPrices: z\n                                .array(\n                                  z.object({\n                                    subscriptionId: z\n                                      .string()\n                                      .describe('Subscription ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional(),\n                                    price: z\n                                      .object({\n                                        amount: z\n                                          .string()\n                                          .describe(\n                                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                          )\n                                          .optional(),\n                                        formattedAmount: z\n                                          .string()\n                                          .describe(\n                                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                      )\n                                      .optional(),\n                                    pricePerUnit: z\n                                      .object({\n                                        value: z\n                                          .string()\n                                          .describe(\n                                            'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                          )\n                                          .optional(),\n                                        description: z\n                                          .string()\n                                          .describe(\n                                            'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                        priceAfterDiscount: z\n                                          .object({\n                                            amount: z\n                                              .string()\n                                              .describe(\n                                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                              )\n                                              .optional(),\n                                            formattedAmount: z\n                                              .string()\n                                              .describe(\n                                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .max(20)\n                                              .optional()\n                                              .nullable(),\n                                          })\n                                          .describe(\n                                            'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe('Price per unit info.')\n                                      .optional(),\n                                    priceAfterDiscount: z\n                                      .object({\n                                        amount: z\n                                          .string()\n                                          .describe(\n                                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                          )\n                                          .optional(),\n                                        formattedAmount: z\n                                          .string()\n                                          .describe(\n                                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                      )\n                                      .optional(),\n                                  })\n                                )\n                                .max(6)\n                                .optional(),\n                            })\n                            .describe(\n                              'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                          inventoryStatus: z\n                            .object({\n                              inStock: z\n                                .boolean()\n                                .describe('Whether the variant is in stock.')\n                                .optional(),\n                              preorderEnabled: z\n                                .boolean()\n                                .describe(\n                                  'Whether preorder is enabled for this variant.'\n                                )\n                                .optional(),\n                            })\n                            .describe('Variant inventory status.')\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({\n                            physicalProperties: z.never().optional(),\n                            digitalProperties: z.never().optional(),\n                          }),\n                          z.object({\n                            digitalProperties: z.never().optional(),\n                            physicalProperties: z\n                              .object({\n                                weight: z\n                                  .number()\n                                  .describe(\n                                    'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                                  )\n                                  .min(0)\n                                  .max(999999999.99)\n                                  .optional()\n                                  .nullable(),\n                                pricePerUnit: z\n                                  .object({\n                                    settings: z\n                                      .object({\n                                        quantity: z\n                                          .number()\n                                          .describe(\n                                            'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                          )\n                                          .min(0.01)\n                                          .max(999999999.99)\n                                          .optional(),\n                                        measurementUnit: z\n                                          .enum([\n                                            'UNSPECIFIED',\n                                            'ML',\n                                            'CL',\n                                            'L',\n                                            'CBM',\n                                            'MG',\n                                            'G',\n                                            'KG',\n                                            'MM',\n                                            'CM',\n                                            'M',\n                                            'SQM',\n                                            'OZ',\n                                            'LB',\n                                            'FLOZ',\n                                            'PT',\n                                            'QT',\n                                            'GAL',\n                                            'IN',\n                                            'FT',\n                                            'YD',\n                                            'SQFT',\n                                          ])\n                                          .describe(\n                                            'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                      )\n                                      .optional(),\n                                    value: z\n                                      .string()\n                                      .describe(\n                                        \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                      )\n                                      .optional(),\n                                    description: z\n                                      .string()\n                                      .describe(\n                                        'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(100)\n                                      .optional()\n                                      .nullable(),\n                                    priceAfterDiscount: z\n                                      .object({\n                                        amount: z\n                                          .string()\n                                          .describe(\n                                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                          )\n                                          .optional(),\n                                        formattedAmount: z\n                                          .string()\n                                          .describe(\n                                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                                  )\n                                  .optional(),\n                                productDimensions: z\n                                  .object({\n                                    length: z\n                                      .string()\n                                      .describe(\n                                        'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    width: z\n                                      .string()\n                                      .describe(\n                                        'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    height: z\n                                      .string()\n                                      .describe(\n                                        'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    unit: z\n                                      .enum([\n                                        'UNKNOWN_DIMENSIONS_UNIT',\n                                        'MM',\n                                        'CM',\n                                        'M',\n                                        'IN',\n                                        'FT',\n                                        'YD',\n                                      ])\n                                      .describe(\n                                        'Unit of measurement for dimensions (length, width, height).'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Product dimensions (length, width, height of the physical product).'\n                                  )\n                                  .optional(),\n                                packageDimensions: z\n                                  .object({\n                                    length: z\n                                      .string()\n                                      .describe(\n                                        'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    width: z\n                                      .string()\n                                      .describe(\n                                        'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    height: z\n                                      .string()\n                                      .describe(\n                                        'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    unit: z\n                                      .enum([\n                                        'UNKNOWN_DIMENSIONS_UNIT',\n                                        'MM',\n                                        'CM',\n                                        'M',\n                                        'IN',\n                                        'FT',\n                                        'YD',\n                                      ])\n                                      .describe(\n                                        'Unit of measurement for dimensions (length, width, height).'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Package dimensions (length, width, height of the shipping package).'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Physical properties. Must be passed when `productType: PHYSICAL`'\n                              ),\n                          }),\n                          z.object({\n                            physicalProperties: z.never().optional(),\n                            digitalProperties: z\n                              .object({\n                                digitalFile: z\n                                  .object({\n                                    _id: z\n                                      .string()\n                                      .describe('Media ID in media manager.')\n                                      .min(1)\n                                      .max(100)\n                                      .optional(),\n                                    fileName: z\n                                      .string()\n                                      .describe('Original file name.')\n                                      .min(1)\n                                      .max(1000)\n                                      .optional(),\n                                    fileSize: z\n                                      .string()\n                                      .describe('Original file size.')\n                                      .min(1)\n                                      .max(1000)\n                                      .optional()\n                                      .nullable(),\n                                    fileType: z\n                                      .enum([\n                                        'UNSPECIFIED',\n                                        'SECURE_PICTURE',\n                                        'SECURE_VIDEO',\n                                        'SECURE_DOCUMENT',\n                                        'SECURE_MUSIC',\n                                        'SECURE_ARCHIVE',\n                                        'SECURE_RAW',\n                                      ])\n                                      .describe('File type.')\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Digital properties. Must be passed when `productType: DIGITAL`'\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                    .min(1)\n                    .max(1000)\n                    .optional(),\n                })\n                .describe(\n                  'Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nYou must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).'\n                )\n                .optional(),\n              purchaseEligibility: z\n                .object({ userCriteria: z.enum(['MEMBERS_ONLY']).optional() })\n                .describe('Purchase eligibility settings for the product.')\n                .optional(),\n              additionalRibbons: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Ribbon ID.')\n                      .min(1)\n                      .max(36)\n                      .optional()\n                      .nullable(),\n                    name: z\n                      .string()\n                      .describe('Ribbon name.')\n                      .max(30)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(4)\n                .optional(),\n              extendedFields: z\n                .object({\n                  namespaces: z\n                    .record(z.string(), z.record(z.string(), z.any()))\n                    .describe(\n                      'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n                )\n                .optional(),\n              tags: z\n                .object({\n                  privateTags: z\n                    .object({ tagIds: z.array(z.string()).max(100).optional() })\n                    .describe(\n                      'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n                    )\n                    .optional(),\n                  publicTags: z\n                    .object({ tagIds: z.array(z.string()).max(100).optional() })\n                    .describe(\n                      'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n                    )\n                    .optional(),\n                })\n                .describe('Tags')\n                .optional(),\n              subscriptionDetails: z\n                .object({\n                  subscriptions: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          _id: z\n                            .string()\n                            .describe('Subscription ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          title: z\n                            .string()\n                            .describe('Subscription title.')\n                            .min(1)\n                            .max(20),\n                          description: z\n                            .string()\n                            .describe('Subscription description.')\n                            .max(60)\n                            .optional()\n                            .nullable(),\n                          visible: z\n                            .boolean()\n                            .describe(\n                              'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                            )\n                            .optional()\n                            .nullable(),\n                          frequency: z.enum([\n                            'UNDEFINED',\n                            'DAY',\n                            'WEEK',\n                            'MONTH',\n                            'YEAR',\n                          ]),\n                          interval: z\n                            .number()\n                            .int()\n                            .describe(\n                              'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                            )\n                            .min(1)\n                            .max(50)\n                            .optional()\n                            .nullable(),\n                          discount: z\n                            .intersection(\n                              z.object({ type: z.enum(['AMOUNT', 'PERCENT']) }),\n                              z.xor([\n                                z.object({\n                                  percentOff: z.never().optional(),\n                                  amountOff: z\n                                    .string()\n                                    .describe(\n                                      'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                                    ),\n                                }),\n                                z.object({\n                                  amountOff: z.never().optional(),\n                                  percentOff: z\n                                    .number()\n                                    .describe(\n                                      'Percentage subtracted from the variant price when calculating subscription prices.'\n                                    )\n                                    .min(0.1)\n                                    .max(99.9),\n                                }),\n                              ])\n                            )\n                            .describe(\n                              'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                            )\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({\n                            billingCycles: z.never().optional(),\n                            autoRenewal: z\n                              .boolean()\n                              .describe(\n                                'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                              ),\n                          }),\n                          z.object({\n                            autoRenewal: z.never().optional(),\n                            billingCycles: z\n                              .number()\n                              .int()\n                              .describe(\n                                'Number of billing cycles before subscription ends.'\n                              )\n                              .min(2)\n                              .max(999),\n                          }),\n                        ])\n                      )\n                    )\n                    .min(1)\n                    .max(6)\n                    .optional(),\n                  allowOneTimePurchases: z\n                    .boolean()\n                    .describe(\n                      'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n                    )\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n                )\n                .optional(),\n              variantSummary: z\n                .object({\n                  variantCount: z\n                    .number()\n                    .int()\n                    .describe('The total number of variants for the product.')\n                    .optional(),\n                  minPriceVariant: z\n                    .intersection(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('Variant ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        visible: z\n                          .boolean()\n                          .describe(\n                            \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                          )\n                          .optional()\n                          .nullable(),\n                        sku: z\n                          .string()\n                          .describe('Variant SKU (stock keeping unit).')\n                          .min(1)\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        barcode: z\n                          .string()\n                          .describe('Variant barcode.')\n                          .min(1)\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        choices: z\n                          .array(\n                            z.object({\n                              optionChoiceIds: z\n                                .object({\n                                  optionId: z\n                                    .string()\n                                    .describe('Option ID.')\n                                    .min(1)\n                                    .max(36),\n                                  choiceId: z\n                                    .string()\n                                    .describe('Choice ID.')\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    ),\n                                })\n                                .describe(\n                                  \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                                )\n                                .optional(),\n                              optionChoiceNames: z\n                                .object({\n                                  optionName: z\n                                    .string()\n                                    .describe('Option name.')\n                                    .min(1)\n                                    .optional(),\n                                  choiceName: z\n                                    .string()\n                                    .describe('Choice name.')\n                                    .min(1)\n                                    .optional(),\n                                  renderType: z\n                                    .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                                )\n                                .optional(),\n                            })\n                          )\n                          .min(0)\n                          .max(6)\n                          .optional(),\n                        price: z\n                          .object({\n                            actualPrice: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                \"Variant's current selling price. Must be greater than or equal to 0.\"\n                              ),\n                            compareAtPrice: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                              )\n                              .optional(),\n                            priceAfterDiscount: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                              )\n                              .optional(),\n                          })\n                          .describe('Variant price.'),\n                        revenueDetails: z\n                          .object({\n                            cost: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe('Item cost.')\n                              .optional(),\n                            profit: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                              )\n                              .optional(),\n                            profitMargin: z\n                              .number()\n                              .describe(\n                                'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                              )\n                              .min(0)\n                              .max(1)\n                              .optional(),\n                          })\n                          .describe(\n                            'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                          )\n                          .optional(),\n                        media: z\n                          .intersection(\n                            z.object({\n                              altText: z\n                                .string()\n                                .describe('Image alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              displayName: z\n                                .string()\n                                .describe(\n                                  \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                )\n                                .max(80)\n                                .optional()\n                                .nullable(),\n                              mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                              thumbnail: z\n                                .object({\n                                  url: z\n                                    .string()\n                                    .describe('Thumbnail url.')\n                                    .url()\n                                    .optional(),\n                                  height: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail height.')\n                                    .optional(),\n                                  width: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail width.')\n                                    .optional(),\n                                  altText: z\n                                    .string()\n                                    .describe('Thumbnail alt text.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                )\n                                .optional(),\n                              uploadId: z\n                                .string()\n                                .describe(\n                                  'ID used to upload media to Wix Media Manager.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                            }),\n                            z.intersection(\n                              z.xor([\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z.never().optional(),\n                                }),\n                                z.object({\n                                  url: z.never().optional(),\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Set media by ID of an existing file in Wix Media Manager.'\n                                    )\n                                    .min(1)\n                                    .max(200),\n                                }),\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z\n                                    .string()\n                                    .describe(\n                                      'Set media using an external media URL.'\n                                    )\n                                    .url(),\n                                }),\n                              ]),\n                              z.xor([\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z.never().optional(),\n                                }),\n                                z.object({\n                                  video: z.never().optional(),\n                                  image: z\n                                    .string()\n                                    .describe(\n                                      \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                    ),\n                                }),\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z\n                                    .string()\n                                    .describe(\n                                      \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                    ),\n                                }),\n                              ])\n                            )\n                          )\n                          .describe('Variant media.')\n                          .optional(),\n                        subscriptionPricesInfo: z\n                          .object({\n                            subscriptionPrices: z\n                              .array(\n                                z.object({\n                                  subscriptionId: z\n                                    .string()\n                                    .describe('Subscription ID.')\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                  price: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                    )\n                                    .optional(),\n                                  pricePerUnit: z\n                                    .object({\n                                      value: z\n                                        .string()\n                                        .describe(\n                                          'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                        )\n                                        .optional(),\n                                      description: z\n                                        .string()\n                                        .describe(\n                                          'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                      priceAfterDiscount: z\n                                        .object({\n                                          amount: z\n                                            .string()\n                                            .describe(\n                                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                            )\n                                            .optional(),\n                                          formattedAmount: z\n                                            .string()\n                                            .describe(\n                                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                            )\n                                            .max(20)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                        )\n                                        .optional(),\n                                    })\n                                    .describe('Price per unit info.')\n                                    .optional(),\n                                  priceAfterDiscount: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                    )\n                                    .optional(),\n                                })\n                              )\n                              .max(6)\n                              .optional(),\n                          })\n                          .describe(\n                            'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        inventoryStatus: z\n                          .object({\n                            inStock: z\n                              .boolean()\n                              .describe('Whether the variant is in stock.')\n                              .optional(),\n                            preorderEnabled: z\n                              .boolean()\n                              .describe(\n                                'Whether preorder is enabled for this variant.'\n                              )\n                              .optional(),\n                          })\n                          .describe('Variant inventory status.')\n                          .optional(),\n                      }),\n                      z.xor([\n                        z.object({\n                          physicalProperties: z.never().optional(),\n                          digitalProperties: z.never().optional(),\n                        }),\n                        z.object({\n                          digitalProperties: z.never().optional(),\n                          physicalProperties: z\n                            .object({\n                              weight: z\n                                .number()\n                                .describe(\n                                  'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                                )\n                                .min(0)\n                                .max(999999999.99)\n                                .optional()\n                                .nullable(),\n                              pricePerUnit: z\n                                .object({\n                                  settings: z\n                                    .object({\n                                      quantity: z\n                                        .number()\n                                        .describe(\n                                          'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                        )\n                                        .min(0.01)\n                                        .max(999999999.99)\n                                        .optional(),\n                                      measurementUnit: z\n                                        .enum([\n                                          'UNSPECIFIED',\n                                          'ML',\n                                          'CL',\n                                          'L',\n                                          'CBM',\n                                          'MG',\n                                          'G',\n                                          'KG',\n                                          'MM',\n                                          'CM',\n                                          'M',\n                                          'SQM',\n                                          'OZ',\n                                          'LB',\n                                          'FLOZ',\n                                          'PT',\n                                          'QT',\n                                          'GAL',\n                                          'IN',\n                                          'FT',\n                                          'YD',\n                                          'SQFT',\n                                        ])\n                                        .describe(\n                                          'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                        )\n                                        .optional(),\n                                    })\n                                    .describe(\n                                      'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                    )\n                                    .optional(),\n                                  value: z\n                                    .string()\n                                    .describe(\n                                      \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                    )\n                                    .optional(),\n                                  description: z\n                                    .string()\n                                    .describe(\n                                      'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(100)\n                                    .optional()\n                                    .nullable(),\n                                  priceAfterDiscount: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                                )\n                                .optional(),\n                              productDimensions: z\n                                .object({\n                                  length: z\n                                    .string()\n                                    .describe(\n                                      'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  width: z\n                                    .string()\n                                    .describe(\n                                      'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  height: z\n                                    .string()\n                                    .describe(\n                                      'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  unit: z\n                                    .enum([\n                                      'UNKNOWN_DIMENSIONS_UNIT',\n                                      'MM',\n                                      'CM',\n                                      'M',\n                                      'IN',\n                                      'FT',\n                                      'YD',\n                                    ])\n                                    .describe(\n                                      'Unit of measurement for dimensions (length, width, height).'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Product dimensions (length, width, height of the physical product).'\n                                )\n                                .optional(),\n                              packageDimensions: z\n                                .object({\n                                  length: z\n                                    .string()\n                                    .describe(\n                                      'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  width: z\n                                    .string()\n                                    .describe(\n                                      'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  height: z\n                                    .string()\n                                    .describe(\n                                      'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  unit: z\n                                    .enum([\n                                      'UNKNOWN_DIMENSIONS_UNIT',\n                                      'MM',\n                                      'CM',\n                                      'M',\n                                      'IN',\n                                      'FT',\n                                      'YD',\n                                    ])\n                                    .describe(\n                                      'Unit of measurement for dimensions (length, width, height).'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Package dimensions (length, width, height of the shipping package).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Physical properties. Must be passed when `productType: PHYSICAL`'\n                            ),\n                        }),\n                        z.object({\n                          physicalProperties: z.never().optional(),\n                          digitalProperties: z\n                            .object({\n                              digitalFile: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe('Media ID in media manager.')\n                                    .min(1)\n                                    .max(100)\n                                    .optional(),\n                                  fileName: z\n                                    .string()\n                                    .describe('Original file name.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional(),\n                                  fileSize: z\n                                    .string()\n                                    .describe('Original file size.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                  fileType: z\n                                    .enum([\n                                      'UNSPECIFIED',\n                                      'SECURE_PICTURE',\n                                      'SECURE_VIDEO',\n                                      'SECURE_DOCUMENT',\n                                      'SECURE_MUSIC',\n                                      'SECURE_ARCHIVE',\n                                      'SECURE_RAW',\n                                    ])\n                                    .describe('File type.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Digital properties. Must be passed when `productType: DIGITAL`'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\n                      'The variant with the lowest `actualPrice` among visible variants for this product.\\n\\nHidden variants are excluded; ties are broken by variant order. Empty if the product has no visible variants.\\n> **Note:** Returned only when you pass `\"MIN_PRICE_VARIANT\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                })\n                .describe('The total number of variants for the product.')\n                .optional(),\n            }),\n            z.xor([\n              z.object({ physicalProperties: z.never().optional() }),\n              z.object({\n                physicalProperties: z\n                  .object({\n                    pricePerUnit: z\n                      .object({\n                        quantity: z\n                          .number()\n                          .describe(\n                            'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                          )\n                          .min(0.01)\n                          .max(999999999.99)\n                          .optional(),\n                        measurementUnit: z\n                          .enum([\n                            'UNSPECIFIED',\n                            'ML',\n                            'CL',\n                            'L',\n                            'CBM',\n                            'MG',\n                            'G',\n                            'KG',\n                            'MM',\n                            'CM',\n                            'M',\n                            'SQM',\n                            'OZ',\n                            'LB',\n                            'FLOZ',\n                            'PT',\n                            'QT',\n                            'GAL',\n                            'IN',\n                            'FT',\n                            'YD',\n                            'SQFT',\n                          ])\n                          .describe(\n                            'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n                      )\n                      .optional(),\n                    fulfillerId: z\n                      .string()\n                      .describe('Fulfiller ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    shippingWeightRange: z\n                      .object({\n                        minValue: z\n                          .number()\n                          .describe(\n                            'Minimum weight across all variants associated with this product.'\n                          )\n                          .min(0)\n                          .max(999999999.99)\n                          .optional(),\n                        maxValue: z\n                          .number()\n                          .describe(\n                            'Maximum weight across all variants associated with this product.'\n                          )\n                          .min(0)\n                          .max(999999999.99)\n                          .optional(),\n                      })\n                      .describe(\n                        'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n                      )\n                      .optional(),\n                    pricePerUnitRange: z\n                      .object({\n                        minValue: z\n                          .object({\n                            value: z\n                              .string()\n                              .describe(\n                                \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                              )\n                              .optional(),\n                            description: z\n                              .string()\n                              .describe(\n                                'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                              )\n                              .max(100)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Minimum price per unit across all variants.'\n                          )\n                          .optional(),\n                        maxValue: z\n                          .object({\n                            value: z\n                              .string()\n                              .describe(\n                                \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                              )\n                              .optional(),\n                            description: z\n                              .string()\n                              .describe(\n                                'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                              )\n                              .max(100)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Maximum price per unit across all variants.'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n                      )\n                      .optional(),\n                    weightMeasurementUnitInfo: z\n                      .object({\n                        weightMeasurementUnit: z\n                          .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                          .describe('Weight measurement unit.')\n                          .optional(),\n                      })\n                      .describe(\n                        'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    deliveryProfileId: z\n                      .string()\n                      .describe('Delivery profile ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe(\n                    'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n                  ),\n              }),\n            ])\n          )\n          .describe('Product to update.'),\n      })\n    )\n    .min(1)\n    .max(100),\n  options: z\n    .object({\n      returnEntity: z\n        .boolean()\n        .describe(\n          'Whether to return the full product entities in the response.\\n\\nDefault: `false`'\n        )\n        .optional(),\n      fields: z\n        .array(\n          z.enum([\n            'URL',\n            'CURRENCY',\n            'INFO_SECTION',\n            'MERCHANT_DATA',\n            'PLAIN_DESCRIPTION',\n            'INFO_SECTION_PLAIN_DESCRIPTION',\n            'SUBSCRIPTION_PRICES_INFO',\n            'BREADCRUMBS_INFO',\n            'WEIGHT_MEASUREMENT_UNIT_INFO',\n            'VARIANT_OPTION_CHOICE_NAMES',\n            'MEDIA_ITEMS_INFO',\n            'DESCRIPTION',\n            'DIRECT_CATEGORIES_INFO',\n            'ALL_CATEGORIES_INFO',\n            'INFO_SECTION_DESCRIPTION',\n            'THUMBNAIL',\n            'PRODUCT_CHOICES_MEDIA_REFERENCES',\n            'PRODUCT_CHOICES_DISPLAY_IMAGE',\n            'MIN_PRICE_VARIANT',\n            'DISCOUNT_INFO',\n          ])\n        )\n        .max(100)\n        .optional(),\n    })\n    .optional(),\n});\nexport const BulkUpdateProductsResponse = z.object({\n  results: z\n    .array(\n      z.object({\n        itemMetadata: z\n          .object({\n            _id: z\n              .string()\n              .describe(\n                \"Item ID. Should always be available, unless it's impossible (for example, when failing to create an item).\"\n              )\n              .min(1)\n              .max(36)\n              .optional()\n              .nullable(),\n            originalIndex: z\n              .number()\n              .int()\n              .describe(\n                'Index of the item within the request array. Allows for correlation between request and response items.'\n              )\n              .optional(),\n            success: z\n              .boolean()\n              .describe(\n                'Whether the requested action was successful for this item. When `false`, the `error` field is populated.'\n              )\n              .optional(),\n            error: z\n              .object({\n                code: z.string().describe('Error code.').optional(),\n                description: z\n                  .string()\n                  .describe('Description of the error.')\n                  .optional(),\n                data: z\n                  .record(z.string(), z.any())\n                  .describe('Data related to the error.')\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Details about the error in case of failure.')\n              .optional(),\n          })\n          .describe('Information about successful action or error for failure.')\n          .optional(),\n        item: z\n          .intersection(\n            z.object({\n              _id: z\n                .string()\n                .describe('Product ID.')\n                .min(1)\n                .max(36)\n                .optional()\n                .nullable(),\n              revision: z\n                .string()\n                .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                .describe(\n                  'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product.'\n                )\n                .optional()\n                .nullable(),\n              _createdDate: z\n                .date()\n                .describe('Date and time the product was created.')\n                .optional()\n                .nullable(),\n              _updatedDate: z\n                .date()\n                .describe('Date and time the product was updated.')\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Product name. Translatable.')\n                .min(1)\n                .max(80)\n                .optional()\n                .nullable(),\n              slug: z\n                .string()\n                .describe(\n                  'Product slug. A URL-friendly identifier used in the product page address.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n                )\n                .min(1)\n                .max(300)\n                .optional()\n                .nullable(),\n              url: z\n                .string()\n                .describe(\n                  'URL to the site\\'s product page.\\n\\n> **Note:** Returned only when you pass `\"URL\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              description: z\n                .any()\n                .describe(\n                  'Product description using rich content.\\n> **Note:** Returned only when you pass `\"DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                )\n                .optional(),\n              plainDescription: z\n                .string()\n                .describe(\n                  'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                )\n                .max(16000)\n                .optional()\n                .nullable(),\n              visible: z\n                .boolean()\n                .describe(\n                  \"Whether the product is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the default variant's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                )\n                .optional()\n                .nullable(),\n              visibleInPos: z\n                .boolean()\n                .describe(\n                  'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n                )\n                .optional()\n                .nullable(),\n              media: z\n                .object({\n                  main: z\n                    .intersection(\n                      z.object({\n                        altText: z\n                          .string()\n                          .describe('Image alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        displayName: z\n                          .string()\n                          .describe(\n                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                          )\n                          .max(80)\n                          .optional()\n                          .nullable(),\n                        mediaType: z\n                          .enum(['IMAGE', 'VIDEO'])\n                          .describe('Media type.')\n                          .optional(),\n                        thumbnail: z\n                          .object({\n                            url: z\n                              .string()\n                              .describe('Thumbnail url.')\n                              .url()\n                              .optional(),\n                            height: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail height.')\n                              .optional(),\n                            width: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail width.')\n                              .optional(),\n                            altText: z\n                              .string()\n                              .describe('Thumbnail alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        uploadId: z\n                          .string()\n                          .describe(\n                            'ID used to upload media to Wix Media Manager.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                      }),\n                      z.intersection(\n                        z.xor([\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z.never().optional(),\n                          }),\n                          z.object({\n                            url: z.never().optional(),\n                            _id: z\n                              .string()\n                              .describe(\n                                'Set media by ID of an existing file in Wix Media Manager.'\n                              )\n                              .min(1)\n                              .max(200),\n                          }),\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z\n                              .string()\n                              .describe(\n                                'Set media using an external media URL.'\n                              )\n                              .url(),\n                          }),\n                        ]),\n                        z.xor([\n                          z.object({\n                            image: z.never().optional(),\n                            video: z.never().optional(),\n                          }),\n                          z.object({\n                            video: z.never().optional(),\n                            image: z\n                              .string()\n                              .describe(\n                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                              ),\n                          }),\n                          z.object({\n                            image: z.never().optional(),\n                            video: z\n                              .string()\n                              .describe(\n                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                    .describe(\n                      'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n                    )\n                    .optional(),\n                  itemsInfo: z\n                    .object({\n                      items: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              altText: z\n                                .string()\n                                .describe('Image alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              displayName: z\n                                .string()\n                                .describe(\n                                  \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                )\n                                .max(80)\n                                .optional()\n                                .nullable(),\n                              mediaType: z\n                                .enum(['IMAGE', 'VIDEO'])\n                                .describe('Media type.')\n                                .optional(),\n                              thumbnail: z\n                                .object({\n                                  url: z\n                                    .string()\n                                    .describe('Thumbnail url.')\n                                    .url()\n                                    .optional(),\n                                  height: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail height.')\n                                    .optional(),\n                                  width: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail width.')\n                                    .optional(),\n                                  altText: z\n                                    .string()\n                                    .describe('Thumbnail alt text.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                )\n                                .optional(),\n                              uploadId: z\n                                .string()\n                                .describe(\n                                  'ID used to upload media to Wix Media Manager.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                            }),\n                            z.intersection(\n                              z.xor([\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z.never().optional(),\n                                }),\n                                z.object({\n                                  url: z.never().optional(),\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Set media by ID of an existing file in Wix Media Manager.'\n                                    )\n                                    .min(1)\n                                    .max(200),\n                                }),\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z\n                                    .string()\n                                    .describe(\n                                      'Set media using an external media URL.'\n                                    )\n                                    .url(),\n                                }),\n                              ]),\n                              z.xor([\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z.never().optional(),\n                                }),\n                                z.object({\n                                  video: z.never().optional(),\n                                  image: z\n                                    .string()\n                                    .describe(\n                                      \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                    ),\n                                }),\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z\n                                    .string()\n                                    .describe(\n                                      \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                    ),\n                                }),\n                              ])\n                            )\n                          )\n                        )\n                        .max(50)\n                        .optional(),\n                    })\n                    .describe(\n                      'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Product media items. For a detailed explanation of product media, see [About Product Media](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/about-product-media).'\n                )\n                .optional(),\n              seoData: z\n                .object({\n                  tags: z\n                    .array(\n                      z.object({\n                        type: z\n                          .string()\n                          .describe(\n                            'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                          )\n                          .optional(),\n                        props: z\n                          .record(z.string(), z.any())\n                          .describe(\n                            'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                          )\n                          .optional()\n                          .nullable(),\n                        meta: z\n                          .record(z.string(), z.any())\n                          .describe(\n                            'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                          )\n                          .optional()\n                          .nullable(),\n                        children: z\n                          .string()\n                          .describe(\n                            'SEO tag inner content. For example, `<title> inner content </title>`.'\n                          )\n                          .optional(),\n                        custom: z\n                          .boolean()\n                          .describe(\n                            'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                          )\n                          .optional(),\n                        disabled: z\n                          .boolean()\n                          .describe(\n                            \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                          )\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                  settings: z\n                    .object({\n                      preventAutoRedirect: z\n                        .boolean()\n                        .describe(\n                          'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n                        )\n                        .optional(),\n                      keywords: z\n                        .array(\n                          z.object({\n                            term: z\n                              .string()\n                              .describe('Keyword value.')\n                              .optional(),\n                            isMain: z\n                              .boolean()\n                              .describe(\n                                'Whether the keyword is the main focus keyword.'\n                              )\n                              .optional(),\n                            origin: z\n                              .string()\n                              .describe(\n                                'The source that added the keyword terms to the SEO settings.'\n                              )\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                        )\n                        .max(5)\n                        .optional(),\n                    })\n                    .describe('SEO general settings.')\n                    .optional(),\n                })\n                .describe('Product SEO data.')\n                .optional(),\n              taxGroupId: z\n                .string()\n                .describe(\n                  '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              options: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe(\n                          'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n                        )\n                        .min(1)\n                        .max(36)\n                        .optional()\n                        .nullable(),\n                      name: z\n                        .string()\n                        .describe('Option name.')\n                        .min(1)\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                      optionRenderType: z\n                        .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                        .describe('Option render type.')\n                        .optional(),\n                      key: z\n                        .string()\n                        .describe(\n                          'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                        )\n                        .min(1)\n                        .max(50)\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({ choicesSettings: z.never().optional() }),\n                      z.object({\n                        choicesSettings: z\n                          .object({\n                            choices: z\n                              .array(\n                                z.intersection(\n                                  z.object({\n                                    choiceId: z\n                                      .string()\n                                      .describe('Choice ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    linkedMedia: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({\n                                            altText: z\n                                              .string()\n                                              .describe('Image alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                            displayName: z\n                                              .string()\n                                              .describe(\n                                                \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                              )\n                                              .max(80)\n                                              .optional()\n                                              .nullable(),\n                                            mediaType: z\n                                              .enum(['IMAGE', 'VIDEO'])\n                                              .describe('Media type.')\n                                              .optional(),\n                                            thumbnail: z\n                                              .object({\n                                                url: z\n                                                  .string()\n                                                  .describe('Thumbnail url.')\n                                                  .url()\n                                                  .optional(),\n                                                height: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail height.')\n                                                  .optional(),\n                                                width: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail width.')\n                                                  .optional(),\n                                                altText: z\n                                                  .string()\n                                                  .describe(\n                                                    'Thumbnail alt text.'\n                                                  )\n                                                  .min(1)\n                                                  .max(1000)\n                                                  .optional()\n                                                  .nullable(),\n                                              })\n                                              .describe(\n                                                'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .optional(),\n                                            uploadId: z\n                                              .string()\n                                              .describe(\n                                                'ID used to upload media to Wix Media Manager.'\n                                              )\n                                              .regex(\n                                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                                'Must be a valid GUID'\n                                              )\n                                              .optional(),\n                                          }),\n                                          z.intersection(\n                                            z.xor([\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                url: z.never().optional(),\n                                                _id: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media by ID of an existing file in Wix Media Manager.'\n                                                  )\n                                                  .min(1)\n                                                  .max(200),\n                                              }),\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media using an external media URL.'\n                                                  )\n                                                  .url(),\n                                              }),\n                                            ]),\n                                            z.xor([\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                video: z.never().optional(),\n                                                image: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                                  ),\n                                              }),\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                                  ),\n                                              }),\n                                            ])\n                                          )\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                    choiceType: z\n                                      .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                      .describe('Choice type.')\n                                      .optional(),\n                                    key: z\n                                      .string()\n                                      .describe(\n                                        'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                      )\n                                      .min(1)\n                                      .max(50)\n                                      .optional(),\n                                    name: z\n                                      .string()\n                                      .describe(\n                                        'Choice name. For text choices, this field also contains the choice value.'\n                                      )\n                                      .min(1)\n                                      .max(50)\n                                      .optional()\n                                      .nullable(),\n                                    inStock: z\n                                      .boolean()\n                                      .describe(\n                                        'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                                      )\n                                      .optional(),\n                                    visible: z\n                                      .boolean()\n                                      .describe(\n                                        'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                                      )\n                                      .optional(),\n                                    displayImage: z\n                                      .string()\n                                      .describe(\n                                        'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                      )\n                                      .optional(),\n                                    media: z\n                                      .object({\n                                        items: z\n                                          .array(\n                                            z.intersection(\n                                              z.object({}),\n                                              z.xor([\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z.never().optional(),\n                                                }),\n                                                z.object({\n                                                  url: z.never().optional(),\n                                                  mediaId: z\n                                                    .string()\n                                                    .describe(\n                                                      'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                    )\n                                                    .min(1)\n                                                    .max(200),\n                                                }),\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z\n                                                    .string()\n                                                    .describe(\n                                                      'External media URL. Can be used only on write.'\n                                                    )\n                                                    .url(),\n                                                }),\n                                              ])\n                                            )\n                                          )\n                                          .max(15)\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                      )\n                                      .optional(),\n                                  }),\n                                  z.xor([\n                                    z.object({\n                                      colorCode: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      colorCode: z\n                                        .string()\n                                        .describe(\n                                          'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                                        )\n                                        .min(3)\n                                        .max(20),\n                                    }),\n                                  ])\n                                )\n                              )\n                              .min(1)\n                              .max(100)\n                              .optional(),\n                          })\n                          .describe('Choices settings.'),\n                      }),\n                    ])\n                  )\n                )\n                .max(6)\n                .optional(),\n              modifiers: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe(\n                          'ID of a customization with `customizationType: MODIFIER`.'\n                        )\n                        .min(1)\n                        .max(36)\n                        .optional()\n                        .nullable(),\n                      name: z\n                        .string()\n                        .describe('Modifier title.')\n                        .min(1)\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                      modifierRenderType: z\n                        .enum(['FREE_TEXT', 'TEXT_CHOICES', 'SWATCH_CHOICES'])\n                        .describe('Modifier render type.')\n                        .optional(),\n                      mandatory: z\n                        .boolean()\n                        .describe(\n                          'Whether customer input is required for this modifier.'\n                        )\n                        .optional(),\n                      key: z\n                        .string()\n                        .describe(\n                          'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                        )\n                        .min(1)\n                        .max(50)\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({\n                        freeTextSettings: z.never().optional(),\n                        choicesSettings: z.never().optional(),\n                      }),\n                      z.object({\n                        choicesSettings: z.never().optional(),\n                        freeTextSettings: z\n                          .object({\n                            minCharCount: z\n                              .number()\n                              .int()\n                              .describe('Minimum number of characters.')\n                              .optional(),\n                            maxCharCount: z\n                              .number()\n                              .int()\n                              .describe('Maximum number of characters.')\n                              .max(500)\n                              .optional(),\n                            defaultAddedPrice: z\n                              .string()\n                              .describe(\n                                \"Default amount to be added to the product's price.\"\n                              )\n                              .optional()\n                              .nullable(),\n                            title: z\n                              .string()\n                              .describe(\n                                'Title of the text to be input by the customer.'\n                              )\n                              .min(1)\n                              .max(150)\n                              .optional(),\n                            key: z\n                              .string()\n                              .describe(\n                                'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                              )\n                              .min(1)\n                              .max(150)\n                              .optional(),\n                          })\n                          .describe('Free text modifier settings.'),\n                      }),\n                      z.object({\n                        freeTextSettings: z.never().optional(),\n                        choicesSettings: z\n                          .object({\n                            choices: z\n                              .array(\n                                z.intersection(\n                                  z.object({\n                                    choiceId: z\n                                      .string()\n                                      .describe('Choice ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    linkedMedia: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({\n                                            altText: z\n                                              .string()\n                                              .describe('Image alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                            displayName: z\n                                              .string()\n                                              .describe(\n                                                \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                              )\n                                              .max(80)\n                                              .optional()\n                                              .nullable(),\n                                            mediaType: z\n                                              .enum(['IMAGE', 'VIDEO'])\n                                              .describe('Media type.')\n                                              .optional(),\n                                            thumbnail: z\n                                              .object({\n                                                url: z\n                                                  .string()\n                                                  .describe('Thumbnail url.')\n                                                  .url()\n                                                  .optional(),\n                                                height: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail height.')\n                                                  .optional(),\n                                                width: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail width.')\n                                                  .optional(),\n                                                altText: z\n                                                  .string()\n                                                  .describe(\n                                                    'Thumbnail alt text.'\n                                                  )\n                                                  .min(1)\n                                                  .max(1000)\n                                                  .optional()\n                                                  .nullable(),\n                                              })\n                                              .describe(\n                                                'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .optional(),\n                                            uploadId: z\n                                              .string()\n                                              .describe(\n                                                'ID used to upload media to Wix Media Manager.'\n                                              )\n                                              .regex(\n                                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                                'Must be a valid GUID'\n                                              )\n                                              .optional(),\n                                          }),\n                                          z.intersection(\n                                            z.xor([\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                url: z.never().optional(),\n                                                _id: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media by ID of an existing file in Wix Media Manager.'\n                                                  )\n                                                  .min(1)\n                                                  .max(200),\n                                              }),\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media using an external media URL.'\n                                                  )\n                                                  .url(),\n                                              }),\n                                            ]),\n                                            z.xor([\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                video: z.never().optional(),\n                                                image: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                                  ),\n                                              }),\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                                  ),\n                                              }),\n                                            ])\n                                          )\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                    choiceType: z\n                                      .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                      .describe('Choice type.')\n                                      .optional(),\n                                    key: z\n                                      .string()\n                                      .describe(\n                                        'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                      )\n                                      .min(1)\n                                      .max(50)\n                                      .optional(),\n                                    name: z\n                                      .string()\n                                      .describe('Choice name.')\n                                      .min(1)\n                                      .max(50)\n                                      .optional()\n                                      .nullable(),\n                                    addedPrice: z\n                                      .string()\n                                      .describe('Added price.')\n                                      .optional()\n                                      .nullable(),\n                                    displayImage: z\n                                      .string()\n                                      .describe(\n                                        'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                      )\n                                      .optional(),\n                                    media: z\n                                      .object({\n                                        items: z\n                                          .array(\n                                            z.intersection(\n                                              z.object({}),\n                                              z.xor([\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z.never().optional(),\n                                                }),\n                                                z.object({\n                                                  url: z.never().optional(),\n                                                  mediaId: z\n                                                    .string()\n                                                    .describe(\n                                                      'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                    )\n                                                    .min(1)\n                                                    .max(200),\n                                                }),\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z\n                                                    .string()\n                                                    .describe(\n                                                      'External media URL. Can be used only on write.'\n                                                    )\n                                                    .url(),\n                                                }),\n                                              ])\n                                            )\n                                          )\n                                          .max(15)\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                      )\n                                      .optional(),\n                                  }),\n                                  z.xor([\n                                    z.object({\n                                      colorCode: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      colorCode: z\n                                        .string()\n                                        .describe(\n                                          'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                                        )\n                                        .min(3)\n                                        .max(20),\n                                    }),\n                                  ])\n                                )\n                              )\n                              .min(1)\n                              .max(100)\n                              .optional(),\n                          })\n                          .describe('Choice settings.'),\n                      }),\n                    ])\n                  )\n                )\n                .max(10)\n                .optional(),\n              brand: z\n                .object({\n                  _id: z\n                    .string()\n                    .describe('Brand ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Brand name.')\n                    .max(50)\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  \"Product [brand](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/brands-v3/introduction).\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n                )\n                .optional(),\n              infoSections: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Info section ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    uniqueName: z\n                      .string()\n                      .describe(\n                        'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                      )\n                      .max(100)\n                      .optional()\n                      .nullable(),\n                    title: z\n                      .string()\n                      .describe(\n                        'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                      )\n                      .min(1)\n                      .max(50)\n                      .optional()\n                      .nullable(),\n                    description: z\n                      .any()\n                      .describe(\n                        'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                      )\n                      .optional(),\n                    plainDescription: z\n                      .string()\n                      .describe(\n                        'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                      )\n                      .max(16000)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(10)\n                .optional(),\n              ribbon: z\n                .object({\n                  _id: z\n                    .string()\n                    .describe('Ribbon ID.')\n                    .min(1)\n                    .max(36)\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Ribbon name.')\n                    .max(30)\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  \"Primary [ribbon](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/ribbons-v3/introduction) displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n                )\n                .optional(),\n              directCategoriesInfo: z\n                .object({\n                  categories: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('Category ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        index: z\n                          .number()\n                          .int()\n                          .describe(\n                            'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                          )\n                          .min(0)\n                          .max(200)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(2000)\n                    .optional(),\n                })\n                .describe(\n                  'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product.\\n\\nUpdated automatically when a product is added/removed from a category, when an item is moved within a category, or when a category is deleted.\\n> **Note:** Returned only when you pass `\"DIRECT_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              allCategoriesInfo: z\n                .object({\n                  categories: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('Category ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        index: z\n                          .number()\n                          .int()\n                          .describe(\n                            'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                          )\n                          .min(0)\n                          .max(200)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(2000)\n                    .optional(),\n                })\n                .describe(\n                  'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product, as well as their parent categories.\\n> **Note:** Returned only when you pass `\"ALL_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              mainCategoryId: z\n                .string()\n                .describe(\n                  'The ID of the product\\'s primary direct [category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction), which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              costRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum value.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum value.')\n                    .optional(),\n                })\n                .describe(\n                  'Product cost range - minimum and maximum costs of all product variants.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                )\n                .optional(),\n              inventory: z\n                .object({\n                  availabilityStatus: z\n                    .enum([\n                      'IN_STOCK',\n                      'OUT_OF_STOCK',\n                      'PARTIALLY_OUT_OF_STOCK',\n                    ])\n                    .describe('Current availability status.')\n                    .optional(),\n                  preorderStatus: z\n                    .enum(['ENABLED', 'DISABLED', 'PARTIALLY_ENABLED'])\n                    .describe('Current preorder status.')\n                    .optional(),\n                  preorderAvailability: z\n                    .enum(['ALL_VARIANTS', 'NO_VARIANTS', 'SOME_VARIANTS'])\n                    .describe('Preorder availability status.')\n                    .optional(),\n                })\n                .describe(\n                  'Product inventory info.\\n\\n> **Note:** This field reflects the aggregated inventory status from the default location only. Use the [Inventory Items API](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/inventory-items-v3/introduction) to manage inventory for specific locations. Learn more about [inventory management](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-inventory-management).'\n                )\n                .optional(),\n              productType: z\n                .enum(['PHYSICAL', 'DIGITAL'])\n                .describe(\n                  'Product type: `PHYSICAL` for tangible goods that require shipping, or `DIGITAL` for downloadable content.\\n\\nWhen passing `productType: PHYSICAL`, you must also pass `physicalProperties`. When passing `productType: DIGITAL`, you can optionally pass `digitalProperties` in each variant.'\n                )\n                .optional(),\n              handle: z\n                .string()\n                .describe(\n                  \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n                )\n                .min(1)\n                .max(100)\n                .optional()\n                .nullable(),\n              currency: z\n                .string()\n                .describe(\n                  'Currency used for the pricing of this product, in [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes) format.\\n\\nDefaults to the currency defined in the site settings, unless specified in the request\\'s `x-wix-currency` header.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                )\n                .optional()\n                .nullable(),\n              breadcrumbsInfo: z\n                .object({\n                  breadcrumbs: z\n                    .array(\n                      z.object({\n                        categoryId: z\n                          .string()\n                          .describe('Category ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        categoryName: z\n                          .string()\n                          .describe('Category name.')\n                          .min(1)\n                          .max(80)\n                          .optional(),\n                        categorySlug: z\n                          .string()\n                          .describe('Category slug.')\n                          .min(1)\n                          .max(100)\n                          .optional(),\n                      })\n                    )\n                    .max(5)\n                    .optional(),\n                })\n                .describe(\n                  'Breadcrumbs of the `mainCategoryId`. Used to navigate to parent [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction). Useful for building navigation UI and for SEO purposes.\\n> **Note:** Returned only when you pass `\"BREADCRUMBS_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              actualPriceRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum value.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum value.')\n                    .optional(),\n                })\n                .describe(\n                  'Minimum and maximum current selling prices across all product variants.'\n                )\n                .optional(),\n              compareAtPriceRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum value.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum value.')\n                    .optional(),\n                })\n                .describe(\n                  'Minimum and maximum compare-at prices (original prices before discounts) across all product variants. Used to show savings to customers.'\n                )\n                .optional(),\n              variantsInfo: z\n                .object({\n                  variants: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          _id: z\n                            .string()\n                            .describe('Variant ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          visible: z\n                            .boolean()\n                            .describe(\n                              \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                            )\n                            .optional()\n                            .nullable(),\n                          sku: z\n                            .string()\n                            .describe('Variant SKU (stock keeping unit).')\n                            .min(1)\n                            .max(40)\n                            .optional()\n                            .nullable(),\n                          barcode: z\n                            .string()\n                            .describe('Variant barcode.')\n                            .min(1)\n                            .max(40)\n                            .optional()\n                            .nullable(),\n                          choices: z\n                            .array(\n                              z.object({\n                                optionChoiceIds: z\n                                  .object({\n                                    optionId: z\n                                      .string()\n                                      .describe('Option ID.')\n                                      .min(1)\n                                      .max(36)\n                                      .optional(),\n                                    choiceId: z\n                                      .string()\n                                      .describe('Choice ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                                  )\n                                  .optional(),\n                                optionChoiceNames: z\n                                  .object({\n                                    optionName: z\n                                      .string()\n                                      .describe('Option name.')\n                                      .min(1)\n                                      .optional(),\n                                    choiceName: z\n                                      .string()\n                                      .describe('Choice name.')\n                                      .min(1)\n                                      .optional(),\n                                    renderType: z\n                                      .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                      .describe(\n                                        'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .optional(),\n                              })\n                            )\n                            .min(0)\n                            .max(6)\n                            .optional(),\n                          price: z\n                            .object({\n                              actualPrice: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  \"Variant's current selling price. Must be greater than or equal to 0.\"\n                                )\n                                .optional(),\n                              compareAtPrice: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                                )\n                                .optional(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                            .describe('Variant price.')\n                            .optional(),\n                          revenueDetails: z\n                            .object({\n                              cost: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe('Item cost.')\n                                .optional(),\n                              profit: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                                )\n                                .optional(),\n                              profitMargin: z\n                                .number()\n                                .describe(\n                                  'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                                )\n                                .min(0)\n                                .max(1)\n                                .optional(),\n                            })\n                            .describe(\n                              'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                            )\n                            .optional(),\n                          media: z\n                            .intersection(\n                              z.object({\n                                altText: z\n                                  .string()\n                                  .describe('Image alt text.')\n                                  .min(1)\n                                  .max(1000)\n                                  .optional()\n                                  .nullable(),\n                                displayName: z\n                                  .string()\n                                  .describe(\n                                    \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                  )\n                                  .max(80)\n                                  .optional()\n                                  .nullable(),\n                                mediaType: z\n                                  .enum(['IMAGE', 'VIDEO'])\n                                  .describe('Media type.')\n                                  .optional(),\n                                thumbnail: z\n                                  .object({\n                                    url: z\n                                      .string()\n                                      .describe('Thumbnail url.')\n                                      .url()\n                                      .optional(),\n                                    height: z\n                                      .number()\n                                      .int()\n                                      .describe('Thumbnail height.')\n                                      .optional(),\n                                    width: z\n                                      .number()\n                                      .int()\n                                      .describe('Thumbnail width.')\n                                      .optional(),\n                                    altText: z\n                                      .string()\n                                      .describe('Thumbnail alt text.')\n                                      .min(1)\n                                      .max(1000)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .optional(),\n                                uploadId: z\n                                  .string()\n                                  .describe(\n                                    'ID used to upload media to Wix Media Manager.'\n                                  )\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional(),\n                              }),\n                              z.intersection(\n                                z.xor([\n                                  z.object({\n                                    _id: z.never().optional(),\n                                    url: z.never().optional(),\n                                  }),\n                                  z.object({\n                                    url: z.never().optional(),\n                                    _id: z\n                                      .string()\n                                      .describe(\n                                        'Set media by ID of an existing file in Wix Media Manager.'\n                                      )\n                                      .min(1)\n                                      .max(200),\n                                  }),\n                                  z.object({\n                                    _id: z.never().optional(),\n                                    url: z\n                                      .string()\n                                      .describe(\n                                        'Set media using an external media URL.'\n                                      )\n                                      .url(),\n                                  }),\n                                ]),\n                                z.xor([\n                                  z.object({\n                                    image: z.never().optional(),\n                                    video: z.never().optional(),\n                                  }),\n                                  z.object({\n                                    video: z.never().optional(),\n                                    image: z\n                                      .string()\n                                      .describe(\n                                        \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                      ),\n                                  }),\n                                  z.object({\n                                    image: z.never().optional(),\n                                    video: z\n                                      .string()\n                                      .describe(\n                                        \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                      ),\n                                  }),\n                                ])\n                              )\n                            )\n                            .describe('Variant media.')\n                            .optional(),\n                          subscriptionPricesInfo: z\n                            .object({\n                              subscriptionPrices: z\n                                .array(\n                                  z.object({\n                                    subscriptionId: z\n                                      .string()\n                                      .describe('Subscription ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional(),\n                                    price: z\n                                      .object({\n                                        amount: z\n                                          .string()\n                                          .describe(\n                                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                          )\n                                          .optional(),\n                                        formattedAmount: z\n                                          .string()\n                                          .describe(\n                                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                      )\n                                      .optional(),\n                                    pricePerUnit: z\n                                      .object({\n                                        value: z\n                                          .string()\n                                          .describe(\n                                            'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                          )\n                                          .optional(),\n                                        description: z\n                                          .string()\n                                          .describe(\n                                            'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                        priceAfterDiscount: z\n                                          .object({\n                                            amount: z\n                                              .string()\n                                              .describe(\n                                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                              )\n                                              .optional(),\n                                            formattedAmount: z\n                                              .string()\n                                              .describe(\n                                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .max(20)\n                                              .optional()\n                                              .nullable(),\n                                          })\n                                          .describe(\n                                            'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe('Price per unit info.')\n                                      .optional(),\n                                    priceAfterDiscount: z\n                                      .object({\n                                        amount: z\n                                          .string()\n                                          .describe(\n                                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                          )\n                                          .optional(),\n                                        formattedAmount: z\n                                          .string()\n                                          .describe(\n                                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                      )\n                                      .optional(),\n                                  })\n                                )\n                                .max(6)\n                                .optional(),\n                            })\n                            .describe(\n                              'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                          inventoryStatus: z\n                            .object({\n                              inStock: z\n                                .boolean()\n                                .describe('Whether the variant is in stock.')\n                                .optional(),\n                              preorderEnabled: z\n                                .boolean()\n                                .describe(\n                                  'Whether preorder is enabled for this variant.'\n                                )\n                                .optional(),\n                            })\n                            .describe('Variant inventory status.')\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({\n                            physicalProperties: z.never().optional(),\n                            digitalProperties: z.never().optional(),\n                          }),\n                          z.object({\n                            digitalProperties: z.never().optional(),\n                            physicalProperties: z\n                              .object({\n                                weight: z\n                                  .number()\n                                  .describe(\n                                    'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                                  )\n                                  .min(0)\n                                  .max(999999999.99)\n                                  .optional()\n                                  .nullable(),\n                                pricePerUnit: z\n                                  .object({\n                                    settings: z\n                                      .object({\n                                        quantity: z\n                                          .number()\n                                          .describe(\n                                            'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                          )\n                                          .min(0.01)\n                                          .max(999999999.99)\n                                          .optional(),\n                                        measurementUnit: z\n                                          .enum([\n                                            'UNSPECIFIED',\n                                            'ML',\n                                            'CL',\n                                            'L',\n                                            'CBM',\n                                            'MG',\n                                            'G',\n                                            'KG',\n                                            'MM',\n                                            'CM',\n                                            'M',\n                                            'SQM',\n                                            'OZ',\n                                            'LB',\n                                            'FLOZ',\n                                            'PT',\n                                            'QT',\n                                            'GAL',\n                                            'IN',\n                                            'FT',\n                                            'YD',\n                                            'SQFT',\n                                          ])\n                                          .describe(\n                                            'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                      )\n                                      .optional(),\n                                    value: z\n                                      .string()\n                                      .describe(\n                                        \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                      )\n                                      .optional(),\n                                    description: z\n                                      .string()\n                                      .describe(\n                                        'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(100)\n                                      .optional()\n                                      .nullable(),\n                                    priceAfterDiscount: z\n                                      .object({\n                                        amount: z\n                                          .string()\n                                          .describe(\n                                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                          )\n                                          .optional(),\n                                        formattedAmount: z\n                                          .string()\n                                          .describe(\n                                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                                  )\n                                  .optional(),\n                                productDimensions: z\n                                  .object({\n                                    length: z\n                                      .string()\n                                      .describe(\n                                        'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    width: z\n                                      .string()\n                                      .describe(\n                                        'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    height: z\n                                      .string()\n                                      .describe(\n                                        'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    unit: z\n                                      .enum([\n                                        'UNKNOWN_DIMENSIONS_UNIT',\n                                        'MM',\n                                        'CM',\n                                        'M',\n                                        'IN',\n                                        'FT',\n                                        'YD',\n                                      ])\n                                      .describe(\n                                        'Unit of measurement for dimensions (length, width, height).'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Product dimensions (length, width, height of the physical product).'\n                                  )\n                                  .optional(),\n                                packageDimensions: z\n                                  .object({\n                                    length: z\n                                      .string()\n                                      .describe(\n                                        'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    width: z\n                                      .string()\n                                      .describe(\n                                        'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    height: z\n                                      .string()\n                                      .describe(\n                                        'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    unit: z\n                                      .enum([\n                                        'UNKNOWN_DIMENSIONS_UNIT',\n                                        'MM',\n                                        'CM',\n                                        'M',\n                                        'IN',\n                                        'FT',\n                                        'YD',\n                                      ])\n                                      .describe(\n                                        'Unit of measurement for dimensions (length, width, height).'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Package dimensions (length, width, height of the shipping package).'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Physical properties. Must be passed when `productType: PHYSICAL`'\n                              ),\n                          }),\n                          z.object({\n                            physicalProperties: z.never().optional(),\n                            digitalProperties: z\n                              .object({\n                                digitalFile: z\n                                  .object({\n                                    _id: z\n                                      .string()\n                                      .describe('Media ID in media manager.')\n                                      .min(1)\n                                      .max(100)\n                                      .optional(),\n                                    fileName: z\n                                      .string()\n                                      .describe('Original file name.')\n                                      .min(1)\n                                      .max(1000)\n                                      .optional(),\n                                    fileSize: z\n                                      .string()\n                                      .describe('Original file size.')\n                                      .min(1)\n                                      .max(1000)\n                                      .optional()\n                                      .nullable(),\n                                    fileType: z\n                                      .enum([\n                                        'UNSPECIFIED',\n                                        'SECURE_PICTURE',\n                                        'SECURE_VIDEO',\n                                        'SECURE_DOCUMENT',\n                                        'SECURE_MUSIC',\n                                        'SECURE_ARCHIVE',\n                                        'SECURE_RAW',\n                                      ])\n                                      .describe('File type.')\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Digital properties. Must be passed when `productType: DIGITAL`'\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                    .min(1)\n                    .max(1000)\n                    .optional(),\n                })\n                .describe(\n                  'Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nYou must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).'\n                )\n                .optional(),\n              purchaseEligibility: z\n                .object({ userCriteria: z.enum(['MEMBERS_ONLY']).optional() })\n                .describe('Purchase eligibility settings for the product.')\n                .optional(),\n              additionalRibbons: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Ribbon ID.')\n                      .min(1)\n                      .max(36)\n                      .optional()\n                      .nullable(),\n                    name: z\n                      .string()\n                      .describe('Ribbon name.')\n                      .max(30)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(4)\n                .optional(),\n              extendedFields: z\n                .object({\n                  namespaces: z\n                    .record(z.string(), z.record(z.string(), z.any()))\n                    .describe(\n                      'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n                )\n                .optional(),\n              tags: z\n                .object({\n                  privateTags: z\n                    .object({ tagIds: z.array(z.string()).max(100).optional() })\n                    .describe(\n                      'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n                    )\n                    .optional(),\n                  publicTags: z\n                    .object({ tagIds: z.array(z.string()).max(100).optional() })\n                    .describe(\n                      'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n                    )\n                    .optional(),\n                })\n                .describe('Tags')\n                .optional(),\n              subscriptionDetails: z\n                .object({\n                  subscriptions: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          _id: z\n                            .string()\n                            .describe('Subscription ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          title: z\n                            .string()\n                            .describe('Subscription title.')\n                            .min(1)\n                            .max(20)\n                            .optional(),\n                          description: z\n                            .string()\n                            .describe('Subscription description.')\n                            .max(60)\n                            .optional()\n                            .nullable(),\n                          visible: z\n                            .boolean()\n                            .describe(\n                              'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                            )\n                            .optional()\n                            .nullable(),\n                          frequency: z\n                            .enum(['UNDEFINED', 'DAY', 'WEEK', 'MONTH', 'YEAR'])\n                            .describe(\n                              'Frequency of recurring payment.\\nFor example, if `frequency: MONTH` and `billingCycles: 6`; payment will be made monthly for 6 months.'\n                            )\n                            .optional(),\n                          interval: z\n                            .number()\n                            .int()\n                            .describe(\n                              'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                            )\n                            .min(1)\n                            .max(50)\n                            .optional()\n                            .nullable(),\n                          discount: z\n                            .intersection(\n                              z.object({\n                                type: z\n                                  .enum(['AMOUNT', 'PERCENT'])\n                                  .describe('Discount type.')\n                                  .optional(),\n                              }),\n                              z.xor([\n                                z.object({\n                                  amountOff: z.never().optional(),\n                                  percentOff: z.never().optional(),\n                                }),\n                                z.object({\n                                  percentOff: z.never().optional(),\n                                  amountOff: z\n                                    .string()\n                                    .describe(\n                                      'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                                    ),\n                                }),\n                                z.object({\n                                  amountOff: z.never().optional(),\n                                  percentOff: z\n                                    .number()\n                                    .describe(\n                                      'Percentage subtracted from the variant price when calculating subscription prices.'\n                                    )\n                                    .min(0.1)\n                                    .max(99.9),\n                                }),\n                              ])\n                            )\n                            .describe(\n                              'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                            )\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({\n                            autoRenewal: z.never().optional(),\n                            billingCycles: z.never().optional(),\n                          }),\n                          z.object({\n                            billingCycles: z.never().optional(),\n                            autoRenewal: z\n                              .boolean()\n                              .describe(\n                                'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                              ),\n                          }),\n                          z.object({\n                            autoRenewal: z.never().optional(),\n                            billingCycles: z\n                              .number()\n                              .int()\n                              .describe(\n                                'Number of billing cycles before subscription ends.'\n                              )\n                              .min(2)\n                              .max(999),\n                          }),\n                        ])\n                      )\n                    )\n                    .min(1)\n                    .max(6)\n                    .optional(),\n                  allowOneTimePurchases: z\n                    .boolean()\n                    .describe(\n                      'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n                    )\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n                )\n                .optional(),\n              variantSummary: z\n                .object({\n                  variantCount: z\n                    .number()\n                    .int()\n                    .describe('The total number of variants for the product.')\n                    .optional(),\n                  minPriceVariant: z\n                    .intersection(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('Variant ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        visible: z\n                          .boolean()\n                          .describe(\n                            \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                          )\n                          .optional()\n                          .nullable(),\n                        sku: z\n                          .string()\n                          .describe('Variant SKU (stock keeping unit).')\n                          .min(1)\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        barcode: z\n                          .string()\n                          .describe('Variant barcode.')\n                          .min(1)\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        choices: z\n                          .array(\n                            z.object({\n                              optionChoiceIds: z\n                                .object({\n                                  optionId: z\n                                    .string()\n                                    .describe('Option ID.')\n                                    .min(1)\n                                    .max(36)\n                                    .optional(),\n                                  choiceId: z\n                                    .string()\n                                    .describe('Choice ID.')\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                                )\n                                .optional(),\n                              optionChoiceNames: z\n                                .object({\n                                  optionName: z\n                                    .string()\n                                    .describe('Option name.')\n                                    .min(1)\n                                    .optional(),\n                                  choiceName: z\n                                    .string()\n                                    .describe('Choice name.')\n                                    .min(1)\n                                    .optional(),\n                                  renderType: z\n                                    .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                    .describe(\n                                      'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                                )\n                                .optional(),\n                            })\n                          )\n                          .min(0)\n                          .max(6)\n                          .optional(),\n                        price: z\n                          .object({\n                            actualPrice: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                \"Variant's current selling price. Must be greater than or equal to 0.\"\n                              )\n                              .optional(),\n                            compareAtPrice: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                              )\n                              .optional(),\n                            priceAfterDiscount: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                              )\n                              .optional(),\n                          })\n                          .describe('Variant price.')\n                          .optional(),\n                        revenueDetails: z\n                          .object({\n                            cost: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe('Item cost.')\n                              .optional(),\n                            profit: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                              )\n                              .optional(),\n                            profitMargin: z\n                              .number()\n                              .describe(\n                                'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                              )\n                              .min(0)\n                              .max(1)\n                              .optional(),\n                          })\n                          .describe(\n                            'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                          )\n                          .optional(),\n                        media: z\n                          .intersection(\n                            z.object({\n                              altText: z\n                                .string()\n                                .describe('Image alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              displayName: z\n                                .string()\n                                .describe(\n                                  \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                )\n                                .max(80)\n                                .optional()\n                                .nullable(),\n                              mediaType: z\n                                .enum(['IMAGE', 'VIDEO'])\n                                .describe('Media type.')\n                                .optional(),\n                              thumbnail: z\n                                .object({\n                                  url: z\n                                    .string()\n                                    .describe('Thumbnail url.')\n                                    .url()\n                                    .optional(),\n                                  height: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail height.')\n                                    .optional(),\n                                  width: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail width.')\n                                    .optional(),\n                                  altText: z\n                                    .string()\n                                    .describe('Thumbnail alt text.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                )\n                                .optional(),\n                              uploadId: z\n                                .string()\n                                .describe(\n                                  'ID used to upload media to Wix Media Manager.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                            }),\n                            z.intersection(\n                              z.xor([\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z.never().optional(),\n                                }),\n                                z.object({\n                                  url: z.never().optional(),\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Set media by ID of an existing file in Wix Media Manager.'\n                                    )\n                                    .min(1)\n                                    .max(200),\n                                }),\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z\n                                    .string()\n                                    .describe(\n                                      'Set media using an external media URL.'\n                                    )\n                                    .url(),\n                                }),\n                              ]),\n                              z.xor([\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z.never().optional(),\n                                }),\n                                z.object({\n                                  video: z.never().optional(),\n                                  image: z\n                                    .string()\n                                    .describe(\n                                      \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                    ),\n                                }),\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z\n                                    .string()\n                                    .describe(\n                                      \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                    ),\n                                }),\n                              ])\n                            )\n                          )\n                          .describe('Variant media.')\n                          .optional(),\n                        subscriptionPricesInfo: z\n                          .object({\n                            subscriptionPrices: z\n                              .array(\n                                z.object({\n                                  subscriptionId: z\n                                    .string()\n                                    .describe('Subscription ID.')\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                  price: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                    )\n                                    .optional(),\n                                  pricePerUnit: z\n                                    .object({\n                                      value: z\n                                        .string()\n                                        .describe(\n                                          'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                        )\n                                        .optional(),\n                                      description: z\n                                        .string()\n                                        .describe(\n                                          'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                      priceAfterDiscount: z\n                                        .object({\n                                          amount: z\n                                            .string()\n                                            .describe(\n                                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                            )\n                                            .optional(),\n                                          formattedAmount: z\n                                            .string()\n                                            .describe(\n                                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                            )\n                                            .max(20)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                        )\n                                        .optional(),\n                                    })\n                                    .describe('Price per unit info.')\n                                    .optional(),\n                                  priceAfterDiscount: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                    )\n                                    .optional(),\n                                })\n                              )\n                              .max(6)\n                              .optional(),\n                          })\n                          .describe(\n                            'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        inventoryStatus: z\n                          .object({\n                            inStock: z\n                              .boolean()\n                              .describe('Whether the variant is in stock.')\n                              .optional(),\n                            preorderEnabled: z\n                              .boolean()\n                              .describe(\n                                'Whether preorder is enabled for this variant.'\n                              )\n                              .optional(),\n                          })\n                          .describe('Variant inventory status.')\n                          .optional(),\n                      }),\n                      z.xor([\n                        z.object({\n                          physicalProperties: z.never().optional(),\n                          digitalProperties: z.never().optional(),\n                        }),\n                        z.object({\n                          digitalProperties: z.never().optional(),\n                          physicalProperties: z\n                            .object({\n                              weight: z\n                                .number()\n                                .describe(\n                                  'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                                )\n                                .min(0)\n                                .max(999999999.99)\n                                .optional()\n                                .nullable(),\n                              pricePerUnit: z\n                                .object({\n                                  settings: z\n                                    .object({\n                                      quantity: z\n                                        .number()\n                                        .describe(\n                                          'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                        )\n                                        .min(0.01)\n                                        .max(999999999.99)\n                                        .optional(),\n                                      measurementUnit: z\n                                        .enum([\n                                          'UNSPECIFIED',\n                                          'ML',\n                                          'CL',\n                                          'L',\n                                          'CBM',\n                                          'MG',\n                                          'G',\n                                          'KG',\n                                          'MM',\n                                          'CM',\n                                          'M',\n                                          'SQM',\n                                          'OZ',\n                                          'LB',\n                                          'FLOZ',\n                                          'PT',\n                                          'QT',\n                                          'GAL',\n                                          'IN',\n                                          'FT',\n                                          'YD',\n                                          'SQFT',\n                                        ])\n                                        .describe(\n                                          'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                        )\n                                        .optional(),\n                                    })\n                                    .describe(\n                                      'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                    )\n                                    .optional(),\n                                  value: z\n                                    .string()\n                                    .describe(\n                                      \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                    )\n                                    .optional(),\n                                  description: z\n                                    .string()\n                                    .describe(\n                                      'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(100)\n                                    .optional()\n                                    .nullable(),\n                                  priceAfterDiscount: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                                )\n                                .optional(),\n                              productDimensions: z\n                                .object({\n                                  length: z\n                                    .string()\n                                    .describe(\n                                      'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  width: z\n                                    .string()\n                                    .describe(\n                                      'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  height: z\n                                    .string()\n                                    .describe(\n                                      'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  unit: z\n                                    .enum([\n                                      'UNKNOWN_DIMENSIONS_UNIT',\n                                      'MM',\n                                      'CM',\n                                      'M',\n                                      'IN',\n                                      'FT',\n                                      'YD',\n                                    ])\n                                    .describe(\n                                      'Unit of measurement for dimensions (length, width, height).'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Product dimensions (length, width, height of the physical product).'\n                                )\n                                .optional(),\n                              packageDimensions: z\n                                .object({\n                                  length: z\n                                    .string()\n                                    .describe(\n                                      'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  width: z\n                                    .string()\n                                    .describe(\n                                      'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  height: z\n                                    .string()\n                                    .describe(\n                                      'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  unit: z\n                                    .enum([\n                                      'UNKNOWN_DIMENSIONS_UNIT',\n                                      'MM',\n                                      'CM',\n                                      'M',\n                                      'IN',\n                                      'FT',\n                                      'YD',\n                                    ])\n                                    .describe(\n                                      'Unit of measurement for dimensions (length, width, height).'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Package dimensions (length, width, height of the shipping package).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Physical properties. Must be passed when `productType: PHYSICAL`'\n                            ),\n                        }),\n                        z.object({\n                          physicalProperties: z.never().optional(),\n                          digitalProperties: z\n                            .object({\n                              digitalFile: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe('Media ID in media manager.')\n                                    .min(1)\n                                    .max(100)\n                                    .optional(),\n                                  fileName: z\n                                    .string()\n                                    .describe('Original file name.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional(),\n                                  fileSize: z\n                                    .string()\n                                    .describe('Original file size.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                  fileType: z\n                                    .enum([\n                                      'UNSPECIFIED',\n                                      'SECURE_PICTURE',\n                                      'SECURE_VIDEO',\n                                      'SECURE_DOCUMENT',\n                                      'SECURE_MUSIC',\n                                      'SECURE_ARCHIVE',\n                                      'SECURE_RAW',\n                                    ])\n                                    .describe('File type.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Digital properties. Must be passed when `productType: DIGITAL`'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\n                      'The variant with the lowest `actualPrice` among visible variants for this product.\\n\\nHidden variants are excluded; ties are broken by variant order. Empty if the product has no visible variants.\\n> **Note:** Returned only when you pass `\"MIN_PRICE_VARIANT\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                })\n                .describe('The total number of variants for the product.')\n                .optional(),\n            }),\n            z.xor([\n              z.object({ physicalProperties: z.never().optional() }),\n              z.object({\n                physicalProperties: z\n                  .object({\n                    pricePerUnit: z\n                      .object({\n                        quantity: z\n                          .number()\n                          .describe(\n                            'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                          )\n                          .min(0.01)\n                          .max(999999999.99)\n                          .optional(),\n                        measurementUnit: z\n                          .enum([\n                            'UNSPECIFIED',\n                            'ML',\n                            'CL',\n                            'L',\n                            'CBM',\n                            'MG',\n                            'G',\n                            'KG',\n                            'MM',\n                            'CM',\n                            'M',\n                            'SQM',\n                            'OZ',\n                            'LB',\n                            'FLOZ',\n                            'PT',\n                            'QT',\n                            'GAL',\n                            'IN',\n                            'FT',\n                            'YD',\n                            'SQFT',\n                          ])\n                          .describe(\n                            'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n                      )\n                      .optional(),\n                    fulfillerId: z\n                      .string()\n                      .describe('Fulfiller ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    shippingWeightRange: z\n                      .object({\n                        minValue: z\n                          .number()\n                          .describe(\n                            'Minimum weight across all variants associated with this product.'\n                          )\n                          .min(0)\n                          .max(999999999.99)\n                          .optional(),\n                        maxValue: z\n                          .number()\n                          .describe(\n                            'Maximum weight across all variants associated with this product.'\n                          )\n                          .min(0)\n                          .max(999999999.99)\n                          .optional(),\n                      })\n                      .describe(\n                        'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n                      )\n                      .optional(),\n                    pricePerUnitRange: z\n                      .object({\n                        minValue: z\n                          .object({\n                            value: z\n                              .string()\n                              .describe(\n                                \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                              )\n                              .optional(),\n                            description: z\n                              .string()\n                              .describe(\n                                'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                              )\n                              .max(100)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Minimum price per unit across all variants.'\n                          )\n                          .optional(),\n                        maxValue: z\n                          .object({\n                            value: z\n                              .string()\n                              .describe(\n                                \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                              )\n                              .optional(),\n                            description: z\n                              .string()\n                              .describe(\n                                'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                              )\n                              .max(100)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Maximum price per unit across all variants.'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n                      )\n                      .optional(),\n                    weightMeasurementUnitInfo: z\n                      .object({\n                        weightMeasurementUnit: z\n                          .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                          .describe('Weight measurement unit.')\n                          .optional(),\n                      })\n                      .describe(\n                        'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    deliveryProfileId: z\n                      .string()\n                      .describe('Delivery profile ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe(\n                    'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'Full product entity.\\n\\nReturned only if `returnEntity: true` is passed in the request.'\n          )\n          .optional(),\n      })\n    )\n    .min(1)\n    .max(100)\n    .optional(),\n  bulkActionMetadata: z\n    .object({\n      totalSuccesses: z\n        .number()\n        .int()\n        .describe('Number of items that were successfully processed.')\n        .optional(),\n      totalFailures: z\n        .number()\n        .int()\n        .describe(\"Number of items that couldn't be processed.\")\n        .optional(),\n      undetailedFailures: z\n        .number()\n        .int()\n        .describe(\n          'Number of failures without details because detailed failure threshold was exceeded.'\n        )\n        .optional(),\n    })\n    .describe('Bulk action metadata.')\n    .optional(),\n});\nexport const BulkUpdateProductsWithInventoryRequest = z.object({\n  products: z\n    .array(\n      z.object({\n        product: z\n          .intersection(\n            z.object({\n              _id: z.string().describe('Product ID.').min(1).max(36),\n              revision: z\n                .string()\n                .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                .describe(\n                  'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product with inventory.'\n                ),\n              name: z\n                .string()\n                .describe('Product name. Translatable.')\n                .min(1)\n                .max(80)\n                .optional()\n                .nullable(),\n              slug: z\n                .string()\n                .describe(\n                  'Product slug.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n                )\n                .min(1)\n                .max(300)\n                .optional()\n                .nullable(),\n              plainDescription: z\n                .string()\n                .describe(\n                  'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                )\n                .max(16000)\n                .optional()\n                .nullable(),\n              visible: z\n                .boolean()\n                .describe(\n                  'Whether the product is visible to site visitors.\\n\\nDefault: `true`'\n                )\n                .optional()\n                .nullable(),\n              visibleInPos: z\n                .boolean()\n                .describe(\n                  'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n                )\n                .optional()\n                .nullable(),\n              media: z\n                .object({\n                  main: z\n                    .intersection(\n                      z.object({\n                        altText: z\n                          .string()\n                          .describe('Image alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        displayName: z\n                          .string()\n                          .describe(\n                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                          )\n                          .max(80)\n                          .optional()\n                          .nullable(),\n                        mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                        thumbnail: z\n                          .object({\n                            url: z\n                              .string()\n                              .describe('Thumbnail url.')\n                              .url()\n                              .optional(),\n                            height: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail height.')\n                              .optional(),\n                            width: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail width.')\n                              .optional(),\n                            altText: z\n                              .string()\n                              .describe('Thumbnail alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        uploadId: z\n                          .string()\n                          .describe(\n                            'ID used to upload media to Wix Media Manager.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                      }),\n                      z.intersection(\n                        z.xor([\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z.never().optional(),\n                          }),\n                          z.object({\n                            url: z.never().optional(),\n                            _id: z\n                              .string()\n                              .describe(\n                                'Set media by ID of an existing file in Wix Media Manager.'\n                              )\n                              .min(1)\n                              .max(200),\n                          }),\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z\n                              .string()\n                              .describe(\n                                'Set media using an external media URL.'\n                              )\n                              .url(),\n                          }),\n                        ]),\n                        z.xor([\n                          z.object({\n                            image: z.never().optional(),\n                            video: z.never().optional(),\n                          }),\n                          z.object({\n                            video: z.never().optional(),\n                            image: z\n                              .string()\n                              .describe(\n                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                              ),\n                          }),\n                          z.object({\n                            image: z.never().optional(),\n                            video: z\n                              .string()\n                              .describe(\n                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                    .describe(\n                      'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n                    )\n                    .optional(),\n                  itemsInfo: z\n                    .object({\n                      items: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              altText: z\n                                .string()\n                                .describe('Image alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              displayName: z\n                                .string()\n                                .describe(\n                                  \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                )\n                                .max(80)\n                                .optional()\n                                .nullable(),\n                              mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                              thumbnail: z\n                                .object({\n                                  url: z\n                                    .string()\n                                    .describe('Thumbnail url.')\n                                    .url()\n                                    .optional(),\n                                  height: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail height.')\n                                    .optional(),\n                                  width: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail width.')\n                                    .optional(),\n                                  altText: z\n                                    .string()\n                                    .describe('Thumbnail alt text.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                )\n                                .optional(),\n                              uploadId: z\n                                .string()\n                                .describe(\n                                  'ID used to upload media to Wix Media Manager.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                            }),\n                            z.intersection(\n                              z.xor([\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z.never().optional(),\n                                }),\n                                z.object({\n                                  url: z.never().optional(),\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Set media by ID of an existing file in Wix Media Manager.'\n                                    )\n                                    .min(1)\n                                    .max(200),\n                                }),\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z\n                                    .string()\n                                    .describe(\n                                      'Set media using an external media URL.'\n                                    )\n                                    .url(),\n                                }),\n                              ]),\n                              z.xor([\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z.never().optional(),\n                                }),\n                                z.object({\n                                  video: z.never().optional(),\n                                  image: z\n                                    .string()\n                                    .describe(\n                                      \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                    ),\n                                }),\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z\n                                    .string()\n                                    .describe(\n                                      \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                    ),\n                                }),\n                              ])\n                            )\n                          )\n                        )\n                        .max(50)\n                        .optional(),\n                    })\n                    .describe(\n                      'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                })\n                .describe('Product media items.')\n                .optional(),\n              seoData: z\n                .object({\n                  tags: z\n                    .array(\n                      z.object({\n                        type: z\n                          .string()\n                          .describe(\n                            'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                          )\n                          .optional(),\n                        props: z\n                          .record(z.string(), z.any())\n                          .describe(\n                            'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                          )\n                          .optional()\n                          .nullable(),\n                        meta: z\n                          .record(z.string(), z.any())\n                          .describe(\n                            'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                          )\n                          .optional()\n                          .nullable(),\n                        children: z\n                          .string()\n                          .describe(\n                            'SEO tag inner content. For example, `<title> inner content </title>`.'\n                          )\n                          .optional(),\n                        custom: z\n                          .boolean()\n                          .describe(\n                            'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                          )\n                          .optional(),\n                        disabled: z\n                          .boolean()\n                          .describe(\n                            \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                          )\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                  settings: z\n                    .object({\n                      preventAutoRedirect: z\n                        .boolean()\n                        .describe(\n                          'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n                        )\n                        .optional(),\n                      keywords: z\n                        .array(\n                          z.object({\n                            term: z\n                              .string()\n                              .describe('Keyword value.')\n                              .optional(),\n                            isMain: z\n                              .boolean()\n                              .describe(\n                                'Whether the keyword is the main focus keyword.'\n                              )\n                              .optional(),\n                            origin: z\n                              .string()\n                              .describe(\n                                'The source that added the keyword terms to the SEO settings.'\n                              )\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                        )\n                        .max(5)\n                        .optional(),\n                    })\n                    .describe('SEO general settings.')\n                    .optional(),\n                })\n                .describe('Product SEO data.')\n                .optional(),\n              taxGroupId: z\n                .string()\n                .describe(\n                  '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              options: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe(\n                          'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n                        )\n                        .min(1)\n                        .max(36)\n                        .optional()\n                        .nullable(),\n                      name: z\n                        .string()\n                        .describe('Option name.')\n                        .min(1)\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                      optionRenderType: z\n                        .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                        .optional(),\n                      key: z\n                        .string()\n                        .describe(\n                          'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                        )\n                        .min(1)\n                        .max(50)\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({\n                        choicesSettings: z\n                          .object({\n                            choices: z\n                              .array(\n                                z.intersection(\n                                  z.object({\n                                    choiceId: z\n                                      .string()\n                                      .describe('Choice ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    linkedMedia: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({\n                                            altText: z\n                                              .string()\n                                              .describe('Image alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                            displayName: z\n                                              .string()\n                                              .describe(\n                                                \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                              )\n                                              .max(80)\n                                              .optional()\n                                              .nullable(),\n                                            mediaType: z\n                                              .enum(['IMAGE', 'VIDEO'])\n                                              .optional(),\n                                            thumbnail: z\n                                              .object({\n                                                url: z\n                                                  .string()\n                                                  .describe('Thumbnail url.')\n                                                  .url()\n                                                  .optional(),\n                                                height: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail height.')\n                                                  .optional(),\n                                                width: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail width.')\n                                                  .optional(),\n                                                altText: z\n                                                  .string()\n                                                  .describe(\n                                                    'Thumbnail alt text.'\n                                                  )\n                                                  .min(1)\n                                                  .max(1000)\n                                                  .optional()\n                                                  .nullable(),\n                                              })\n                                              .describe(\n                                                'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .optional(),\n                                            uploadId: z\n                                              .string()\n                                              .describe(\n                                                'ID used to upload media to Wix Media Manager.'\n                                              )\n                                              .regex(\n                                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                                'Must be a valid GUID'\n                                              )\n                                              .optional(),\n                                          }),\n                                          z.intersection(\n                                            z.xor([\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                url: z.never().optional(),\n                                                _id: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media by ID of an existing file in Wix Media Manager.'\n                                                  )\n                                                  .min(1)\n                                                  .max(200),\n                                              }),\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media using an external media URL.'\n                                                  )\n                                                  .url(),\n                                              }),\n                                            ]),\n                                            z.xor([\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                video: z.never().optional(),\n                                                image: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                                  ),\n                                              }),\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                                  ),\n                                              }),\n                                            ])\n                                          )\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                    choiceType: z\n                                      .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                      .optional(),\n                                    key: z\n                                      .string()\n                                      .describe(\n                                        'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                      )\n                                      .min(1)\n                                      .max(50)\n                                      .optional(),\n                                    name: z\n                                      .string()\n                                      .describe(\n                                        'Choice name. For text choices, this field also contains the choice value.'\n                                      )\n                                      .min(1)\n                                      .max(50)\n                                      .optional()\n                                      .nullable(),\n                                    inStock: z\n                                      .boolean()\n                                      .describe(\n                                        'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                                      )\n                                      .optional(),\n                                    visible: z\n                                      .boolean()\n                                      .describe(\n                                        'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                                      )\n                                      .optional(),\n                                    displayImage: z\n                                      .string()\n                                      .describe(\n                                        'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                      )\n                                      .optional(),\n                                    media: z\n                                      .object({\n                                        items: z\n                                          .array(\n                                            z.intersection(\n                                              z.object({}),\n                                              z.xor([\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z.never().optional(),\n                                                }),\n                                                z.object({\n                                                  url: z.never().optional(),\n                                                  mediaId: z\n                                                    .string()\n                                                    .describe(\n                                                      'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                    )\n                                                    .min(1)\n                                                    .max(200),\n                                                }),\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z\n                                                    .string()\n                                                    .describe(\n                                                      'External media URL. Can be used only on write.'\n                                                    )\n                                                    .url(),\n                                                }),\n                                              ])\n                                            )\n                                          )\n                                          .max(15)\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                      )\n                                      .optional(),\n                                  }),\n                                  z.xor([\n                                    z.object({\n                                      colorCode: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      colorCode: z\n                                        .string()\n                                        .describe(\n                                          'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                                        )\n                                        .min(3)\n                                        .max(20),\n                                    }),\n                                  ])\n                                )\n                              )\n                              .min(1)\n                              .max(100)\n                              .optional(),\n                          })\n                          .describe('Choices settings.'),\n                      }),\n                    ])\n                  )\n                )\n                .max(6)\n                .optional(),\n              modifiers: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe(\n                          'ID of a customization with `customizationType: MODIFIER`.'\n                        )\n                        .min(1)\n                        .max(36)\n                        .optional()\n                        .nullable(),\n                      name: z\n                        .string()\n                        .describe('Modifier title.')\n                        .min(1)\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                      modifierRenderType: z\n                        .enum(['FREE_TEXT', 'TEXT_CHOICES', 'SWATCH_CHOICES'])\n                        .optional(),\n                      mandatory: z\n                        .boolean()\n                        .describe(\n                          'Whether customer input is required for this modifier.'\n                        )\n                        .optional(),\n                      key: z\n                        .string()\n                        .describe(\n                          'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                        )\n                        .min(1)\n                        .max(50)\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({\n                        choicesSettings: z.never().optional(),\n                        freeTextSettings: z\n                          .object({\n                            minCharCount: z\n                              .number()\n                              .int()\n                              .describe('Minimum number of characters.')\n                              .optional(),\n                            maxCharCount: z\n                              .number()\n                              .int()\n                              .describe('Maximum number of characters.')\n                              .max(500)\n                              .optional(),\n                            defaultAddedPrice: z\n                              .string()\n                              .describe(\n                                \"Default amount to be added to the product's price.\"\n                              )\n                              .optional()\n                              .nullable(),\n                            title: z\n                              .string()\n                              .describe(\n                                'Title of the text to be input by the customer.'\n                              )\n                              .min(1)\n                              .max(150)\n                              .optional(),\n                            key: z\n                              .string()\n                              .describe(\n                                'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                              )\n                              .min(1)\n                              .max(150)\n                              .optional(),\n                          })\n                          .describe('Free text modifier settings.'),\n                      }),\n                      z.object({\n                        freeTextSettings: z.never().optional(),\n                        choicesSettings: z\n                          .object({\n                            choices: z\n                              .array(\n                                z.intersection(\n                                  z.object({\n                                    choiceId: z\n                                      .string()\n                                      .describe('Choice ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    linkedMedia: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({\n                                            altText: z\n                                              .string()\n                                              .describe('Image alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                            displayName: z\n                                              .string()\n                                              .describe(\n                                                \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                              )\n                                              .max(80)\n                                              .optional()\n                                              .nullable(),\n                                            mediaType: z\n                                              .enum(['IMAGE', 'VIDEO'])\n                                              .optional(),\n                                            thumbnail: z\n                                              .object({\n                                                url: z\n                                                  .string()\n                                                  .describe('Thumbnail url.')\n                                                  .url()\n                                                  .optional(),\n                                                height: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail height.')\n                                                  .optional(),\n                                                width: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail width.')\n                                                  .optional(),\n                                                altText: z\n                                                  .string()\n                                                  .describe(\n                                                    'Thumbnail alt text.'\n                                                  )\n                                                  .min(1)\n                                                  .max(1000)\n                                                  .optional()\n                                                  .nullable(),\n                                              })\n                                              .describe(\n                                                'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .optional(),\n                                            uploadId: z\n                                              .string()\n                                              .describe(\n                                                'ID used to upload media to Wix Media Manager.'\n                                              )\n                                              .regex(\n                                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                                'Must be a valid GUID'\n                                              )\n                                              .optional(),\n                                          }),\n                                          z.intersection(\n                                            z.xor([\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                url: z.never().optional(),\n                                                _id: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media by ID of an existing file in Wix Media Manager.'\n                                                  )\n                                                  .min(1)\n                                                  .max(200),\n                                              }),\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media using an external media URL.'\n                                                  )\n                                                  .url(),\n                                              }),\n                                            ]),\n                                            z.xor([\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                video: z.never().optional(),\n                                                image: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                                  ),\n                                              }),\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                                  ),\n                                              }),\n                                            ])\n                                          )\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                    choiceType: z\n                                      .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                      .optional(),\n                                    key: z\n                                      .string()\n                                      .describe(\n                                        'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                      )\n                                      .min(1)\n                                      .max(50)\n                                      .optional(),\n                                    name: z\n                                      .string()\n                                      .describe('Choice name.')\n                                      .min(1)\n                                      .max(50)\n                                      .optional()\n                                      .nullable(),\n                                    addedPrice: z\n                                      .string()\n                                      .describe('Added price.')\n                                      .optional()\n                                      .nullable(),\n                                    displayImage: z\n                                      .string()\n                                      .describe(\n                                        'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                      )\n                                      .optional(),\n                                    media: z\n                                      .object({\n                                        items: z\n                                          .array(\n                                            z.intersection(\n                                              z.object({}),\n                                              z.xor([\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z.never().optional(),\n                                                }),\n                                                z.object({\n                                                  url: z.never().optional(),\n                                                  mediaId: z\n                                                    .string()\n                                                    .describe(\n                                                      'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                    )\n                                                    .min(1)\n                                                    .max(200),\n                                                }),\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z\n                                                    .string()\n                                                    .describe(\n                                                      'External media URL. Can be used only on write.'\n                                                    )\n                                                    .url(),\n                                                }),\n                                              ])\n                                            )\n                                          )\n                                          .max(15)\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                      )\n                                      .optional(),\n                                  }),\n                                  z.xor([\n                                    z.object({\n                                      colorCode: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      colorCode: z\n                                        .string()\n                                        .describe(\n                                          'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                                        )\n                                        .min(3)\n                                        .max(20),\n                                    }),\n                                  ])\n                                )\n                              )\n                              .min(1)\n                              .max(100)\n                              .optional(),\n                          })\n                          .describe('Choice settings.'),\n                      }),\n                    ])\n                  )\n                )\n                .max(10)\n                .optional(),\n              brand: z\n                .object({\n                  _id: z\n                    .string()\n                    .describe('Brand ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Brand name.')\n                    .max(50)\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  \"Product brand.\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n                )\n                .optional(),\n              infoSections: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Info section ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    uniqueName: z\n                      .string()\n                      .describe(\n                        'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                      )\n                      .max(100)\n                      .optional()\n                      .nullable(),\n                    title: z\n                      .string()\n                      .describe(\n                        'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                      )\n                      .min(1)\n                      .max(50)\n                      .optional()\n                      .nullable(),\n                    description: z\n                      .any()\n                      .describe(\n                        'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                      )\n                      .optional(),\n                    plainDescription: z\n                      .string()\n                      .describe(\n                        'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                      )\n                      .max(16000)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(10)\n                .optional(),\n              ribbon: z\n                .object({\n                  _id: z\n                    .string()\n                    .describe('Ribbon ID.')\n                    .min(1)\n                    .max(36)\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Ribbon name.')\n                    .max(30)\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  \"Primary product ribbon displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n                )\n                .optional(),\n              additionalRibbons: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Ribbon ID.')\n                      .min(1)\n                      .max(36)\n                      .optional()\n                      .nullable(),\n                    name: z\n                      .string()\n                      .describe('Ribbon name.')\n                      .max(30)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(4)\n                .optional(),\n              mainCategoryId: z\n                .string()\n                .describe(\n                  'The ID of the product\\'s primary direct category, which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              productType: z.enum(['PHYSICAL', 'DIGITAL']).optional(),\n              handle: z\n                .string()\n                .describe(\n                  \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n                )\n                .min(1)\n                .max(100)\n                .optional()\n                .nullable(),\n              variantsInfo: z\n                .object({\n                  variants: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          _id: z\n                            .string()\n                            .describe('Variant ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          visible: z\n                            .boolean()\n                            .describe(\n                              'Whether the variant is visible to site visitors.\\n\\nDefault: `true`'\n                            )\n                            .optional()\n                            .nullable(),\n                          sku: z\n                            .string()\n                            .describe('Variant SKU (stock keeping unit).')\n                            .min(1)\n                            .max(40)\n                            .optional()\n                            .nullable(),\n                          barcode: z\n                            .string()\n                            .describe('Variant barcode.')\n                            .min(1)\n                            .max(40)\n                            .optional()\n                            .nullable(),\n                          price: z\n                            .object({\n                              actualPrice: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  \"Variant's current selling price. Must be greater than or equal to 0.\"\n                                ),\n                              compareAtPrice: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                                )\n                                .optional(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                            .describe('Variant price.'),\n                          revenueDetails: z\n                            .object({\n                              cost: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe('Item cost.')\n                                .optional(),\n                              profit: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                                )\n                                .optional(),\n                              profitMargin: z\n                                .number()\n                                .describe(\n                                  'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                                )\n                                .min(0)\n                                .max(1)\n                                .optional(),\n                            })\n                            .describe(\n                              'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                            )\n                            .optional(),\n                          inventoryItem: z\n                            .intersection(\n                              z.object({\n                                _id: z\n                                  .string()\n                                  .describe(\n                                    'Inventory item ID.\\nIf you want to update existing inventory item you must provide id,\\notherwise new inventory item with different id will be created.'\n                                  )\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                revision: z\n                                  .string()\n                                  .regex(\n                                    /^-?\\d+$/,\n                                    'Must be a valid Int64 string'\n                                  )\n                                  .describe('Inventory item revision.')\n                                  .optional()\n                                  .nullable(),\n                                preorderInfo: z\n                                  .object({\n                                    enabled: z\n                                      .boolean()\n                                      .describe(\n                                        \"Whether preorder is enabled for this inventory item.\\n\\n> **Note:** Preorder can't be enabled for digital products or products with subscriptions.\\n\\nDefault: `false`\"\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    message: z\n                                      .string()\n                                      .describe(\n                                        'Message displayed to customers when the item is out of stock and preorder is enabled.'\n                                      )\n                                      .min(1)\n                                      .max(250)\n                                      .optional()\n                                      .nullable(),\n                                    limit: z\n                                      .number()\n                                      .int()\n                                      .describe(\n                                        'Maximum number of items that can be preordered after stock reaches zero.\\n\\nSupported only for inventory items with `trackQuantity = true`.\\n\\nDefault: `100000`'\n                                      )\n                                      .min(0)\n                                      .max(100000)\n                                      .optional()\n                                      .nullable(),\n                                    counter: z\n                                      .number()\n                                      .int()\n                                      .describe(\n                                        'Number of times this item has been preordered.\\n\\nSupported only for inventory items with `trackQuantity = true`.'\n                                      )\n                                      .min(0)\n                                      .max(99999)\n                                      .optional()\n                                      .nullable(),\n                                    quantity: z\n                                      .number()\n                                      .int()\n                                      .describe(\n                                        'Remaining quantity available for preorder.\\n\\nSupported only for items with `trackQuantity` set to `true`.'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe('Item preorder info.')\n                                  .optional(),\n                              }),\n                              z.xor([\n                                z.object({\n                                  inStock: z.never().optional(),\n                                  quantity: z.never().optional(),\n                                }),\n                                z.object({\n                                  quantity: z.never().optional(),\n                                  inStock: z\n                                    .boolean()\n                                    .describe(\n                                      'Tracking method - in stock.\\n\\nWhen set to `true`, the item is available for sale without a quantity limit.'\n                                    ),\n                                }),\n                                z.object({\n                                  inStock: z.never().optional(),\n                                  quantity: z\n                                    .number()\n                                    .int()\n                                    .describe(\n                                      'Tracking method - quantity left in inventory.\\n\\nQuantity can be negative when decrementing inventory for an order that has already been paid.'\n                                    )\n                                    .min(-99999)\n                                    .max(99999),\n                                }),\n                              ])\n                            )\n                            .describe(\n                              'Inventory item of the variant on the default location.'\n                            )\n                            .optional(),\n                          choices: z\n                            .array(\n                              z.object({\n                                optionChoiceIds: z\n                                  .object({\n                                    optionId: z\n                                      .string()\n                                      .describe('Option ID.')\n                                      .min(1)\n                                      .max(36),\n                                    choiceId: z\n                                      .string()\n                                      .describe('Choice ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      ),\n                                  })\n                                  .describe('Option and choice IDs.')\n                                  .optional(),\n                                optionChoiceNames: z\n                                  .object({\n                                    optionName: z\n                                      .string()\n                                      .describe('Option name.')\n                                      .min(1)\n                                      .optional(),\n                                    choiceName: z\n                                      .string()\n                                      .describe('Choice name.')\n                                      .min(1)\n                                      .optional(),\n                                    renderType: z\n                                      .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                      .optional(),\n                                  })\n                                  .describe('Option and choice names.')\n                                  .optional(),\n                              })\n                            )\n                            .min(0)\n                            .max(6)\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({\n                            physicalProperties: z.never().optional(),\n                            digitalProperties: z.never().optional(),\n                          }),\n                          z.object({\n                            digitalProperties: z.never().optional(),\n                            physicalProperties: z\n                              .object({\n                                weight: z\n                                  .number()\n                                  .describe(\n                                    'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                                  )\n                                  .min(0)\n                                  .max(999999999.99)\n                                  .optional()\n                                  .nullable(),\n                                pricePerUnit: z\n                                  .object({\n                                    settings: z\n                                      .object({\n                                        quantity: z\n                                          .number()\n                                          .describe(\n                                            'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                          )\n                                          .min(0.01)\n                                          .max(999999999.99)\n                                          .optional(),\n                                        measurementUnit: z\n                                          .enum([\n                                            'UNSPECIFIED',\n                                            'ML',\n                                            'CL',\n                                            'L',\n                                            'CBM',\n                                            'MG',\n                                            'G',\n                                            'KG',\n                                            'MM',\n                                            'CM',\n                                            'M',\n                                            'SQM',\n                                            'OZ',\n                                            'LB',\n                                            'FLOZ',\n                                            'PT',\n                                            'QT',\n                                            'GAL',\n                                            'IN',\n                                            'FT',\n                                            'YD',\n                                            'SQFT',\n                                          ])\n                                          .describe(\n                                            'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                      )\n                                      .optional(),\n                                    value: z\n                                      .string()\n                                      .describe(\n                                        \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                      )\n                                      .optional(),\n                                    description: z\n                                      .string()\n                                      .describe(\n                                        'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(100)\n                                      .optional()\n                                      .nullable(),\n                                    priceAfterDiscount: z\n                                      .object({\n                                        amount: z\n                                          .string()\n                                          .describe(\n                                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                          )\n                                          .optional(),\n                                        formattedAmount: z\n                                          .string()\n                                          .describe(\n                                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                                  )\n                                  .optional(),\n                                productDimensions: z\n                                  .object({\n                                    length: z\n                                      .string()\n                                      .describe(\n                                        'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    width: z\n                                      .string()\n                                      .describe(\n                                        'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    height: z\n                                      .string()\n                                      .describe(\n                                        'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    unit: z\n                                      .enum([\n                                        'UNKNOWN_DIMENSIONS_UNIT',\n                                        'MM',\n                                        'CM',\n                                        'M',\n                                        'IN',\n                                        'FT',\n                                        'YD',\n                                      ])\n                                      .describe(\n                                        'Unit of measurement for dimensions (length, width, height).'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Product dimensions (length, width, height of the physical product).'\n                                  )\n                                  .optional(),\n                                packageDimensions: z\n                                  .object({\n                                    length: z\n                                      .string()\n                                      .describe(\n                                        'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    width: z\n                                      .string()\n                                      .describe(\n                                        'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    height: z\n                                      .string()\n                                      .describe(\n                                        'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    unit: z\n                                      .enum([\n                                        'UNKNOWN_DIMENSIONS_UNIT',\n                                        'MM',\n                                        'CM',\n                                        'M',\n                                        'IN',\n                                        'FT',\n                                        'YD',\n                                      ])\n                                      .describe(\n                                        'Unit of measurement for dimensions (length, width, height).'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Package dimensions (length, width, height of the shipping package).'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Physical properties. Must be passed when `productType: PHYSICAL`'\n                              ),\n                          }),\n                          z.object({\n                            physicalProperties: z.never().optional(),\n                            digitalProperties: z\n                              .object({\n                                digitalFile: z\n                                  .object({\n                                    _id: z\n                                      .string()\n                                      .describe('Media ID in media manager.')\n                                      .min(1)\n                                      .max(100)\n                                      .optional(),\n                                    fileName: z\n                                      .string()\n                                      .describe('Original file name.')\n                                      .min(1)\n                                      .max(1000)\n                                      .optional(),\n                                    fileSize: z\n                                      .string()\n                                      .describe('Original file size.')\n                                      .min(1)\n                                      .max(1000)\n                                      .optional()\n                                      .nullable(),\n                                    fileType: z\n                                      .enum([\n                                        'UNSPECIFIED',\n                                        'SECURE_PICTURE',\n                                        'SECURE_VIDEO',\n                                        'SECURE_DOCUMENT',\n                                        'SECURE_MUSIC',\n                                        'SECURE_ARCHIVE',\n                                        'SECURE_RAW',\n                                      ])\n                                      .describe('File type.')\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Digital properties. Must be passed when `productType: DIGITAL`'\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                    .min(1)\n                    .max(1000)\n                    .optional(),\n                })\n                .describe(\n                  \"Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nVariants aren't auto-generated. You must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).\"\n                )\n                .optional(),\n              subscriptionDetails: z\n                .object({\n                  subscriptions: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          _id: z\n                            .string()\n                            .describe('Subscription ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          title: z\n                            .string()\n                            .describe('Subscription title.')\n                            .min(1)\n                            .max(20),\n                          description: z\n                            .string()\n                            .describe('Subscription description.')\n                            .max(60)\n                            .optional()\n                            .nullable(),\n                          visible: z\n                            .boolean()\n                            .describe(\n                              'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                            )\n                            .optional()\n                            .nullable(),\n                          frequency: z.enum([\n                            'UNDEFINED',\n                            'DAY',\n                            'WEEK',\n                            'MONTH',\n                            'YEAR',\n                          ]),\n                          interval: z\n                            .number()\n                            .int()\n                            .describe(\n                              'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                            )\n                            .min(1)\n                            .max(50)\n                            .optional()\n                            .nullable(),\n                          discount: z\n                            .intersection(\n                              z.object({ type: z.enum(['AMOUNT', 'PERCENT']) }),\n                              z.xor([\n                                z.object({\n                                  percentOff: z.never().optional(),\n                                  amountOff: z\n                                    .string()\n                                    .describe(\n                                      'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                                    ),\n                                }),\n                                z.object({\n                                  amountOff: z.never().optional(),\n                                  percentOff: z\n                                    .number()\n                                    .describe(\n                                      'Percentage subtracted from the variant price when calculating subscription prices.'\n                                    )\n                                    .min(0.1)\n                                    .max(99.9),\n                                }),\n                              ])\n                            )\n                            .describe(\n                              'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                            )\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({\n                            billingCycles: z.never().optional(),\n                            autoRenewal: z\n                              .boolean()\n                              .describe(\n                                'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                              ),\n                          }),\n                          z.object({\n                            autoRenewal: z.never().optional(),\n                            billingCycles: z\n                              .number()\n                              .int()\n                              .describe(\n                                'Number of billing cycles before subscription ends.'\n                              )\n                              .min(2)\n                              .max(999),\n                          }),\n                        ])\n                      )\n                    )\n                    .min(1)\n                    .max(6)\n                    .optional(),\n                  allowOneTimePurchases: z\n                    .boolean()\n                    .describe(\n                      'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n                    )\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n                )\n                .optional(),\n              purchaseEligibility: z\n                .object({ userCriteria: z.enum(['MEMBERS_ONLY']).optional() })\n                .describe('Purchase eligibility settings for the product.')\n                .optional(),\n              extendedFields: z\n                .object({\n                  namespaces: z\n                    .record(z.string(), z.record(z.string(), z.any()))\n                    .describe(\n                      'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the [app dashboard](https://dev.wix.com/dc3/my-apps/) before they can be accessed with API calls.'\n                )\n                .optional(),\n              tags: z\n                .object({\n                  privateTags: z\n                    .object({ tagIds: z.array(z.string()).max(100).optional() })\n                    .describe(\n                      'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n                    )\n                    .optional(),\n                  publicTags: z\n                    .object({ tagIds: z.array(z.string()).max(100).optional() })\n                    .describe(\n                      'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n                    )\n                    .optional(),\n                })\n                .describe('Tags')\n                .optional(),\n            }),\n            z.xor([\n              z.object({ physicalProperties: z.never().optional() }),\n              z.object({\n                physicalProperties: z\n                  .object({\n                    pricePerUnit: z\n                      .object({\n                        quantity: z\n                          .number()\n                          .describe(\n                            'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                          )\n                          .min(0.01)\n                          .max(999999999.99)\n                          .optional(),\n                        measurementUnit: z\n                          .enum([\n                            'UNSPECIFIED',\n                            'ML',\n                            'CL',\n                            'L',\n                            'CBM',\n                            'MG',\n                            'G',\n                            'KG',\n                            'MM',\n                            'CM',\n                            'M',\n                            'SQM',\n                            'OZ',\n                            'LB',\n                            'FLOZ',\n                            'PT',\n                            'QT',\n                            'GAL',\n                            'IN',\n                            'FT',\n                            'YD',\n                            'SQFT',\n                          ])\n                          .describe(\n                            'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n                      )\n                      .optional(),\n                    fulfillerId: z\n                      .string()\n                      .describe('Fulfiller ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    shippingWeightRange: z\n                      .object({\n                        minValue: z\n                          .number()\n                          .describe(\n                            'Minimum weight across all variants associated with this product.'\n                          )\n                          .min(0)\n                          .max(999999999.99)\n                          .optional(),\n                        maxValue: z\n                          .number()\n                          .describe(\n                            'Maximum weight across all variants associated with this product.'\n                          )\n                          .min(0)\n                          .max(999999999.99)\n                          .optional(),\n                      })\n                      .describe(\n                        'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n                      )\n                      .optional(),\n                    pricePerUnitRange: z\n                      .object({\n                        minValue: z\n                          .object({\n                            value: z\n                              .string()\n                              .describe(\n                                \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                              )\n                              .optional(),\n                            description: z\n                              .string()\n                              .describe(\n                                'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                              )\n                              .max(100)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Minimum price per unit across all variants.'\n                          )\n                          .optional(),\n                        maxValue: z\n                          .object({\n                            value: z\n                              .string()\n                              .describe(\n                                \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                              )\n                              .optional(),\n                            description: z\n                              .string()\n                              .describe(\n                                'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                              )\n                              .max(100)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Maximum price per unit across all variants.'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n                      )\n                      .optional(),\n                    weightMeasurementUnitInfo: z\n                      .object({\n                        weightMeasurementUnit: z\n                          .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                          .describe('Weight measurement unit.')\n                          .optional(),\n                      })\n                      .describe(\n                        'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    deliveryProfileId: z\n                      .string()\n                      .describe('Delivery profile ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe(\n                    'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n                  ),\n              }),\n            ])\n          )\n          .describe('Product to update.'),\n      })\n    )\n    .min(1)\n    .max(100),\n  options: z\n    .object({\n      returnEntity: z\n        .boolean()\n        .describe(\n          'Whether to return the full product entities in the response.\\n\\nDefault: `false`'\n        )\n        .optional(),\n      fields: z\n        .array(\n          z.enum([\n            'URL',\n            'CURRENCY',\n            'INFO_SECTION',\n            'MERCHANT_DATA',\n            'PLAIN_DESCRIPTION',\n            'INFO_SECTION_PLAIN_DESCRIPTION',\n            'SUBSCRIPTION_PRICES_INFO',\n            'BREADCRUMBS_INFO',\n            'WEIGHT_MEASUREMENT_UNIT_INFO',\n            'VARIANT_OPTION_CHOICE_NAMES',\n            'MEDIA_ITEMS_INFO',\n            'DESCRIPTION',\n            'DIRECT_CATEGORIES_INFO',\n            'ALL_CATEGORIES_INFO',\n            'INFO_SECTION_DESCRIPTION',\n            'THUMBNAIL',\n            'PRODUCT_CHOICES_MEDIA_REFERENCES',\n            'PRODUCT_CHOICES_DISPLAY_IMAGE',\n            'MIN_PRICE_VARIANT',\n            'DISCOUNT_INFO',\n          ])\n        )\n        .max(100)\n        .optional(),\n    })\n    .optional(),\n});\nexport const BulkUpdateProductsWithInventoryResponse = z.object({\n  productResults: z\n    .object({\n      results: z\n        .array(\n          z.object({\n            itemMetadata: z\n              .object({\n                _id: z\n                  .string()\n                  .describe(\n                    \"Item ID. Should always be available, unless it's impossible (for example, when failing to create an item).\"\n                  )\n                  .min(1)\n                  .max(36)\n                  .optional()\n                  .nullable(),\n                originalIndex: z\n                  .number()\n                  .int()\n                  .describe(\n                    'Index of the item within the request array. Allows for correlation between request and response items.'\n                  )\n                  .optional(),\n                success: z\n                  .boolean()\n                  .describe(\n                    'Whether the requested action was successful for this item. When `false`, the `error` field is populated.'\n                  )\n                  .optional(),\n                error: z\n                  .object({\n                    code: z.string().describe('Error code.').optional(),\n                    description: z\n                      .string()\n                      .describe('Description of the error.')\n                      .optional(),\n                    data: z\n                      .record(z.string(), z.any())\n                      .describe('Data related to the error.')\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe('Details about the error in case of failure.')\n                  .optional(),\n              })\n              .describe(\n                'Information about successful action or error for failure.'\n              )\n              .optional(),\n            item: z\n              .intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Product ID.')\n                    .min(1)\n                    .max(36)\n                    .optional()\n                    .nullable(),\n                  revision: z\n                    .string()\n                    .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                    .describe(\n                      'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product.'\n                    )\n                    .optional()\n                    .nullable(),\n                  _createdDate: z\n                    .date()\n                    .describe('Date and time the product was created.')\n                    .optional()\n                    .nullable(),\n                  _updatedDate: z\n                    .date()\n                    .describe('Date and time the product was updated.')\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Product name. Translatable.')\n                    .min(1)\n                    .max(80)\n                    .optional()\n                    .nullable(),\n                  slug: z\n                    .string()\n                    .describe(\n                      'Product slug. A URL-friendly identifier used in the product page address.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n                    )\n                    .min(1)\n                    .max(300)\n                    .optional()\n                    .nullable(),\n                  url: z\n                    .string()\n                    .describe(\n                      'URL to the site\\'s product page.\\n\\n> **Note:** Returned only when you pass `\"URL\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                  description: z\n                    .any()\n                    .describe(\n                      'Product description using rich content.\\n> **Note:** Returned only when you pass `\"DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                    )\n                    .optional(),\n                  plainDescription: z\n                    .string()\n                    .describe(\n                      'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(16000)\n                    .optional()\n                    .nullable(),\n                  visible: z\n                    .boolean()\n                    .describe(\n                      \"Whether the product is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the default variant's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                    )\n                    .optional()\n                    .nullable(),\n                  visibleInPos: z\n                    .boolean()\n                    .describe(\n                      'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  media: z\n                    .object({\n                      main: z\n                        .intersection(\n                          z.object({\n                            altText: z\n                              .string()\n                              .describe('Image alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                            displayName: z\n                              .string()\n                              .describe(\n                                \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                              )\n                              .max(80)\n                              .optional()\n                              .nullable(),\n                            mediaType: z\n                              .enum(['IMAGE', 'VIDEO'])\n                              .describe('Media type.')\n                              .optional(),\n                            thumbnail: z\n                              .object({\n                                url: z\n                                  .string()\n                                  .describe('Thumbnail url.')\n                                  .url()\n                                  .optional(),\n                                height: z\n                                  .number()\n                                  .int()\n                                  .describe('Thumbnail height.')\n                                  .optional(),\n                                width: z\n                                  .number()\n                                  .int()\n                                  .describe('Thumbnail width.')\n                                  .optional(),\n                                altText: z\n                                  .string()\n                                  .describe('Thumbnail alt text.')\n                                  .min(1)\n                                  .max(1000)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                              )\n                              .optional(),\n                            uploadId: z\n                              .string()\n                              .describe(\n                                'ID used to upload media to Wix Media Manager.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          }),\n                          z.intersection(\n                            z.xor([\n                              z.object({\n                                _id: z.never().optional(),\n                                url: z.never().optional(),\n                              }),\n                              z.object({\n                                url: z.never().optional(),\n                                _id: z\n                                  .string()\n                                  .describe(\n                                    'Set media by ID of an existing file in Wix Media Manager.'\n                                  )\n                                  .min(1)\n                                  .max(200),\n                              }),\n                              z.object({\n                                _id: z.never().optional(),\n                                url: z\n                                  .string()\n                                  .describe(\n                                    'Set media using an external media URL.'\n                                  )\n                                  .url(),\n                              }),\n                            ]),\n                            z.xor([\n                              z.object({\n                                image: z.never().optional(),\n                                video: z.never().optional(),\n                              }),\n                              z.object({\n                                video: z.never().optional(),\n                                image: z\n                                  .string()\n                                  .describe(\n                                    \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                  ),\n                              }),\n                              z.object({\n                                image: z.never().optional(),\n                                video: z\n                                  .string()\n                                  .describe(\n                                    \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                  ),\n                              }),\n                            ])\n                          )\n                        )\n                        .describe(\n                          'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n                        )\n                        .optional(),\n                      itemsInfo: z\n                        .object({\n                          items: z\n                            .array(\n                              z.intersection(\n                                z.object({\n                                  altText: z\n                                    .string()\n                                    .describe('Image alt text.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                  displayName: z\n                                    .string()\n                                    .describe(\n                                      \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                    )\n                                    .max(80)\n                                    .optional()\n                                    .nullable(),\n                                  mediaType: z\n                                    .enum(['IMAGE', 'VIDEO'])\n                                    .describe('Media type.')\n                                    .optional(),\n                                  thumbnail: z\n                                    .object({\n                                      url: z\n                                        .string()\n                                        .describe('Thumbnail url.')\n                                        .url()\n                                        .optional(),\n                                      height: z\n                                        .number()\n                                        .int()\n                                        .describe('Thumbnail height.')\n                                        .optional(),\n                                      width: z\n                                        .number()\n                                        .int()\n                                        .describe('Thumbnail width.')\n                                        .optional(),\n                                      altText: z\n                                        .string()\n                                        .describe('Thumbnail alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .optional(),\n                                  uploadId: z\n                                    .string()\n                                    .describe(\n                                      'ID used to upload media to Wix Media Manager.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                }),\n                                z.intersection(\n                                  z.xor([\n                                    z.object({\n                                      _id: z.never().optional(),\n                                      url: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      url: z.never().optional(),\n                                      _id: z\n                                        .string()\n                                        .describe(\n                                          'Set media by ID of an existing file in Wix Media Manager.'\n                                        )\n                                        .min(1)\n                                        .max(200),\n                                    }),\n                                    z.object({\n                                      _id: z.never().optional(),\n                                      url: z\n                                        .string()\n                                        .describe(\n                                          'Set media using an external media URL.'\n                                        )\n                                        .url(),\n                                    }),\n                                  ]),\n                                  z.xor([\n                                    z.object({\n                                      image: z.never().optional(),\n                                      video: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      video: z.never().optional(),\n                                      image: z\n                                        .string()\n                                        .describe(\n                                          \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                        ),\n                                    }),\n                                    z.object({\n                                      image: z.never().optional(),\n                                      video: z\n                                        .string()\n                                        .describe(\n                                          \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                        ),\n                                    }),\n                                  ])\n                                )\n                              )\n                            )\n                            .max(50)\n                            .optional(),\n                        })\n                        .describe(\n                          'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n                        )\n                        .optional(),\n                    })\n                    .describe(\n                      'Product media items. For a detailed explanation of product media, see [About Product Media](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/about-product-media).'\n                    )\n                    .optional(),\n                  seoData: z\n                    .object({\n                      tags: z\n                        .array(\n                          z.object({\n                            type: z\n                              .string()\n                              .describe(\n                                'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                              )\n                              .optional(),\n                            props: z\n                              .record(z.string(), z.any())\n                              .describe(\n                                'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                              )\n                              .optional()\n                              .nullable(),\n                            meta: z\n                              .record(z.string(), z.any())\n                              .describe(\n                                'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                              )\n                              .optional()\n                              .nullable(),\n                            children: z\n                              .string()\n                              .describe(\n                                'SEO tag inner content. For example, `<title> inner content </title>`.'\n                              )\n                              .optional(),\n                            custom: z\n                              .boolean()\n                              .describe(\n                                'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                              )\n                              .optional(),\n                            disabled: z\n                              .boolean()\n                              .describe(\n                                \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                              )\n                              .optional(),\n                          })\n                        )\n                        .optional(),\n                      settings: z\n                        .object({\n                          preventAutoRedirect: z\n                            .boolean()\n                            .describe(\n                              'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n                            )\n                            .optional(),\n                          keywords: z\n                            .array(\n                              z.object({\n                                term: z\n                                  .string()\n                                  .describe('Keyword value.')\n                                  .optional(),\n                                isMain: z\n                                  .boolean()\n                                  .describe(\n                                    'Whether the keyword is the main focus keyword.'\n                                  )\n                                  .optional(),\n                                origin: z\n                                  .string()\n                                  .describe(\n                                    'The source that added the keyword terms to the SEO settings.'\n                                  )\n                                  .max(1000)\n                                  .optional()\n                                  .nullable(),\n                              })\n                            )\n                            .max(5)\n                            .optional(),\n                        })\n                        .describe('SEO general settings.')\n                        .optional(),\n                    })\n                    .describe('Product SEO data.')\n                    .optional(),\n                  taxGroupId: z\n                    .string()\n                    .describe(\n                      '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  options: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          _id: z\n                            .string()\n                            .describe(\n                              'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n                            )\n                            .min(1)\n                            .max(36)\n                            .optional()\n                            .nullable(),\n                          name: z\n                            .string()\n                            .describe('Option name.')\n                            .min(1)\n                            .max(50)\n                            .optional()\n                            .nullable(),\n                          optionRenderType: z\n                            .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                            .describe('Option render type.')\n                            .optional(),\n                          key: z\n                            .string()\n                            .describe(\n                              'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                            )\n                            .min(1)\n                            .max(50)\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({ choicesSettings: z.never().optional() }),\n                          z.object({\n                            choicesSettings: z\n                              .object({\n                                choices: z\n                                  .array(\n                                    z.intersection(\n                                      z.object({\n                                        choiceId: z\n                                          .string()\n                                          .describe('Choice ID.')\n                                          .regex(\n                                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                            'Must be a valid GUID'\n                                          )\n                                          .optional()\n                                          .nullable(),\n                                        linkedMedia: z\n                                          .array(\n                                            z.intersection(\n                                              z.object({\n                                                altText: z\n                                                  .string()\n                                                  .describe('Image alt text.')\n                                                  .min(1)\n                                                  .max(1000)\n                                                  .optional()\n                                                  .nullable(),\n                                                displayName: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                                  )\n                                                  .max(80)\n                                                  .optional()\n                                                  .nullable(),\n                                                mediaType: z\n                                                  .enum(['IMAGE', 'VIDEO'])\n                                                  .describe('Media type.')\n                                                  .optional(),\n                                                thumbnail: z\n                                                  .object({\n                                                    url: z\n                                                      .string()\n                                                      .describe(\n                                                        'Thumbnail url.'\n                                                      )\n                                                      .url()\n                                                      .optional(),\n                                                    height: z\n                                                      .number()\n                                                      .int()\n                                                      .describe(\n                                                        'Thumbnail height.'\n                                                      )\n                                                      .optional(),\n                                                    width: z\n                                                      .number()\n                                                      .int()\n                                                      .describe(\n                                                        'Thumbnail width.'\n                                                      )\n                                                      .optional(),\n                                                    altText: z\n                                                      .string()\n                                                      .describe(\n                                                        'Thumbnail alt text.'\n                                                      )\n                                                      .min(1)\n                                                      .max(1000)\n                                                      .optional()\n                                                      .nullable(),\n                                                  })\n                                                  .describe(\n                                                    'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                                  )\n                                                  .optional(),\n                                                uploadId: z\n                                                  .string()\n                                                  .describe(\n                                                    'ID used to upload media to Wix Media Manager.'\n                                                  )\n                                                  .regex(\n                                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                                    'Must be a valid GUID'\n                                                  )\n                                                  .optional(),\n                                              }),\n                                              z.intersection(\n                                                z.xor([\n                                                  z.object({\n                                                    _id: z.never().optional(),\n                                                    url: z.never().optional(),\n                                                  }),\n                                                  z.object({\n                                                    url: z.never().optional(),\n                                                    _id: z\n                                                      .string()\n                                                      .describe(\n                                                        'Set media by ID of an existing file in Wix Media Manager.'\n                                                      )\n                                                      .min(1)\n                                                      .max(200),\n                                                  }),\n                                                  z.object({\n                                                    _id: z.never().optional(),\n                                                    url: z\n                                                      .string()\n                                                      .describe(\n                                                        'Set media using an external media URL.'\n                                                      )\n                                                      .url(),\n                                                  }),\n                                                ]),\n                                                z.xor([\n                                                  z.object({\n                                                    image: z.never().optional(),\n                                                    video: z.never().optional(),\n                                                  }),\n                                                  z.object({\n                                                    video: z.never().optional(),\n                                                    image: z\n                                                      .string()\n                                                      .describe(\n                                                        \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                                      ),\n                                                  }),\n                                                  z.object({\n                                                    image: z.never().optional(),\n                                                    video: z\n                                                      .string()\n                                                      .describe(\n                                                        \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                                      ),\n                                                  }),\n                                                ])\n                                              )\n                                            )\n                                          )\n                                          .max(15)\n                                          .optional(),\n                                        choiceType: z\n                                          .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                          .describe('Choice type.')\n                                          .optional(),\n                                        key: z\n                                          .string()\n                                          .describe(\n                                            'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                          )\n                                          .min(1)\n                                          .max(50)\n                                          .optional(),\n                                        name: z\n                                          .string()\n                                          .describe(\n                                            'Choice name. For text choices, this field also contains the choice value.'\n                                          )\n                                          .min(1)\n                                          .max(50)\n                                          .optional()\n                                          .nullable(),\n                                        inStock: z\n                                          .boolean()\n                                          .describe(\n                                            'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                                          )\n                                          .optional(),\n                                        visible: z\n                                          .boolean()\n                                          .describe(\n                                            'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                                          )\n                                          .optional(),\n                                        displayImage: z\n                                          .string()\n                                          .describe(\n                                            'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                          )\n                                          .optional(),\n                                        media: z\n                                          .object({\n                                            items: z\n                                              .array(\n                                                z.intersection(\n                                                  z.object({}),\n                                                  z.xor([\n                                                    z.object({\n                                                      mediaId: z\n                                                        .never()\n                                                        .optional(),\n                                                      url: z.never().optional(),\n                                                    }),\n                                                    z.object({\n                                                      url: z.never().optional(),\n                                                      mediaId: z\n                                                        .string()\n                                                        .describe(\n                                                          'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                        )\n                                                        .min(1)\n                                                        .max(200),\n                                                    }),\n                                                    z.object({\n                                                      mediaId: z\n                                                        .never()\n                                                        .optional(),\n                                                      url: z\n                                                        .string()\n                                                        .describe(\n                                                          'External media URL. Can be used only on write.'\n                                                        )\n                                                        .url(),\n                                                    }),\n                                                  ])\n                                                )\n                                              )\n                                              .max(15)\n                                              .optional(),\n                                          })\n                                          .describe(\n                                            'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                          )\n                                          .optional(),\n                                      }),\n                                      z.xor([\n                                        z.object({\n                                          colorCode: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          colorCode: z\n                                            .string()\n                                            .describe(\n                                              'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                                            )\n                                            .min(3)\n                                            .max(20),\n                                        }),\n                                      ])\n                                    )\n                                  )\n                                  .min(1)\n                                  .max(100)\n                                  .optional(),\n                              })\n                              .describe('Choices settings.'),\n                          }),\n                        ])\n                      )\n                    )\n                    .max(6)\n                    .optional(),\n                  modifiers: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          _id: z\n                            .string()\n                            .describe(\n                              'ID of a customization with `customizationType: MODIFIER`.'\n                            )\n                            .min(1)\n                            .max(36)\n                            .optional()\n                            .nullable(),\n                          name: z\n                            .string()\n                            .describe('Modifier title.')\n                            .min(1)\n                            .max(50)\n                            .optional()\n                            .nullable(),\n                          modifierRenderType: z\n                            .enum([\n                              'FREE_TEXT',\n                              'TEXT_CHOICES',\n                              'SWATCH_CHOICES',\n                            ])\n                            .describe('Modifier render type.')\n                            .optional(),\n                          mandatory: z\n                            .boolean()\n                            .describe(\n                              'Whether customer input is required for this modifier.'\n                            )\n                            .optional(),\n                          key: z\n                            .string()\n                            .describe(\n                              'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                            )\n                            .min(1)\n                            .max(50)\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({\n                            freeTextSettings: z.never().optional(),\n                            choicesSettings: z.never().optional(),\n                          }),\n                          z.object({\n                            choicesSettings: z.never().optional(),\n                            freeTextSettings: z\n                              .object({\n                                minCharCount: z\n                                  .number()\n                                  .int()\n                                  .describe('Minimum number of characters.')\n                                  .optional(),\n                                maxCharCount: z\n                                  .number()\n                                  .int()\n                                  .describe('Maximum number of characters.')\n                                  .max(500)\n                                  .optional(),\n                                defaultAddedPrice: z\n                                  .string()\n                                  .describe(\n                                    \"Default amount to be added to the product's price.\"\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                title: z\n                                  .string()\n                                  .describe(\n                                    'Title of the text to be input by the customer.'\n                                  )\n                                  .min(1)\n                                  .max(150)\n                                  .optional(),\n                                key: z\n                                  .string()\n                                  .describe(\n                                    'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                  )\n                                  .min(1)\n                                  .max(150)\n                                  .optional(),\n                              })\n                              .describe('Free text modifier settings.'),\n                          }),\n                          z.object({\n                            freeTextSettings: z.never().optional(),\n                            choicesSettings: z\n                              .object({\n                                choices: z\n                                  .array(\n                                    z.intersection(\n                                      z.object({\n                                        choiceId: z\n                                          .string()\n                                          .describe('Choice ID.')\n                                          .regex(\n                                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                            'Must be a valid GUID'\n                                          )\n                                          .optional()\n                                          .nullable(),\n                                        linkedMedia: z\n                                          .array(\n                                            z.intersection(\n                                              z.object({\n                                                altText: z\n                                                  .string()\n                                                  .describe('Image alt text.')\n                                                  .min(1)\n                                                  .max(1000)\n                                                  .optional()\n                                                  .nullable(),\n                                                displayName: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                                  )\n                                                  .max(80)\n                                                  .optional()\n                                                  .nullable(),\n                                                mediaType: z\n                                                  .enum(['IMAGE', 'VIDEO'])\n                                                  .describe('Media type.')\n                                                  .optional(),\n                                                thumbnail: z\n                                                  .object({\n                                                    url: z\n                                                      .string()\n                                                      .describe(\n                                                        'Thumbnail url.'\n                                                      )\n                                                      .url()\n                                                      .optional(),\n                                                    height: z\n                                                      .number()\n                                                      .int()\n                                                      .describe(\n                                                        'Thumbnail height.'\n                                                      )\n                                                      .optional(),\n                                                    width: z\n                                                      .number()\n                                                      .int()\n                                                      .describe(\n                                                        'Thumbnail width.'\n                                                      )\n                                                      .optional(),\n                                                    altText: z\n                                                      .string()\n                                                      .describe(\n                                                        'Thumbnail alt text.'\n                                                      )\n                                                      .min(1)\n                                                      .max(1000)\n                                                      .optional()\n                                                      .nullable(),\n                                                  })\n                                                  .describe(\n                                                    'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                                  )\n                                                  .optional(),\n                                                uploadId: z\n                                                  .string()\n                                                  .describe(\n                                                    'ID used to upload media to Wix Media Manager.'\n                                                  )\n                                                  .regex(\n                                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                                    'Must be a valid GUID'\n                                                  )\n                                                  .optional(),\n                                              }),\n                                              z.intersection(\n                                                z.xor([\n                                                  z.object({\n                                                    _id: z.never().optional(),\n                                                    url: z.never().optional(),\n                                                  }),\n                                                  z.object({\n                                                    url: z.never().optional(),\n                                                    _id: z\n                                                      .string()\n                                                      .describe(\n                                                        'Set media by ID of an existing file in Wix Media Manager.'\n                                                      )\n                                                      .min(1)\n                                                      .max(200),\n                                                  }),\n                                                  z.object({\n                                                    _id: z.never().optional(),\n                                                    url: z\n                                                      .string()\n                                                      .describe(\n                                                        'Set media using an external media URL.'\n                                                      )\n                                                      .url(),\n                                                  }),\n                                                ]),\n                                                z.xor([\n                                                  z.object({\n                                                    image: z.never().optional(),\n                                                    video: z.never().optional(),\n                                                  }),\n                                                  z.object({\n                                                    video: z.never().optional(),\n                                                    image: z\n                                                      .string()\n                                                      .describe(\n                                                        \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                                      ),\n                                                  }),\n                                                  z.object({\n                                                    image: z.never().optional(),\n                                                    video: z\n                                                      .string()\n                                                      .describe(\n                                                        \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                                      ),\n                                                  }),\n                                                ])\n                                              )\n                                            )\n                                          )\n                                          .max(15)\n                                          .optional(),\n                                        choiceType: z\n                                          .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                          .describe('Choice type.')\n                                          .optional(),\n                                        key: z\n                                          .string()\n                                          .describe(\n                                            'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                          )\n                                          .min(1)\n                                          .max(50)\n                                          .optional(),\n                                        name: z\n                                          .string()\n                                          .describe('Choice name.')\n                                          .min(1)\n                                          .max(50)\n                                          .optional()\n                                          .nullable(),\n                                        addedPrice: z\n                                          .string()\n                                          .describe('Added price.')\n                                          .optional()\n                                          .nullable(),\n                                        displayImage: z\n                                          .string()\n                                          .describe(\n                                            'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                          )\n                                          .optional(),\n                                        media: z\n                                          .object({\n                                            items: z\n                                              .array(\n                                                z.intersection(\n                                                  z.object({}),\n                                                  z.xor([\n                                                    z.object({\n                                                      mediaId: z\n                                                        .never()\n                                                        .optional(),\n                                                      url: z.never().optional(),\n                                                    }),\n                                                    z.object({\n                                                      url: z.never().optional(),\n                                                      mediaId: z\n                                                        .string()\n                                                        .describe(\n                                                          'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                        )\n                                                        .min(1)\n                                                        .max(200),\n                                                    }),\n                                                    z.object({\n                                                      mediaId: z\n                                                        .never()\n                                                        .optional(),\n                                                      url: z\n                                                        .string()\n                                                        .describe(\n                                                          'External media URL. Can be used only on write.'\n                                                        )\n                                                        .url(),\n                                                    }),\n                                                  ])\n                                                )\n                                              )\n                                              .max(15)\n                                              .optional(),\n                                          })\n                                          .describe(\n                                            'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                          )\n                                          .optional(),\n                                      }),\n                                      z.xor([\n                                        z.object({\n                                          colorCode: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          colorCode: z\n                                            .string()\n                                            .describe(\n                                              'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                                            )\n                                            .min(3)\n                                            .max(20),\n                                        }),\n                                      ])\n                                    )\n                                  )\n                                  .min(1)\n                                  .max(100)\n                                  .optional(),\n                              })\n                              .describe('Choice settings.'),\n                          }),\n                        ])\n                      )\n                    )\n                    .max(10)\n                    .optional(),\n                  brand: z\n                    .object({\n                      _id: z\n                        .string()\n                        .describe('Brand ID.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional()\n                        .nullable(),\n                      name: z\n                        .string()\n                        .describe('Brand name.')\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      \"Product [brand](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/brands-v3/introduction).\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n                    )\n                    .optional(),\n                  infoSections: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('Info section ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        uniqueName: z\n                          .string()\n                          .describe(\n                            'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                        title: z\n                          .string()\n                          .describe(\n                            'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                          )\n                          .min(1)\n                          .max(50)\n                          .optional()\n                          .nullable(),\n                        description: z\n                          .any()\n                          .describe(\n                            'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                          )\n                          .optional(),\n                        plainDescription: z\n                          .string()\n                          .describe(\n                            'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(16000)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(10)\n                    .optional(),\n                  ribbon: z\n                    .object({\n                      _id: z\n                        .string()\n                        .describe('Ribbon ID.')\n                        .min(1)\n                        .max(36)\n                        .optional()\n                        .nullable(),\n                      name: z\n                        .string()\n                        .describe('Ribbon name.')\n                        .max(30)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      \"Primary [ribbon](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/ribbons-v3/introduction) displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n                    )\n                    .optional(),\n                  directCategoriesInfo: z\n                    .object({\n                      categories: z\n                        .array(\n                          z.object({\n                            _id: z\n                              .string()\n                              .describe('Category ID.')\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                            index: z\n                              .number()\n                              .int()\n                              .describe(\n                                'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                              )\n                              .min(0)\n                              .max(200)\n                              .optional()\n                              .nullable(),\n                          })\n                        )\n                        .max(2000)\n                        .optional(),\n                    })\n                    .describe(\n                      'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product.\\n\\nUpdated automatically when a product is added/removed from a category, when an item is moved within a category, or when a category is deleted.\\n> **Note:** Returned only when you pass `\"DIRECT_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                  allCategoriesInfo: z\n                    .object({\n                      categories: z\n                        .array(\n                          z.object({\n                            _id: z\n                              .string()\n                              .describe('Category ID.')\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                            index: z\n                              .number()\n                              .int()\n                              .describe(\n                                'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                              )\n                              .min(0)\n                              .max(200)\n                              .optional()\n                              .nullable(),\n                          })\n                        )\n                        .max(2000)\n                        .optional(),\n                    })\n                    .describe(\n                      'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product, as well as their parent categories.\\n> **Note:** Returned only when you pass `\"ALL_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                  mainCategoryId: z\n                    .string()\n                    .describe(\n                      'The ID of the product\\'s primary direct [category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction), which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  costRange: z\n                    .object({\n                      minValue: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe('Minimum value.')\n                        .optional(),\n                      maxValue: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe('Maximum value.')\n                        .optional(),\n                    })\n                    .describe(\n                      'Product cost range - minimum and maximum costs of all product variants.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                    )\n                    .optional(),\n                  inventory: z\n                    .object({\n                      availabilityStatus: z\n                        .enum([\n                          'IN_STOCK',\n                          'OUT_OF_STOCK',\n                          'PARTIALLY_OUT_OF_STOCK',\n                        ])\n                        .describe('Current availability status.')\n                        .optional(),\n                      preorderStatus: z\n                        .enum(['ENABLED', 'DISABLED', 'PARTIALLY_ENABLED'])\n                        .describe('Current preorder status.')\n                        .optional(),\n                      preorderAvailability: z\n                        .enum(['ALL_VARIANTS', 'NO_VARIANTS', 'SOME_VARIANTS'])\n                        .describe('Preorder availability status.')\n                        .optional(),\n                    })\n                    .describe(\n                      'Product inventory info.\\n\\n> **Note:** This field reflects the aggregated inventory status from the default location only. Use the [Inventory Items API](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/inventory-items-v3/introduction) to manage inventory for specific locations. Learn more about [inventory management](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-inventory-management).'\n                    )\n                    .optional(),\n                  productType: z\n                    .enum(['PHYSICAL', 'DIGITAL'])\n                    .describe(\n                      'Product type: `PHYSICAL` for tangible goods that require shipping, or `DIGITAL` for downloadable content.\\n\\nWhen passing `productType: PHYSICAL`, you must also pass `physicalProperties`. When passing `productType: DIGITAL`, you can optionally pass `digitalProperties` in each variant.'\n                    )\n                    .optional(),\n                  handle: z\n                    .string()\n                    .describe(\n                      \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n                    )\n                    .min(1)\n                    .max(100)\n                    .optional()\n                    .nullable(),\n                  currency: z\n                    .string()\n                    .describe(\n                      'Currency used for the pricing of this product, in [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes) format.\\n\\nDefaults to the currency defined in the site settings, unless specified in the request\\'s `x-wix-currency` header.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional()\n                    .nullable(),\n                  breadcrumbsInfo: z\n                    .object({\n                      breadcrumbs: z\n                        .array(\n                          z.object({\n                            categoryId: z\n                              .string()\n                              .describe('Category ID.')\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                            categoryName: z\n                              .string()\n                              .describe('Category name.')\n                              .min(1)\n                              .max(80)\n                              .optional(),\n                            categorySlug: z\n                              .string()\n                              .describe('Category slug.')\n                              .min(1)\n                              .max(100)\n                              .optional(),\n                          })\n                        )\n                        .max(5)\n                        .optional(),\n                    })\n                    .describe(\n                      'Breadcrumbs of the `mainCategoryId`. Used to navigate to parent [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction). Useful for building navigation UI and for SEO purposes.\\n> **Note:** Returned only when you pass `\"BREADCRUMBS_INFO\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                  actualPriceRange: z\n                    .object({\n                      minValue: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe('Minimum value.')\n                        .optional(),\n                      maxValue: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe('Maximum value.')\n                        .optional(),\n                    })\n                    .describe(\n                      'Minimum and maximum current selling prices across all product variants.'\n                    )\n                    .optional(),\n                  compareAtPriceRange: z\n                    .object({\n                      minValue: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe('Minimum value.')\n                        .optional(),\n                      maxValue: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe('Maximum value.')\n                        .optional(),\n                    })\n                    .describe(\n                      'Minimum and maximum compare-at prices (original prices before discounts) across all product variants. Used to show savings to customers.'\n                    )\n                    .optional(),\n                  variantsInfo: z\n                    .object({\n                      variants: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              _id: z\n                                .string()\n                                .describe('Variant ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              visible: z\n                                .boolean()\n                                .describe(\n                                  \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                                )\n                                .optional()\n                                .nullable(),\n                              sku: z\n                                .string()\n                                .describe('Variant SKU (stock keeping unit).')\n                                .min(1)\n                                .max(40)\n                                .optional()\n                                .nullable(),\n                              barcode: z\n                                .string()\n                                .describe('Variant barcode.')\n                                .min(1)\n                                .max(40)\n                                .optional()\n                                .nullable(),\n                              choices: z\n                                .array(\n                                  z.object({\n                                    optionChoiceIds: z\n                                      .object({\n                                        optionId: z\n                                          .string()\n                                          .describe('Option ID.')\n                                          .min(1)\n                                          .max(36)\n                                          .optional(),\n                                        choiceId: z\n                                          .string()\n                                          .describe('Choice ID.')\n                                          .regex(\n                                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                            'Must be a valid GUID'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                                      )\n                                      .optional(),\n                                    optionChoiceNames: z\n                                      .object({\n                                        optionName: z\n                                          .string()\n                                          .describe('Option name.')\n                                          .min(1)\n                                          .optional(),\n                                        choiceName: z\n                                          .string()\n                                          .describe('Choice name.')\n                                          .min(1)\n                                          .optional(),\n                                        renderType: z\n                                          .enum([\n                                            'TEXT_CHOICES',\n                                            'SWATCH_CHOICES',\n                                          ])\n                                          .describe(\n                                            'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .optional(),\n                                  })\n                                )\n                                .min(0)\n                                .max(6)\n                                .optional(),\n                              price: z\n                                .object({\n                                  actualPrice: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      \"Variant's current selling price. Must be greater than or equal to 0.\"\n                                    )\n                                    .optional(),\n                                  compareAtPrice: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                                    )\n                                    .optional(),\n                                  priceAfterDiscount: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe('Variant price.')\n                                .optional(),\n                              revenueDetails: z\n                                .object({\n                                  cost: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe('Item cost.')\n                                    .optional(),\n                                  profit: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                                    )\n                                    .optional(),\n                                  profitMargin: z\n                                    .number()\n                                    .describe(\n                                      'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                                    )\n                                    .min(0)\n                                    .max(1)\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                                )\n                                .optional(),\n                              media: z\n                                .intersection(\n                                  z.object({\n                                    altText: z\n                                      .string()\n                                      .describe('Image alt text.')\n                                      .min(1)\n                                      .max(1000)\n                                      .optional()\n                                      .nullable(),\n                                    displayName: z\n                                      .string()\n                                      .describe(\n                                        \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                      )\n                                      .max(80)\n                                      .optional()\n                                      .nullable(),\n                                    mediaType: z\n                                      .enum(['IMAGE', 'VIDEO'])\n                                      .describe('Media type.')\n                                      .optional(),\n                                    thumbnail: z\n                                      .object({\n                                        url: z\n                                          .string()\n                                          .describe('Thumbnail url.')\n                                          .url()\n                                          .optional(),\n                                        height: z\n                                          .number()\n                                          .int()\n                                          .describe('Thumbnail height.')\n                                          .optional(),\n                                        width: z\n                                          .number()\n                                          .int()\n                                          .describe('Thumbnail width.')\n                                          .optional(),\n                                        altText: z\n                                          .string()\n                                          .describe('Thumbnail alt text.')\n                                          .min(1)\n                                          .max(1000)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .optional(),\n                                    uploadId: z\n                                      .string()\n                                      .describe(\n                                        'ID used to upload media to Wix Media Manager.'\n                                      )\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional(),\n                                  }),\n                                  z.intersection(\n                                    z.xor([\n                                      z.object({\n                                        _id: z.never().optional(),\n                                        url: z.never().optional(),\n                                      }),\n                                      z.object({\n                                        url: z.never().optional(),\n                                        _id: z\n                                          .string()\n                                          .describe(\n                                            'Set media by ID of an existing file in Wix Media Manager.'\n                                          )\n                                          .min(1)\n                                          .max(200),\n                                      }),\n                                      z.object({\n                                        _id: z.never().optional(),\n                                        url: z\n                                          .string()\n                                          .describe(\n                                            'Set media using an external media URL.'\n                                          )\n                                          .url(),\n                                      }),\n                                    ]),\n                                    z.xor([\n                                      z.object({\n                                        image: z.never().optional(),\n                                        video: z.never().optional(),\n                                      }),\n                                      z.object({\n                                        video: z.never().optional(),\n                                        image: z\n                                          .string()\n                                          .describe(\n                                            \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                          ),\n                                      }),\n                                      z.object({\n                                        image: z.never().optional(),\n                                        video: z\n                                          .string()\n                                          .describe(\n                                            \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                          ),\n                                      }),\n                                    ])\n                                  )\n                                )\n                                .describe('Variant media.')\n                                .optional(),\n                              subscriptionPricesInfo: z\n                                .object({\n                                  subscriptionPrices: z\n                                    .array(\n                                      z.object({\n                                        subscriptionId: z\n                                          .string()\n                                          .describe('Subscription ID.')\n                                          .regex(\n                                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                            'Must be a valid GUID'\n                                          )\n                                          .optional(),\n                                        price: z\n                                          .object({\n                                            amount: z\n                                              .string()\n                                              .describe(\n                                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                              )\n                                              .optional(),\n                                            formattedAmount: z\n                                              .string()\n                                              .describe(\n                                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .max(20)\n                                              .optional()\n                                              .nullable(),\n                                          })\n                                          .describe(\n                                            'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                          )\n                                          .optional(),\n                                        pricePerUnit: z\n                                          .object({\n                                            value: z\n                                              .string()\n                                              .describe(\n                                                'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                              )\n                                              .optional(),\n                                            description: z\n                                              .string()\n                                              .describe(\n                                                'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .max(20)\n                                              .optional()\n                                              .nullable(),\n                                            priceAfterDiscount: z\n                                              .object({\n                                                amount: z\n                                                  .string()\n                                                  .describe(\n                                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                                  )\n                                                  .optional(),\n                                                formattedAmount: z\n                                                  .string()\n                                                  .describe(\n                                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                                  )\n                                                  .max(20)\n                                                  .optional()\n                                                  .nullable(),\n                                              })\n                                              .describe(\n                                                'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                              )\n                                              .optional(),\n                                          })\n                                          .describe('Price per unit info.')\n                                          .optional(),\n                                        priceAfterDiscount: z\n                                          .object({\n                                            amount: z\n                                              .string()\n                                              .describe(\n                                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                              )\n                                              .optional(),\n                                            formattedAmount: z\n                                              .string()\n                                              .describe(\n                                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .max(20)\n                                              .optional()\n                                              .nullable(),\n                                          })\n                                          .describe(\n                                            'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                          )\n                                          .optional(),\n                                      })\n                                    )\n                                    .max(6)\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                                )\n                                .optional(),\n                              inventoryStatus: z\n                                .object({\n                                  inStock: z\n                                    .boolean()\n                                    .describe(\n                                      'Whether the variant is in stock.'\n                                    )\n                                    .optional(),\n                                  preorderEnabled: z\n                                    .boolean()\n                                    .describe(\n                                      'Whether preorder is enabled for this variant.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe('Variant inventory status.')\n                                .optional(),\n                            }),\n                            z.xor([\n                              z.object({\n                                physicalProperties: z.never().optional(),\n                                digitalProperties: z.never().optional(),\n                              }),\n                              z.object({\n                                digitalProperties: z.never().optional(),\n                                physicalProperties: z\n                                  .object({\n                                    weight: z\n                                      .number()\n                                      .describe(\n                                        'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                                      )\n                                      .min(0)\n                                      .max(999999999.99)\n                                      .optional()\n                                      .nullable(),\n                                    pricePerUnit: z\n                                      .object({\n                                        settings: z\n                                          .object({\n                                            quantity: z\n                                              .number()\n                                              .describe(\n                                                'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                              )\n                                              .min(0.01)\n                                              .max(999999999.99)\n                                              .optional(),\n                                            measurementUnit: z\n                                              .enum([\n                                                'UNSPECIFIED',\n                                                'ML',\n                                                'CL',\n                                                'L',\n                                                'CBM',\n                                                'MG',\n                                                'G',\n                                                'KG',\n                                                'MM',\n                                                'CM',\n                                                'M',\n                                                'SQM',\n                                                'OZ',\n                                                'LB',\n                                                'FLOZ',\n                                                'PT',\n                                                'QT',\n                                                'GAL',\n                                                'IN',\n                                                'FT',\n                                                'YD',\n                                                'SQFT',\n                                              ])\n                                              .describe(\n                                                'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                              )\n                                              .optional(),\n                                          })\n                                          .describe(\n                                            'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                          )\n                                          .optional(),\n                                        value: z\n                                          .string()\n                                          .describe(\n                                            \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                          )\n                                          .optional(),\n                                        description: z\n                                          .string()\n                                          .describe(\n                                            'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(100)\n                                          .optional()\n                                          .nullable(),\n                                        priceAfterDiscount: z\n                                          .object({\n                                            amount: z\n                                              .string()\n                                              .describe(\n                                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                              )\n                                              .optional(),\n                                            formattedAmount: z\n                                              .string()\n                                              .describe(\n                                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .max(20)\n                                              .optional()\n                                              .nullable(),\n                                          })\n                                          .describe(\n                                            'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                                      )\n                                      .optional(),\n                                    productDimensions: z\n                                      .object({\n                                        length: z\n                                          .string()\n                                          .describe(\n                                            'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                          )\n                                          .optional()\n                                          .nullable(),\n                                        width: z\n                                          .string()\n                                          .describe(\n                                            'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                          )\n                                          .optional()\n                                          .nullable(),\n                                        height: z\n                                          .string()\n                                          .describe(\n                                            'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                          )\n                                          .optional()\n                                          .nullable(),\n                                        unit: z\n                                          .enum([\n                                            'UNKNOWN_DIMENSIONS_UNIT',\n                                            'MM',\n                                            'CM',\n                                            'M',\n                                            'IN',\n                                            'FT',\n                                            'YD',\n                                          ])\n                                          .describe(\n                                            'Unit of measurement for dimensions (length, width, height).'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Product dimensions (length, width, height of the physical product).'\n                                      )\n                                      .optional(),\n                                    packageDimensions: z\n                                      .object({\n                                        length: z\n                                          .string()\n                                          .describe(\n                                            'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                          )\n                                          .optional()\n                                          .nullable(),\n                                        width: z\n                                          .string()\n                                          .describe(\n                                            'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                          )\n                                          .optional()\n                                          .nullable(),\n                                        height: z\n                                          .string()\n                                          .describe(\n                                            'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                          )\n                                          .optional()\n                                          .nullable(),\n                                        unit: z\n                                          .enum([\n                                            'UNKNOWN_DIMENSIONS_UNIT',\n                                            'MM',\n                                            'CM',\n                                            'M',\n                                            'IN',\n                                            'FT',\n                                            'YD',\n                                          ])\n                                          .describe(\n                                            'Unit of measurement for dimensions (length, width, height).'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Package dimensions (length, width, height of the shipping package).'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Physical properties. Must be passed when `productType: PHYSICAL`'\n                                  ),\n                              }),\n                              z.object({\n                                physicalProperties: z.never().optional(),\n                                digitalProperties: z\n                                  .object({\n                                    digitalFile: z\n                                      .object({\n                                        _id: z\n                                          .string()\n                                          .describe(\n                                            'Media ID in media manager.'\n                                          )\n                                          .min(1)\n                                          .max(100)\n                                          .optional(),\n                                        fileName: z\n                                          .string()\n                                          .describe('Original file name.')\n                                          .min(1)\n                                          .max(1000)\n                                          .optional(),\n                                        fileSize: z\n                                          .string()\n                                          .describe('Original file size.')\n                                          .min(1)\n                                          .max(1000)\n                                          .optional()\n                                          .nullable(),\n                                        fileType: z\n                                          .enum([\n                                            'UNSPECIFIED',\n                                            'SECURE_PICTURE',\n                                            'SECURE_VIDEO',\n                                            'SECURE_DOCUMENT',\n                                            'SECURE_MUSIC',\n                                            'SECURE_ARCHIVE',\n                                            'SECURE_RAW',\n                                          ])\n                                          .describe('File type.')\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Digital properties. Must be passed when `productType: DIGITAL`'\n                                  ),\n                              }),\n                            ])\n                          )\n                        )\n                        .min(1)\n                        .max(1000)\n                        .optional(),\n                    })\n                    .describe(\n                      'Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nYou must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).'\n                    )\n                    .optional(),\n                  purchaseEligibility: z\n                    .object({\n                      userCriteria: z.enum(['MEMBERS_ONLY']).optional(),\n                    })\n                    .describe('Purchase eligibility settings for the product.')\n                    .optional(),\n                  additionalRibbons: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('Ribbon ID.')\n                          .min(1)\n                          .max(36)\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Ribbon name.')\n                          .max(30)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(4)\n                    .optional(),\n                  extendedFields: z\n                    .object({\n                      namespaces: z\n                        .record(z.string(), z.record(z.string(), z.any()))\n                        .describe(\n                          'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                        )\n                        .optional(),\n                    })\n                    .describe(\n                      'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n                    )\n                    .optional(),\n                  tags: z\n                    .object({\n                      privateTags: z\n                        .object({\n                          tagIds: z.array(z.string()).max(100).optional(),\n                        })\n                        .describe(\n                          'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n                        )\n                        .optional(),\n                      publicTags: z\n                        .object({\n                          tagIds: z.array(z.string()).max(100).optional(),\n                        })\n                        .describe(\n                          'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n                        )\n                        .optional(),\n                    })\n                    .describe('Tags')\n                    .optional(),\n                  subscriptionDetails: z\n                    .object({\n                      subscriptions: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              _id: z\n                                .string()\n                                .describe('Subscription ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              title: z\n                                .string()\n                                .describe('Subscription title.')\n                                .min(1)\n                                .max(20)\n                                .optional(),\n                              description: z\n                                .string()\n                                .describe('Subscription description.')\n                                .max(60)\n                                .optional()\n                                .nullable(),\n                              visible: z\n                                .boolean()\n                                .describe(\n                                  'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                                )\n                                .optional()\n                                .nullable(),\n                              frequency: z\n                                .enum([\n                                  'UNDEFINED',\n                                  'DAY',\n                                  'WEEK',\n                                  'MONTH',\n                                  'YEAR',\n                                ])\n                                .describe(\n                                  'Frequency of recurring payment.\\nFor example, if `frequency: MONTH` and `billingCycles: 6`; payment will be made monthly for 6 months.'\n                                )\n                                .optional(),\n                              interval: z\n                                .number()\n                                .int()\n                                .describe(\n                                  'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional()\n                                .nullable(),\n                              discount: z\n                                .intersection(\n                                  z.object({\n                                    type: z\n                                      .enum(['AMOUNT', 'PERCENT'])\n                                      .describe('Discount type.')\n                                      .optional(),\n                                  }),\n                                  z.xor([\n                                    z.object({\n                                      amountOff: z.never().optional(),\n                                      percentOff: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      percentOff: z.never().optional(),\n                                      amountOff: z\n                                        .string()\n                                        .describe(\n                                          'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                                        ),\n                                    }),\n                                    z.object({\n                                      amountOff: z.never().optional(),\n                                      percentOff: z\n                                        .number()\n                                        .describe(\n                                          'Percentage subtracted from the variant price when calculating subscription prices.'\n                                        )\n                                        .min(0.1)\n                                        .max(99.9),\n                                    }),\n                                  ])\n                                )\n                                .describe(\n                                  'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                                )\n                                .optional(),\n                            }),\n                            z.xor([\n                              z.object({\n                                autoRenewal: z.never().optional(),\n                                billingCycles: z.never().optional(),\n                              }),\n                              z.object({\n                                billingCycles: z.never().optional(),\n                                autoRenewal: z\n                                  .boolean()\n                                  .describe(\n                                    'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                                  ),\n                              }),\n                              z.object({\n                                autoRenewal: z.never().optional(),\n                                billingCycles: z\n                                  .number()\n                                  .int()\n                                  .describe(\n                                    'Number of billing cycles before subscription ends.'\n                                  )\n                                  .min(2)\n                                  .max(999),\n                              }),\n                            ])\n                          )\n                        )\n                        .min(1)\n                        .max(6)\n                        .optional(),\n                      allowOneTimePurchases: z\n                        .boolean()\n                        .describe(\n                          'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n                        )\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n                    )\n                    .optional(),\n                  variantSummary: z\n                    .object({\n                      variantCount: z\n                        .number()\n                        .int()\n                        .describe(\n                          'The total number of variants for the product.'\n                        )\n                        .optional(),\n                      minPriceVariant: z\n                        .intersection(\n                          z.object({\n                            _id: z\n                              .string()\n                              .describe('Variant ID.')\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional()\n                              .nullable(),\n                            visible: z\n                              .boolean()\n                              .describe(\n                                \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                              )\n                              .optional()\n                              .nullable(),\n                            sku: z\n                              .string()\n                              .describe('Variant SKU (stock keeping unit).')\n                              .min(1)\n                              .max(40)\n                              .optional()\n                              .nullable(),\n                            barcode: z\n                              .string()\n                              .describe('Variant barcode.')\n                              .min(1)\n                              .max(40)\n                              .optional()\n                              .nullable(),\n                            choices: z\n                              .array(\n                                z.object({\n                                  optionChoiceIds: z\n                                    .object({\n                                      optionId: z\n                                        .string()\n                                        .describe('Option ID.')\n                                        .min(1)\n                                        .max(36)\n                                        .optional(),\n                                      choiceId: z\n                                        .string()\n                                        .describe('Choice ID.')\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    })\n                                    .describe(\n                                      \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                                    )\n                                    .optional(),\n                                  optionChoiceNames: z\n                                    .object({\n                                      optionName: z\n                                        .string()\n                                        .describe('Option name.')\n                                        .min(1)\n                                        .optional(),\n                                      choiceName: z\n                                        .string()\n                                        .describe('Choice name.')\n                                        .min(1)\n                                        .optional(),\n                                      renderType: z\n                                        .enum([\n                                          'TEXT_CHOICES',\n                                          'SWATCH_CHOICES',\n                                        ])\n                                        .describe(\n                                          'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                                        )\n                                        .optional(),\n                                    })\n                                    .describe(\n                                      'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .optional(),\n                                })\n                              )\n                              .min(0)\n                              .max(6)\n                              .optional(),\n                            price: z\n                              .object({\n                                actualPrice: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    \"Variant's current selling price. Must be greater than or equal to 0.\"\n                                  )\n                                  .optional(),\n                                compareAtPrice: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                                  )\n                                  .optional(),\n                                priceAfterDiscount: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe('Variant price.')\n                              .optional(),\n                            revenueDetails: z\n                              .object({\n                                cost: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe('Item cost.')\n                                  .optional(),\n                                profit: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                                  )\n                                  .optional(),\n                                profitMargin: z\n                                  .number()\n                                  .describe(\n                                    'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                                  )\n                                  .min(0)\n                                  .max(1)\n                                  .optional(),\n                              })\n                              .describe(\n                                'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                              )\n                              .optional(),\n                            media: z\n                              .intersection(\n                                z.object({\n                                  altText: z\n                                    .string()\n                                    .describe('Image alt text.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                  displayName: z\n                                    .string()\n                                    .describe(\n                                      \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                    )\n                                    .max(80)\n                                    .optional()\n                                    .nullable(),\n                                  mediaType: z\n                                    .enum(['IMAGE', 'VIDEO'])\n                                    .describe('Media type.')\n                                    .optional(),\n                                  thumbnail: z\n                                    .object({\n                                      url: z\n                                        .string()\n                                        .describe('Thumbnail url.')\n                                        .url()\n                                        .optional(),\n                                      height: z\n                                        .number()\n                                        .int()\n                                        .describe('Thumbnail height.')\n                                        .optional(),\n                                      width: z\n                                        .number()\n                                        .int()\n                                        .describe('Thumbnail width.')\n                                        .optional(),\n                                      altText: z\n                                        .string()\n                                        .describe('Thumbnail alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .optional(),\n                                  uploadId: z\n                                    .string()\n                                    .describe(\n                                      'ID used to upload media to Wix Media Manager.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                }),\n                                z.intersection(\n                                  z.xor([\n                                    z.object({\n                                      _id: z.never().optional(),\n                                      url: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      url: z.never().optional(),\n                                      _id: z\n                                        .string()\n                                        .describe(\n                                          'Set media by ID of an existing file in Wix Media Manager.'\n                                        )\n                                        .min(1)\n                                        .max(200),\n                                    }),\n                                    z.object({\n                                      _id: z.never().optional(),\n                                      url: z\n                                        .string()\n                                        .describe(\n                                          'Set media using an external media URL.'\n                                        )\n                                        .url(),\n                                    }),\n                                  ]),\n                                  z.xor([\n                                    z.object({\n                                      image: z.never().optional(),\n                                      video: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      video: z.never().optional(),\n                                      image: z\n                                        .string()\n                                        .describe(\n                                          \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                        ),\n                                    }),\n                                    z.object({\n                                      image: z.never().optional(),\n                                      video: z\n                                        .string()\n                                        .describe(\n                                          \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                        ),\n                                    }),\n                                  ])\n                                )\n                              )\n                              .describe('Variant media.')\n                              .optional(),\n                            subscriptionPricesInfo: z\n                              .object({\n                                subscriptionPrices: z\n                                  .array(\n                                    z.object({\n                                      subscriptionId: z\n                                        .string()\n                                        .describe('Subscription ID.')\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                      price: z\n                                        .object({\n                                          amount: z\n                                            .string()\n                                            .describe(\n                                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                            )\n                                            .optional(),\n                                          formattedAmount: z\n                                            .string()\n                                            .describe(\n                                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                            )\n                                            .max(20)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                        )\n                                        .optional(),\n                                      pricePerUnit: z\n                                        .object({\n                                          value: z\n                                            .string()\n                                            .describe(\n                                              'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                            )\n                                            .optional(),\n                                          description: z\n                                            .string()\n                                            .describe(\n                                              'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                            )\n                                            .max(20)\n                                            .optional()\n                                            .nullable(),\n                                          priceAfterDiscount: z\n                                            .object({\n                                              amount: z\n                                                .string()\n                                                .describe(\n                                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                                )\n                                                .optional(),\n                                              formattedAmount: z\n                                                .string()\n                                                .describe(\n                                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                                )\n                                                .max(20)\n                                                .optional()\n                                                .nullable(),\n                                            })\n                                            .describe(\n                                              'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                            )\n                                            .optional(),\n                                        })\n                                        .describe('Price per unit info.')\n                                        .optional(),\n                                      priceAfterDiscount: z\n                                        .object({\n                                          amount: z\n                                            .string()\n                                            .describe(\n                                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                            )\n                                            .optional(),\n                                          formattedAmount: z\n                                            .string()\n                                            .describe(\n                                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                            )\n                                            .max(20)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                        )\n                                        .optional(),\n                                    })\n                                  )\n                                  .max(6)\n                                  .optional(),\n                              })\n                              .describe(\n                                'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                              )\n                              .optional(),\n                            inventoryStatus: z\n                              .object({\n                                inStock: z\n                                  .boolean()\n                                  .describe('Whether the variant is in stock.')\n                                  .optional(),\n                                preorderEnabled: z\n                                  .boolean()\n                                  .describe(\n                                    'Whether preorder is enabled for this variant.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe('Variant inventory status.')\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              physicalProperties: z.never().optional(),\n                              digitalProperties: z.never().optional(),\n                            }),\n                            z.object({\n                              digitalProperties: z.never().optional(),\n                              physicalProperties: z\n                                .object({\n                                  weight: z\n                                    .number()\n                                    .describe(\n                                      'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                                    )\n                                    .min(0)\n                                    .max(999999999.99)\n                                    .optional()\n                                    .nullable(),\n                                  pricePerUnit: z\n                                    .object({\n                                      settings: z\n                                        .object({\n                                          quantity: z\n                                            .number()\n                                            .describe(\n                                              'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                            )\n                                            .min(0.01)\n                                            .max(999999999.99)\n                                            .optional(),\n                                          measurementUnit: z\n                                            .enum([\n                                              'UNSPECIFIED',\n                                              'ML',\n                                              'CL',\n                                              'L',\n                                              'CBM',\n                                              'MG',\n                                              'G',\n                                              'KG',\n                                              'MM',\n                                              'CM',\n                                              'M',\n                                              'SQM',\n                                              'OZ',\n                                              'LB',\n                                              'FLOZ',\n                                              'PT',\n                                              'QT',\n                                              'GAL',\n                                              'IN',\n                                              'FT',\n                                              'YD',\n                                              'SQFT',\n                                            ])\n                                            .describe(\n                                              'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                            )\n                                            .optional(),\n                                        })\n                                        .describe(\n                                          'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                        )\n                                        .optional(),\n                                      value: z\n                                        .string()\n                                        .describe(\n                                          \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                        )\n                                        .optional(),\n                                      description: z\n                                        .string()\n                                        .describe(\n                                          'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(100)\n                                        .optional()\n                                        .nullable(),\n                                      priceAfterDiscount: z\n                                        .object({\n                                          amount: z\n                                            .string()\n                                            .describe(\n                                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                            )\n                                            .optional(),\n                                          formattedAmount: z\n                                            .string()\n                                            .describe(\n                                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                            )\n                                            .max(20)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                        )\n                                        .optional(),\n                                    })\n                                    .describe(\n                                      \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                                    )\n                                    .optional(),\n                                  productDimensions: z\n                                    .object({\n                                      length: z\n                                        .string()\n                                        .describe(\n                                          'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                        )\n                                        .optional()\n                                        .nullable(),\n                                      width: z\n                                        .string()\n                                        .describe(\n                                          'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                        )\n                                        .optional()\n                                        .nullable(),\n                                      height: z\n                                        .string()\n                                        .describe(\n                                          'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                        )\n                                        .optional()\n                                        .nullable(),\n                                      unit: z\n                                        .enum([\n                                          'UNKNOWN_DIMENSIONS_UNIT',\n                                          'MM',\n                                          'CM',\n                                          'M',\n                                          'IN',\n                                          'FT',\n                                          'YD',\n                                        ])\n                                        .describe(\n                                          'Unit of measurement for dimensions (length, width, height).'\n                                        )\n                                        .optional(),\n                                    })\n                                    .describe(\n                                      'Product dimensions (length, width, height of the physical product).'\n                                    )\n                                    .optional(),\n                                  packageDimensions: z\n                                    .object({\n                                      length: z\n                                        .string()\n                                        .describe(\n                                          'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                        )\n                                        .optional()\n                                        .nullable(),\n                                      width: z\n                                        .string()\n                                        .describe(\n                                          'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                        )\n                                        .optional()\n                                        .nullable(),\n                                      height: z\n                                        .string()\n                                        .describe(\n                                          'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                        )\n                                        .optional()\n                                        .nullable(),\n                                      unit: z\n                                        .enum([\n                                          'UNKNOWN_DIMENSIONS_UNIT',\n                                          'MM',\n                                          'CM',\n                                          'M',\n                                          'IN',\n                                          'FT',\n                                          'YD',\n                                        ])\n                                        .describe(\n                                          'Unit of measurement for dimensions (length, width, height).'\n                                        )\n                                        .optional(),\n                                    })\n                                    .describe(\n                                      'Package dimensions (length, width, height of the shipping package).'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Physical properties. Must be passed when `productType: PHYSICAL`'\n                                ),\n                            }),\n                            z.object({\n                              physicalProperties: z.never().optional(),\n                              digitalProperties: z\n                                .object({\n                                  digitalFile: z\n                                    .object({\n                                      _id: z\n                                        .string()\n                                        .describe('Media ID in media manager.')\n                                        .min(1)\n                                        .max(100)\n                                        .optional(),\n                                      fileName: z\n                                        .string()\n                                        .describe('Original file name.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional(),\n                                      fileSize: z\n                                        .string()\n                                        .describe('Original file size.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                      fileType: z\n                                        .enum([\n                                          'UNSPECIFIED',\n                                          'SECURE_PICTURE',\n                                          'SECURE_VIDEO',\n                                          'SECURE_DOCUMENT',\n                                          'SECURE_MUSIC',\n                                          'SECURE_ARCHIVE',\n                                          'SECURE_RAW',\n                                        ])\n                                        .describe('File type.')\n                                        .optional(),\n                                    })\n                                    .describe(\n                                      'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Digital properties. Must be passed when `productType: DIGITAL`'\n                                ),\n                            }),\n                          ])\n                        )\n                        .describe(\n                          'The variant with the lowest `actualPrice` among visible variants for this product.\\n\\nHidden variants are excluded; ties are broken by variant order. Empty if the product has no visible variants.\\n> **Note:** Returned only when you pass `\"MIN_PRICE_VARIANT\"` to the `fields` array in Products API requests.'\n                        )\n                        .optional(),\n                    })\n                    .describe('The total number of variants for the product.')\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({ physicalProperties: z.never().optional() }),\n                  z.object({\n                    physicalProperties: z\n                      .object({\n                        pricePerUnit: z\n                          .object({\n                            quantity: z\n                              .number()\n                              .describe(\n                                'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                              )\n                              .min(0.01)\n                              .max(999999999.99)\n                              .optional(),\n                            measurementUnit: z\n                              .enum([\n                                'UNSPECIFIED',\n                                'ML',\n                                'CL',\n                                'L',\n                                'CBM',\n                                'MG',\n                                'G',\n                                'KG',\n                                'MM',\n                                'CM',\n                                'M',\n                                'SQM',\n                                'OZ',\n                                'LB',\n                                'FLOZ',\n                                'PT',\n                                'QT',\n                                'GAL',\n                                'IN',\n                                'FT',\n                                'YD',\n                                'SQFT',\n                              ])\n                              .describe(\n                                'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n                          )\n                          .optional(),\n                        fulfillerId: z\n                          .string()\n                          .describe('Fulfiller ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        shippingWeightRange: z\n                          .object({\n                            minValue: z\n                              .number()\n                              .describe(\n                                'Minimum weight across all variants associated with this product.'\n                              )\n                              .min(0)\n                              .max(999999999.99)\n                              .optional(),\n                            maxValue: z\n                              .number()\n                              .describe(\n                                'Maximum weight across all variants associated with this product.'\n                              )\n                              .min(0)\n                              .max(999999999.99)\n                              .optional(),\n                          })\n                          .describe(\n                            'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n                          )\n                          .optional(),\n                        pricePerUnitRange: z\n                          .object({\n                            minValue: z\n                              .object({\n                                value: z\n                                  .string()\n                                  .describe(\n                                    \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                  )\n                                  .optional(),\n                                description: z\n                                  .string()\n                                  .describe(\n                                    'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                                  )\n                                  .max(100)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Minimum price per unit across all variants.'\n                              )\n                              .optional(),\n                            maxValue: z\n                              .object({\n                                value: z\n                                  .string()\n                                  .describe(\n                                    \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                  )\n                                  .optional(),\n                                description: z\n                                  .string()\n                                  .describe(\n                                    'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                                  )\n                                  .max(100)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Maximum price per unit across all variants.'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n                          )\n                          .optional(),\n                        weightMeasurementUnitInfo: z\n                          .object({\n                            weightMeasurementUnit: z\n                              .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                              .describe('Weight measurement unit.')\n                              .optional(),\n                          })\n                          .describe(\n                            'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        deliveryProfileId: z\n                          .string()\n                          .describe('Delivery profile ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\n                'Full product entity.\\n\\nReturned only if `returnEntity: true` is passed in the request.'\n              )\n              .optional(),\n          })\n        )\n        .min(1)\n        .max(100)\n        .optional(),\n      bulkActionMetadata: z\n        .object({\n          totalSuccesses: z\n            .number()\n            .int()\n            .describe('Number of items that were successfully processed.')\n            .optional(),\n          totalFailures: z\n            .number()\n            .int()\n            .describe(\"Number of items that couldn't be processed.\")\n            .optional(),\n          undetailedFailures: z\n            .number()\n            .int()\n            .describe(\n              'Number of failures without details because detailed failure threshold was exceeded.'\n            )\n            .optional(),\n        })\n        .describe('Bulk action metadata.')\n        .optional(),\n    })\n    .describe('Products updated by bulk action.')\n    .optional(),\n  inventoryResults: z\n    .object({\n      results: z\n        .array(\n          z.object({\n            itemMetadata: z\n              .object({\n                _id: z\n                  .string()\n                  .describe(\n                    \"Item ID. Should always be available, unless it's impossible (for example, when failing to create an item).\"\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                originalIndex: z\n                  .number()\n                  .int()\n                  .describe(\n                    'Index of the item within the request array. Allows for correlation between request and response items.'\n                  )\n                  .optional(),\n                success: z\n                  .boolean()\n                  .describe(\n                    'Whether the requested action was successful for this item. When `false`, the `error` field is populated.'\n                  )\n                  .optional(),\n                error: z\n                  .object({\n                    code: z.string().describe('Error code.').optional(),\n                    description: z\n                      .string()\n                      .describe('Description of the error.')\n                      .optional(),\n                    data: z\n                      .record(z.string(), z.any())\n                      .describe('Data related to the error.')\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe('Details about the error in case of failure.')\n                  .optional(),\n              })\n              .describe('Bulk action metadata for inventory item.')\n              .optional(),\n            item: z\n              .intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Inventory item ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  revision: z\n                    .string()\n                    .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                    .describe(\n                      'Revision number, which increments by 1 each time the inventory item is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the inventory item.\\n\\nIgnored when creating an inventory item.'\n                    )\n                    .optional()\n                    .nullable(),\n                  _createdDate: z\n                    .date()\n                    .describe('Date and time the inventory item was created.')\n                    .optional()\n                    .nullable(),\n                  _updatedDate: z\n                    .date()\n                    .describe(\n                      'Date and time the inventory item was last updated.'\n                    )\n                    .optional()\n                    .nullable(),\n                  variantId: z\n                    .string()\n                    .describe('Variant ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                  locationId: z\n                    .string()\n                    .describe(\n                      \"Stores location ID. If not specified when creating an inventory item, the store's default location is used.\"\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  productId: z\n                    .string()\n                    .describe('Product ID.')\n                    .min(1)\n                    .max(36)\n                    .optional(),\n                  trackQuantity: z\n                    .boolean()\n                    .describe('Whether the quantity is being tracked.')\n                    .optional(),\n                  availabilityStatus: z\n                    .enum(['OUT_OF_STOCK', 'IN_STOCK', 'PREORDER'])\n                    .describe('Inventory item availability status.')\n                    .optional(),\n                  preorderInfo: z\n                    .object({\n                      enabled: z\n                        .boolean()\n                        .describe(\n                          \"Whether preorder is enabled for this inventory item.\\n\\n> **Note:** Preorder can't be enabled for digital products or products with subscriptions.\\n\\nDefault: `false`\"\n                        )\n                        .optional()\n                        .nullable(),\n                      message: z\n                        .string()\n                        .describe(\n                          'Message displayed to customers when the item is out of stock and preorder is enabled.'\n                        )\n                        .min(1)\n                        .max(250)\n                        .optional()\n                        .nullable(),\n                      limit: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Maximum number of items that can be preordered after stock reaches zero.\\n\\nSupported only for inventory items with `trackQuantity = true`.\\n\\nDefault: `100000`'\n                        )\n                        .min(0)\n                        .max(100000)\n                        .optional()\n                        .nullable(),\n                      counter: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Number of times this item has been preordered.\\n\\nSupported only for inventory items with `trackQuantity = true`.'\n                        )\n                        .min(0)\n                        .max(99999)\n                        .optional()\n                        .nullable(),\n                      quantity: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Remaining quantity available for preorder.\\n\\nSupported only for items with `trackQuantity` set to `true`.'\n                        )\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      \"Item preorder info.\\n\\nPreorder settings are configured per inventory item, so each variant-location combination can have its own preorder configuration.\\n\\n> **Note:** The product entity's `inventory.preorderStatus` and `inventory.preorderAvailability` fields reflect only the default location's preorder state.\"\n                    )\n                    .optional(),\n                  product: z\n                    .object({\n                      name: z\n                        .string()\n                        .describe('Product name.')\n                        .max(80)\n                        .optional()\n                        .nullable(),\n                      directCategoryIds: z\n                        .array(z.string())\n                        .max(2000)\n                        .optional(),\n                      variantName: z\n                        .string()\n                        .describe('Variant name.')\n                        .min(1)\n                        .max(250)\n                        .optional()\n                        .nullable(),\n                      variantSku: z\n                        .string()\n                        .describe('Variant SKU (stock keeping unit).')\n                        .min(1)\n                        .max(40)\n                        .optional()\n                        .nullable(),\n                      variantVisible: z\n                        .boolean()\n                        .describe(\n                          'Whether the variant is visible in the store.'\n                        )\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Associated product and variant details.')\n                    .optional(),\n                  extendedFields: z\n                    .object({\n                      namespaces: z\n                        .record(z.string(), z.record(z.string(), z.any()))\n                        .describe(\n                          'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                        )\n                        .optional(),\n                    })\n                    .describe(\n                      'Custom field data for the inventory item object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n                    )\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    inStock: z.never().optional(),\n                    quantity: z.never().optional(),\n                  }),\n                  z.object({\n                    quantity: z.never().optional(),\n                    inStock: z\n                      .boolean()\n                      .describe(\n                        \"Indicates that inventory is tracked by status rather than quantity.\\n\\nWhen set to `true`, the item is marked as available for sale without tracking exact quantities.\\nWhen set to `false`, the item is marked as out of stock.\\nThis tracking method is useful for made-to-order products or items with unlimited inventory.\\n\\nWhen using this tracking method, `trackQuantity` is `false` and preorder limits aren't supported.\"\n                      ),\n                  }),\n                  z.object({\n                    inStock: z.never().optional(),\n                    quantity: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Indicates that inventory is tracked by quantity.\\n\\nSet this field to the number of items currently in stock.\\nThis tracking method is useful when you need to know exactly how many items are available.\\n\\nWhen using this tracking method, `trackQuantity` is `true`.\\nQuantity can be negative when inventory is decremented for an order that has already been paid.'\n                      )\n                      .min(-99999)\n                      .max(99999),\n                  }),\n                ])\n              )\n              .describe(\n                'Full inventory item entity.\\n\\nReturned only if `returnEntity: true` is passed in the request.'\n              )\n              .optional(),\n          })\n        )\n        .min(0)\n        .max(1000)\n        .optional(),\n      bulkActionMetadata: z\n        .object({\n          totalSuccesses: z\n            .number()\n            .int()\n            .describe('Number of items that were successfully processed.')\n            .optional(),\n          totalFailures: z\n            .number()\n            .int()\n            .describe(\"Number of items that couldn't be processed.\")\n            .optional(),\n          undetailedFailures: z\n            .number()\n            .int()\n            .describe(\n              'Number of failures without details because detailed failure threshold was exceeded.'\n            )\n            .optional(),\n        })\n        .describe('Bulk action metadata.')\n        .optional(),\n      error: z\n        .object({\n          code: z.string().describe('Error code.').optional(),\n          description: z\n            .string()\n            .describe('Description of the error.')\n            .optional(),\n          data: z\n            .record(z.string(), z.any())\n            .describe('Data related to the error.')\n            .optional()\n            .nullable(),\n        })\n        .describe('Error details in case of failed action.')\n        .optional(),\n    })\n    .describe('Inventories updated by bulk action.')\n    .optional(),\n});\nexport const BulkUpdateProductsByFilterRequest = z.object({\n  options: z.object({\n    filter: z\n      .record(z.string(), z.any())\n      .describe('Filter object.')\n      .optional()\n      .nullable(),\n    product: z\n      .intersection(\n        z.object({\n          _id: z\n            .string()\n            .describe('Product ID.')\n            .min(1)\n            .max(36)\n            .optional()\n            .nullable(),\n          revision: z\n            .string()\n            .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n            .describe(\n              'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product.'\n            )\n            .optional()\n            .nullable(),\n          _createdDate: z\n            .date()\n            .describe('Date and time the product was created.')\n            .optional()\n            .nullable(),\n          _updatedDate: z\n            .date()\n            .describe('Date and time the product was updated.')\n            .optional()\n            .nullable(),\n          name: z\n            .string()\n            .describe('Product name. Translatable.')\n            .min(1)\n            .max(80)\n            .optional()\n            .nullable(),\n          slug: z\n            .string()\n            .describe(\n              'Product slug. A URL-friendly identifier used in the product page address.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n            )\n            .min(1)\n            .max(300)\n            .optional()\n            .nullable(),\n          url: z\n            .string()\n            .describe(\n              'URL to the site\\'s product page.\\n\\n> **Note:** Returned only when you pass `\"URL\"` to the `fields` array in Products API requests.'\n            )\n            .optional(),\n          description: z\n            .any()\n            .describe(\n              'Product description using rich content.\\n> **Note:** Returned only when you pass `\"DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n            )\n            .optional(),\n          plainDescription: z\n            .string()\n            .describe(\n              'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n            )\n            .max(16000)\n            .optional()\n            .nullable(),\n          visible: z\n            .boolean()\n            .describe(\n              \"Whether the product is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the default variant's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n            )\n            .optional()\n            .nullable(),\n          visibleInPos: z\n            .boolean()\n            .describe(\n              'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n            )\n            .optional()\n            .nullable(),\n          media: z\n            .object({\n              main: z\n                .intersection(\n                  z.object({\n                    altText: z\n                      .string()\n                      .describe('Image alt text.')\n                      .min(1)\n                      .max(1000)\n                      .optional()\n                      .nullable(),\n                    displayName: z\n                      .string()\n                      .describe(\n                        \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                      )\n                      .max(80)\n                      .optional()\n                      .nullable(),\n                    mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                    thumbnail: z\n                      .object({\n                        url: z\n                          .string()\n                          .describe('Thumbnail url.')\n                          .url()\n                          .optional(),\n                        height: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail height.')\n                          .optional(),\n                        width: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail width.')\n                          .optional(),\n                        altText: z\n                          .string()\n                          .describe('Thumbnail alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    uploadId: z\n                      .string()\n                      .describe('ID used to upload media to Wix Media Manager.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                  }),\n                  z.intersection(\n                    z.xor([\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z.never().optional(),\n                      }),\n                      z.object({\n                        url: z.never().optional(),\n                        _id: z\n                          .string()\n                          .describe(\n                            'Set media by ID of an existing file in Wix Media Manager.'\n                          )\n                          .min(1)\n                          .max(200),\n                      }),\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z\n                          .string()\n                          .describe('Set media using an external media URL.')\n                          .url(),\n                      }),\n                    ]),\n                    z.xor([\n                      z.object({\n                        image: z.never().optional(),\n                        video: z.never().optional(),\n                      }),\n                      z.object({\n                        video: z.never().optional(),\n                        image: z\n                          .string()\n                          .describe(\n                            \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                          ),\n                      }),\n                      z.object({\n                        image: z.never().optional(),\n                        video: z\n                          .string()\n                          .describe(\n                            \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                          ),\n                      }),\n                    ])\n                  )\n                )\n                .describe(\n                  'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n                )\n                .optional(),\n              itemsInfo: z\n                .object({\n                  items: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          altText: z\n                            .string()\n                            .describe('Image alt text.')\n                            .min(1)\n                            .max(1000)\n                            .optional()\n                            .nullable(),\n                          displayName: z\n                            .string()\n                            .describe(\n                              \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                            )\n                            .max(80)\n                            .optional()\n                            .nullable(),\n                          mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                          thumbnail: z\n                            .object({\n                              url: z\n                                .string()\n                                .describe('Thumbnail url.')\n                                .url()\n                                .optional(),\n                              height: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail height.')\n                                .optional(),\n                              width: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail width.')\n                                .optional(),\n                              altText: z\n                                .string()\n                                .describe('Thumbnail alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                          uploadId: z\n                            .string()\n                            .describe(\n                              'ID used to upload media to Wix Media Manager.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                        }),\n                        z.intersection(\n                          z.xor([\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z.never().optional(),\n                            }),\n                            z.object({\n                              url: z.never().optional(),\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Set media by ID of an existing file in Wix Media Manager.'\n                                )\n                                .min(1)\n                                .max(200),\n                            }),\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z\n                                .string()\n                                .describe(\n                                  'Set media using an external media URL.'\n                                )\n                                .url(),\n                            }),\n                          ]),\n                          z.xor([\n                            z.object({\n                              image: z.never().optional(),\n                              video: z.never().optional(),\n                            }),\n                            z.object({\n                              video: z.never().optional(),\n                              image: z\n                                .string()\n                                .describe(\n                                  \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                ),\n                            }),\n                            z.object({\n                              image: z.never().optional(),\n                              video: z\n                                .string()\n                                .describe(\n                                  \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                ),\n                            }),\n                          ])\n                        )\n                      )\n                    )\n                    .max(50)\n                    .optional(),\n                })\n                .describe(\n                  'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n            })\n            .describe(\n              'Product media items. For a detailed explanation of product media, see [About Product Media](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/about-product-media).'\n            )\n            .optional(),\n          seoData: z\n            .object({\n              tags: z\n                .array(\n                  z.object({\n                    type: z\n                      .string()\n                      .describe(\n                        'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                      )\n                      .optional(),\n                    props: z\n                      .record(z.string(), z.any())\n                      .describe(\n                        'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    meta: z\n                      .record(z.string(), z.any())\n                      .describe(\n                        'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    children: z\n                      .string()\n                      .describe(\n                        'SEO tag inner content. For example, `<title> inner content </title>`.'\n                      )\n                      .optional(),\n                    custom: z\n                      .boolean()\n                      .describe(\n                        'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                      )\n                      .optional(),\n                    disabled: z\n                      .boolean()\n                      .describe(\n                        \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                      )\n                      .optional(),\n                  })\n                )\n                .optional(),\n              settings: z\n                .object({\n                  preventAutoRedirect: z\n                    .boolean()\n                    .describe(\n                      'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n                    )\n                    .optional(),\n                  keywords: z\n                    .array(\n                      z.object({\n                        term: z.string().describe('Keyword value.').optional(),\n                        isMain: z\n                          .boolean()\n                          .describe(\n                            'Whether the keyword is the main focus keyword.'\n                          )\n                          .optional(),\n                        origin: z\n                          .string()\n                          .describe(\n                            'The source that added the keyword terms to the SEO settings.'\n                          )\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(5)\n                    .optional(),\n                })\n                .describe('SEO general settings.')\n                .optional(),\n            })\n            .describe('Product SEO data.')\n            .optional(),\n          taxGroupId: z\n            .string()\n            .describe(\n              '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n            )\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          options: z\n            .array(\n              z.intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe(\n                      'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n                    )\n                    .min(1)\n                    .max(36)\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Option name.')\n                    .min(1)\n                    .max(50)\n                    .optional()\n                    .nullable(),\n                  optionRenderType: z\n                    .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                    .optional(),\n                  key: z\n                    .string()\n                    .describe(\n                      'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                    )\n                    .min(1)\n                    .max(50)\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({ choicesSettings: z.never().optional() }),\n                  z.object({\n                    choicesSettings: z\n                      .object({\n                        choices: z\n                          .array(\n                            z.intersection(\n                              z.object({\n                                choiceId: z\n                                  .string()\n                                  .describe('Choice ID.')\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                linkedMedia: z\n                                  .array(\n                                    z.intersection(\n                                      z.object({\n                                        altText: z\n                                          .string()\n                                          .describe('Image alt text.')\n                                          .min(1)\n                                          .max(1000)\n                                          .optional()\n                                          .nullable(),\n                                        displayName: z\n                                          .string()\n                                          .describe(\n                                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                          )\n                                          .max(80)\n                                          .optional()\n                                          .nullable(),\n                                        mediaType: z\n                                          .enum(['IMAGE', 'VIDEO'])\n                                          .optional(),\n                                        thumbnail: z\n                                          .object({\n                                            url: z\n                                              .string()\n                                              .describe('Thumbnail url.')\n                                              .url()\n                                              .optional(),\n                                            height: z\n                                              .number()\n                                              .int()\n                                              .describe('Thumbnail height.')\n                                              .optional(),\n                                            width: z\n                                              .number()\n                                              .int()\n                                              .describe('Thumbnail width.')\n                                              .optional(),\n                                            altText: z\n                                              .string()\n                                              .describe('Thumbnail alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                          })\n                                          .describe(\n                                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .optional(),\n                                        uploadId: z\n                                          .string()\n                                          .describe(\n                                            'ID used to upload media to Wix Media Manager.'\n                                          )\n                                          .regex(\n                                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                            'Must be a valid GUID'\n                                          )\n                                          .optional(),\n                                      }),\n                                      z.intersection(\n                                        z.xor([\n                                          z.object({\n                                            _id: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            _id: z\n                                              .string()\n                                              .describe(\n                                                'Set media by ID of an existing file in Wix Media Manager.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            _id: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'Set media using an external media URL.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ]),\n                                        z.xor([\n                                          z.object({\n                                            image: z.never().optional(),\n                                            video: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            video: z.never().optional(),\n                                            image: z\n                                              .string()\n                                              .describe(\n                                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                              ),\n                                          }),\n                                          z.object({\n                                            image: z.never().optional(),\n                                            video: z\n                                              .string()\n                                              .describe(\n                                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                              ),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                  )\n                                  .max(15)\n                                  .optional(),\n                                choiceType: z\n                                  .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                  .optional(),\n                                key: z\n                                  .string()\n                                  .describe(\n                                    'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                  )\n                                  .min(1)\n                                  .max(50)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe(\n                                    'Choice name. For text choices, this field also contains the choice value.'\n                                  )\n                                  .min(1)\n                                  .max(50)\n                                  .optional()\n                                  .nullable(),\n                                inStock: z\n                                  .boolean()\n                                  .describe(\n                                    'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                                  )\n                                  .optional(),\n                                visible: z\n                                  .boolean()\n                                  .describe(\n                                    'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                                  )\n                                  .optional(),\n                                displayImage: z\n                                  .string()\n                                  .describe(\n                                    'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                  )\n                                  .optional(),\n                                media: z\n                                  .object({\n                                    items: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({}),\n                                          z.xor([\n                                            z.object({\n                                              mediaId: z.never().optional(),\n                                              url: z.never().optional(),\n                                            }),\n                                            z.object({\n                                              url: z.never().optional(),\n                                              mediaId: z\n                                                .string()\n                                                .describe(\n                                                  'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                )\n                                                .min(1)\n                                                .max(200),\n                                            }),\n                                            z.object({\n                                              mediaId: z.never().optional(),\n                                              url: z\n                                                .string()\n                                                .describe(\n                                                  'External media URL. Can be used only on write.'\n                                                )\n                                                .url(),\n                                            }),\n                                          ])\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                  )\n                                  .optional(),\n                              }),\n                              z.xor([\n                                z.object({ colorCode: z.never().optional() }),\n                                z.object({\n                                  colorCode: z\n                                    .string()\n                                    .describe(\n                                      'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                                    )\n                                    .min(3)\n                                    .max(20),\n                                }),\n                              ])\n                            )\n                          )\n                          .min(1)\n                          .max(100)\n                          .optional(),\n                      })\n                      .describe('Choices settings.'),\n                  }),\n                ])\n              )\n            )\n            .max(6)\n            .optional(),\n          modifiers: z\n            .array(\n              z.intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe(\n                      'ID of a customization with `customizationType: MODIFIER`.'\n                    )\n                    .min(1)\n                    .max(36)\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Modifier title.')\n                    .min(1)\n                    .max(50)\n                    .optional()\n                    .nullable(),\n                  modifierRenderType: z\n                    .enum(['FREE_TEXT', 'TEXT_CHOICES', 'SWATCH_CHOICES'])\n                    .optional(),\n                  mandatory: z\n                    .boolean()\n                    .describe(\n                      'Whether customer input is required for this modifier.'\n                    )\n                    .optional(),\n                  key: z\n                    .string()\n                    .describe(\n                      'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                    )\n                    .min(1)\n                    .max(50)\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    freeTextSettings: z.never().optional(),\n                    choicesSettings: z.never().optional(),\n                  }),\n                  z.object({\n                    choicesSettings: z.never().optional(),\n                    freeTextSettings: z\n                      .object({\n                        minCharCount: z\n                          .number()\n                          .int()\n                          .describe('Minimum number of characters.')\n                          .optional(),\n                        maxCharCount: z\n                          .number()\n                          .int()\n                          .describe('Maximum number of characters.')\n                          .max(500)\n                          .optional(),\n                        defaultAddedPrice: z\n                          .string()\n                          .describe(\n                            \"Default amount to be added to the product's price.\"\n                          )\n                          .optional()\n                          .nullable(),\n                        title: z\n                          .string()\n                          .describe(\n                            'Title of the text to be input by the customer.'\n                          )\n                          .min(1)\n                          .max(150)\n                          .optional(),\n                        key: z\n                          .string()\n                          .describe(\n                            'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                          )\n                          .min(1)\n                          .max(150)\n                          .optional(),\n                      })\n                      .describe('Free text modifier settings.'),\n                  }),\n                  z.object({\n                    freeTextSettings: z.never().optional(),\n                    choicesSettings: z\n                      .object({\n                        choices: z\n                          .array(\n                            z.intersection(\n                              z.object({\n                                choiceId: z\n                                  .string()\n                                  .describe('Choice ID.')\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                linkedMedia: z\n                                  .array(\n                                    z.intersection(\n                                      z.object({\n                                        altText: z\n                                          .string()\n                                          .describe('Image alt text.')\n                                          .min(1)\n                                          .max(1000)\n                                          .optional()\n                                          .nullable(),\n                                        displayName: z\n                                          .string()\n                                          .describe(\n                                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                          )\n                                          .max(80)\n                                          .optional()\n                                          .nullable(),\n                                        mediaType: z\n                                          .enum(['IMAGE', 'VIDEO'])\n                                          .optional(),\n                                        thumbnail: z\n                                          .object({\n                                            url: z\n                                              .string()\n                                              .describe('Thumbnail url.')\n                                              .url()\n                                              .optional(),\n                                            height: z\n                                              .number()\n                                              .int()\n                                              .describe('Thumbnail height.')\n                                              .optional(),\n                                            width: z\n                                              .number()\n                                              .int()\n                                              .describe('Thumbnail width.')\n                                              .optional(),\n                                            altText: z\n                                              .string()\n                                              .describe('Thumbnail alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                          })\n                                          .describe(\n                                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .optional(),\n                                        uploadId: z\n                                          .string()\n                                          .describe(\n                                            'ID used to upload media to Wix Media Manager.'\n                                          )\n                                          .regex(\n                                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                            'Must be a valid GUID'\n                                          )\n                                          .optional(),\n                                      }),\n                                      z.intersection(\n                                        z.xor([\n                                          z.object({\n                                            _id: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            _id: z\n                                              .string()\n                                              .describe(\n                                                'Set media by ID of an existing file in Wix Media Manager.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            _id: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'Set media using an external media URL.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ]),\n                                        z.xor([\n                                          z.object({\n                                            image: z.never().optional(),\n                                            video: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            video: z.never().optional(),\n                                            image: z\n                                              .string()\n                                              .describe(\n                                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                              ),\n                                          }),\n                                          z.object({\n                                            image: z.never().optional(),\n                                            video: z\n                                              .string()\n                                              .describe(\n                                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                              ),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                  )\n                                  .max(15)\n                                  .optional(),\n                                choiceType: z\n                                  .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                  .optional(),\n                                key: z\n                                  .string()\n                                  .describe(\n                                    'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                  )\n                                  .min(1)\n                                  .max(50)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe('Choice name.')\n                                  .min(1)\n                                  .max(50)\n                                  .optional()\n                                  .nullable(),\n                                addedPrice: z\n                                  .string()\n                                  .describe('Added price.')\n                                  .optional()\n                                  .nullable(),\n                                displayImage: z\n                                  .string()\n                                  .describe(\n                                    'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                  )\n                                  .optional(),\n                                media: z\n                                  .object({\n                                    items: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({}),\n                                          z.xor([\n                                            z.object({\n                                              mediaId: z.never().optional(),\n                                              url: z.never().optional(),\n                                            }),\n                                            z.object({\n                                              url: z.never().optional(),\n                                              mediaId: z\n                                                .string()\n                                                .describe(\n                                                  'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                )\n                                                .min(1)\n                                                .max(200),\n                                            }),\n                                            z.object({\n                                              mediaId: z.never().optional(),\n                                              url: z\n                                                .string()\n                                                .describe(\n                                                  'External media URL. Can be used only on write.'\n                                                )\n                                                .url(),\n                                            }),\n                                          ])\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                  )\n                                  .optional(),\n                              }),\n                              z.xor([\n                                z.object({ colorCode: z.never().optional() }),\n                                z.object({\n                                  colorCode: z\n                                    .string()\n                                    .describe(\n                                      'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                                    )\n                                    .min(3)\n                                    .max(20),\n                                }),\n                              ])\n                            )\n                          )\n                          .min(1)\n                          .max(100)\n                          .optional(),\n                      })\n                      .describe('Choice settings.'),\n                  }),\n                ])\n              )\n            )\n            .max(10)\n            .optional(),\n          brand: z\n            .object({\n              _id: z\n                .string()\n                .describe('Brand ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Brand name.')\n                .max(50)\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              \"Product [brand](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/brands-v3/introduction).\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n            )\n            .optional(),\n          infoSections: z\n            .array(\n              z.object({\n                _id: z\n                  .string()\n                  .describe('Info section ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                uniqueName: z\n                  .string()\n                  .describe(\n                    'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(100)\n                  .optional()\n                  .nullable(),\n                title: z\n                  .string()\n                  .describe(\n                    'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                description: z\n                  .any()\n                  .describe(\n                    'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                  )\n                  .optional(),\n                plainDescription: z\n                  .string()\n                  .describe(\n                    'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(16000)\n                  .optional()\n                  .nullable(),\n              })\n            )\n            .max(10)\n            .optional(),\n          ribbon: z\n            .object({\n              _id: z\n                .string()\n                .describe('Ribbon ID.')\n                .min(1)\n                .max(36)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Ribbon name.')\n                .max(30)\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              \"Primary [ribbon](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/ribbons-v3/introduction) displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n            )\n            .optional(),\n          directCategoriesInfo: z\n            .object({\n              categories: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Category ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    index: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                      )\n                      .min(0)\n                      .max(200)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(2000)\n                .optional(),\n            })\n            .describe(\n              'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product.\\n\\nUpdated automatically when a product is added/removed from a category, when an item is moved within a category, or when a category is deleted.\\n> **Note:** Returned only when you pass `\"DIRECT_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n            )\n            .optional(),\n          allCategoriesInfo: z\n            .object({\n              categories: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Category ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    index: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                      )\n                      .min(0)\n                      .max(200)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(2000)\n                .optional(),\n            })\n            .describe(\n              'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product, as well as their parent categories.\\n> **Note:** Returned only when you pass `\"ALL_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n            )\n            .optional(),\n          mainCategoryId: z\n            .string()\n            .describe(\n              'The ID of the product\\'s primary direct [category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction), which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n            )\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          costRange: z\n            .object({\n              minValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Minimum value.')\n                .optional(),\n              maxValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Maximum value.')\n                .optional(),\n            })\n            .describe(\n              'Product cost range - minimum and maximum costs of all product variants.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n            )\n            .optional(),\n          inventory: z\n            .object({\n              availabilityStatus: z\n                .enum(['IN_STOCK', 'OUT_OF_STOCK', 'PARTIALLY_OUT_OF_STOCK'])\n                .optional(),\n              preorderStatus: z\n                .enum(['ENABLED', 'DISABLED', 'PARTIALLY_ENABLED'])\n                .optional(),\n              preorderAvailability: z\n                .enum(['ALL_VARIANTS', 'NO_VARIANTS', 'SOME_VARIANTS'])\n                .optional(),\n            })\n            .describe(\n              'Product inventory info.\\n\\n> **Note:** This field reflects the aggregated inventory status from the default location only. Use the [Inventory Items API](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/inventory-items-v3/introduction) to manage inventory for specific locations. Learn more about [inventory management](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-inventory-management).'\n            )\n            .optional(),\n          productType: z.enum(['PHYSICAL', 'DIGITAL']).optional(),\n          handle: z\n            .string()\n            .describe(\n              \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n            )\n            .min(1)\n            .max(100)\n            .optional()\n            .nullable(),\n          currency: z\n            .string()\n            .describe(\n              'Currency used for the pricing of this product, in [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes) format.\\n\\nDefaults to the currency defined in the site settings, unless specified in the request\\'s `x-wix-currency` header.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n            )\n            .optional()\n            .nullable(),\n          breadcrumbsInfo: z\n            .object({\n              breadcrumbs: z\n                .array(\n                  z.object({\n                    categoryId: z\n                      .string()\n                      .describe('Category ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    categoryName: z\n                      .string()\n                      .describe('Category name.')\n                      .min(1)\n                      .max(80)\n                      .optional(),\n                    categorySlug: z\n                      .string()\n                      .describe('Category slug.')\n                      .min(1)\n                      .max(100)\n                      .optional(),\n                  })\n                )\n                .max(5)\n                .optional(),\n            })\n            .describe(\n              'Breadcrumbs of the `mainCategoryId`. Used to navigate to parent [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction). Useful for building navigation UI and for SEO purposes.\\n> **Note:** Returned only when you pass `\"BREADCRUMBS_INFO\"` to the `fields` array in Products API requests.'\n            )\n            .optional(),\n          actualPriceRange: z\n            .object({\n              minValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Minimum value.')\n                .optional(),\n              maxValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Maximum value.')\n                .optional(),\n            })\n            .describe(\n              'Minimum and maximum current selling prices across all product variants.'\n            )\n            .optional(),\n          compareAtPriceRange: z\n            .object({\n              minValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Minimum value.')\n                .optional(),\n              maxValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Maximum value.')\n                .optional(),\n            })\n            .describe(\n              'Minimum and maximum compare-at prices (original prices before discounts) across all product variants. Used to show savings to customers.'\n            )\n            .optional(),\n          variantsInfo: z\n            .object({\n              variants: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe('Variant ID.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional()\n                        .nullable(),\n                      visible: z\n                        .boolean()\n                        .describe(\n                          \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                        )\n                        .optional()\n                        .nullable(),\n                      sku: z\n                        .string()\n                        .describe('Variant SKU (stock keeping unit).')\n                        .min(1)\n                        .max(40)\n                        .optional()\n                        .nullable(),\n                      barcode: z\n                        .string()\n                        .describe('Variant barcode.')\n                        .min(1)\n                        .max(40)\n                        .optional()\n                        .nullable(),\n                      choices: z\n                        .array(\n                          z.object({\n                            optionChoiceIds: z\n                              .object({\n                                optionId: z\n                                  .string()\n                                  .describe('Option ID.')\n                                  .min(1)\n                                  .max(36)\n                                  .optional(),\n                                choiceId: z\n                                  .string()\n                                  .describe('Choice ID.')\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                              )\n                              .optional(),\n                            optionChoiceNames: z\n                              .object({\n                                optionName: z\n                                  .string()\n                                  .describe('Option name.')\n                                  .min(1)\n                                  .optional(),\n                                choiceName: z\n                                  .string()\n                                  .describe('Choice name.')\n                                  .min(1)\n                                  .optional(),\n                                renderType: z\n                                  .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                  .optional(),\n                              })\n                              .describe(\n                                'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                              )\n                              .optional(),\n                          })\n                        )\n                        .min(0)\n                        .max(6)\n                        .optional(),\n                      price: z\n                        .object({\n                          actualPrice: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              \"Variant's current selling price. Must be greater than or equal to 0.\"\n                            )\n                            .optional(),\n                          compareAtPrice: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                            )\n                            .optional(),\n                          priceAfterDiscount: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                            )\n                            .optional(),\n                        })\n                        .describe('Variant price.')\n                        .optional(),\n                      revenueDetails: z\n                        .object({\n                          cost: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe('Item cost.')\n                            .optional(),\n                          profit: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                            )\n                            .optional(),\n                          profitMargin: z\n                            .number()\n                            .describe(\n                              'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                            )\n                            .min(0)\n                            .max(1)\n                            .optional(),\n                        })\n                        .describe(\n                          'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                        )\n                        .optional(),\n                      media: z\n                        .intersection(\n                          z.object({\n                            altText: z\n                              .string()\n                              .describe('Image alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                            displayName: z\n                              .string()\n                              .describe(\n                                \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                              )\n                              .max(80)\n                              .optional()\n                              .nullable(),\n                            mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                            thumbnail: z\n                              .object({\n                                url: z\n                                  .string()\n                                  .describe('Thumbnail url.')\n                                  .url()\n                                  .optional(),\n                                height: z\n                                  .number()\n                                  .int()\n                                  .describe('Thumbnail height.')\n                                  .optional(),\n                                width: z\n                                  .number()\n                                  .int()\n                                  .describe('Thumbnail width.')\n                                  .optional(),\n                                altText: z\n                                  .string()\n                                  .describe('Thumbnail alt text.')\n                                  .min(1)\n                                  .max(1000)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                              )\n                              .optional(),\n                            uploadId: z\n                              .string()\n                              .describe(\n                                'ID used to upload media to Wix Media Manager.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          }),\n                          z.intersection(\n                            z.xor([\n                              z.object({\n                                _id: z.never().optional(),\n                                url: z.never().optional(),\n                              }),\n                              z.object({\n                                url: z.never().optional(),\n                                _id: z\n                                  .string()\n                                  .describe(\n                                    'Set media by ID of an existing file in Wix Media Manager.'\n                                  )\n                                  .min(1)\n                                  .max(200),\n                              }),\n                              z.object({\n                                _id: z.never().optional(),\n                                url: z\n                                  .string()\n                                  .describe(\n                                    'Set media using an external media URL.'\n                                  )\n                                  .url(),\n                              }),\n                            ]),\n                            z.xor([\n                              z.object({\n                                image: z.never().optional(),\n                                video: z.never().optional(),\n                              }),\n                              z.object({\n                                video: z.never().optional(),\n                                image: z\n                                  .string()\n                                  .describe(\n                                    \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                  ),\n                              }),\n                              z.object({\n                                image: z.never().optional(),\n                                video: z\n                                  .string()\n                                  .describe(\n                                    \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                  ),\n                              }),\n                            ])\n                          )\n                        )\n                        .describe('Variant media.')\n                        .optional(),\n                      subscriptionPricesInfo: z\n                        .object({\n                          subscriptionPrices: z\n                            .array(\n                              z.object({\n                                subscriptionId: z\n                                  .string()\n                                  .describe('Subscription ID.')\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional(),\n                                price: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                  )\n                                  .optional(),\n                                pricePerUnit: z\n                                  .object({\n                                    value: z\n                                      .string()\n                                      .describe(\n                                        'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                      )\n                                      .optional(),\n                                    description: z\n                                      .string()\n                                      .describe(\n                                        'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                    priceAfterDiscount: z\n                                      .object({\n                                        amount: z\n                                          .string()\n                                          .describe(\n                                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                          )\n                                          .optional(),\n                                        formattedAmount: z\n                                          .string()\n                                          .describe(\n                                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe('Price per unit info.')\n                                  .optional(),\n                                priceAfterDiscount: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                  )\n                                  .optional(),\n                              })\n                            )\n                            .max(6)\n                            .optional(),\n                        })\n                        .describe(\n                          'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                        )\n                        .optional(),\n                      inventoryStatus: z\n                        .object({\n                          inStock: z\n                            .boolean()\n                            .describe('Whether the variant is in stock.')\n                            .optional(),\n                          preorderEnabled: z\n                            .boolean()\n                            .describe(\n                              'Whether preorder is enabled for this variant.'\n                            )\n                            .optional(),\n                        })\n                        .describe('Variant inventory status.')\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({\n                        physicalProperties: z.never().optional(),\n                        digitalProperties: z.never().optional(),\n                      }),\n                      z.object({\n                        digitalProperties: z.never().optional(),\n                        physicalProperties: z\n                          .object({\n                            weight: z\n                              .number()\n                              .describe(\n                                'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                              )\n                              .min(0)\n                              .max(999999999.99)\n                              .optional()\n                              .nullable(),\n                            pricePerUnit: z\n                              .object({\n                                settings: z\n                                  .object({\n                                    quantity: z\n                                      .number()\n                                      .describe(\n                                        'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                      )\n                                      .min(0.01)\n                                      .max(999999999.99)\n                                      .optional(),\n                                    measurementUnit: z\n                                      .enum([\n                                        'UNSPECIFIED',\n                                        'ML',\n                                        'CL',\n                                        'L',\n                                        'CBM',\n                                        'MG',\n                                        'G',\n                                        'KG',\n                                        'MM',\n                                        'CM',\n                                        'M',\n                                        'SQM',\n                                        'OZ',\n                                        'LB',\n                                        'FLOZ',\n                                        'PT',\n                                        'QT',\n                                        'GAL',\n                                        'IN',\n                                        'FT',\n                                        'YD',\n                                        'SQFT',\n                                      ])\n                                      .describe(\n                                        'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                  )\n                                  .optional(),\n                                value: z\n                                  .string()\n                                  .describe(\n                                    \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                  )\n                                  .optional(),\n                                description: z\n                                  .string()\n                                  .describe(\n                                    'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(100)\n                                  .optional()\n                                  .nullable(),\n                                priceAfterDiscount: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                              )\n                              .optional(),\n                            productDimensions: z\n                              .object({\n                                length: z\n                                  .string()\n                                  .describe(\n                                    'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                width: z\n                                  .string()\n                                  .describe(\n                                    'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                height: z\n                                  .string()\n                                  .describe(\n                                    'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                unit: z\n                                  .enum([\n                                    'UNKNOWN_DIMENSIONS_UNIT',\n                                    'MM',\n                                    'CM',\n                                    'M',\n                                    'IN',\n                                    'FT',\n                                    'YD',\n                                  ])\n                                  .describe(\n                                    'Unit of measurement for dimensions (length, width, height).'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Product dimensions (length, width, height of the physical product).'\n                              )\n                              .optional(),\n                            packageDimensions: z\n                              .object({\n                                length: z\n                                  .string()\n                                  .describe(\n                                    'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                width: z\n                                  .string()\n                                  .describe(\n                                    'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                height: z\n                                  .string()\n                                  .describe(\n                                    'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                unit: z\n                                  .enum([\n                                    'UNKNOWN_DIMENSIONS_UNIT',\n                                    'MM',\n                                    'CM',\n                                    'M',\n                                    'IN',\n                                    'FT',\n                                    'YD',\n                                  ])\n                                  .describe(\n                                    'Unit of measurement for dimensions (length, width, height).'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Package dimensions (length, width, height of the shipping package).'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Physical properties. Must be passed when `productType: PHYSICAL`'\n                          ),\n                      }),\n                      z.object({\n                        physicalProperties: z.never().optional(),\n                        digitalProperties: z\n                          .object({\n                            digitalFile: z\n                              .object({\n                                _id: z\n                                  .string()\n                                  .describe('Media ID in media manager.')\n                                  .min(1)\n                                  .max(100)\n                                  .optional(),\n                                fileName: z\n                                  .string()\n                                  .describe('Original file name.')\n                                  .min(1)\n                                  .max(1000)\n                                  .optional(),\n                                fileSize: z\n                                  .string()\n                                  .describe('Original file size.')\n                                  .min(1)\n                                  .max(1000)\n                                  .optional()\n                                  .nullable(),\n                                fileType: z\n                                  .enum([\n                                    'UNSPECIFIED',\n                                    'SECURE_PICTURE',\n                                    'SECURE_VIDEO',\n                                    'SECURE_DOCUMENT',\n                                    'SECURE_MUSIC',\n                                    'SECURE_ARCHIVE',\n                                    'SECURE_RAW',\n                                  ])\n                                  .describe('File type.')\n                                  .optional(),\n                              })\n                              .describe(\n                                'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Digital properties. Must be passed when `productType: DIGITAL`'\n                          ),\n                      }),\n                    ])\n                  )\n                )\n                .min(1)\n                .max(1000)\n                .optional(),\n            })\n            .describe(\n              'Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nYou must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).'\n            )\n            .optional(),\n          purchaseEligibility: z\n            .object({ userCriteria: z.enum(['MEMBERS_ONLY']).optional() })\n            .describe('Purchase eligibility settings for the product.')\n            .optional(),\n          additionalRibbons: z\n            .array(\n              z.object({\n                _id: z\n                  .string()\n                  .describe('Ribbon ID.')\n                  .min(1)\n                  .max(36)\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Ribbon name.')\n                  .max(30)\n                  .optional()\n                  .nullable(),\n              })\n            )\n            .max(4)\n            .optional(),\n          extendedFields: z\n            .object({\n              namespaces: z\n                .record(z.string(), z.record(z.string(), z.any()))\n                .describe(\n                  'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                )\n                .optional(),\n            })\n            .describe(\n              'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n            )\n            .optional(),\n          tags: z\n            .object({\n              privateTags: z\n                .object({ tagIds: z.array(z.string()).max(100).optional() })\n                .describe(\n                  'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n                )\n                .optional(),\n              publicTags: z\n                .object({ tagIds: z.array(z.string()).max(100).optional() })\n                .describe(\n                  'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n                )\n                .optional(),\n            })\n            .describe('Tags')\n            .optional(),\n          subscriptionDetails: z\n            .object({\n              subscriptions: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe('Subscription ID.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional()\n                        .nullable(),\n                      title: z\n                        .string()\n                        .describe('Subscription title.')\n                        .min(1)\n                        .max(20),\n                      description: z\n                        .string()\n                        .describe('Subscription description.')\n                        .max(60)\n                        .optional()\n                        .nullable(),\n                      visible: z\n                        .boolean()\n                        .describe(\n                          'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                        )\n                        .optional()\n                        .nullable(),\n                      frequency: z.enum([\n                        'UNDEFINED',\n                        'DAY',\n                        'WEEK',\n                        'MONTH',\n                        'YEAR',\n                      ]),\n                      interval: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                        )\n                        .min(1)\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                      discount: z\n                        .intersection(\n                          z.object({ type: z.enum(['AMOUNT', 'PERCENT']) }),\n                          z.xor([\n                            z.object({\n                              percentOff: z.never().optional(),\n                              amountOff: z\n                                .string()\n                                .describe(\n                                  'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                                ),\n                            }),\n                            z.object({\n                              amountOff: z.never().optional(),\n                              percentOff: z\n                                .number()\n                                .describe(\n                                  'Percentage subtracted from the variant price when calculating subscription prices.'\n                                )\n                                .min(0.1)\n                                .max(99.9),\n                            }),\n                          ])\n                        )\n                        .describe(\n                          'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                        )\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({\n                        billingCycles: z.never().optional(),\n                        autoRenewal: z\n                          .boolean()\n                          .describe(\n                            'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                          ),\n                      }),\n                      z.object({\n                        autoRenewal: z.never().optional(),\n                        billingCycles: z\n                          .number()\n                          .int()\n                          .describe(\n                            'Number of billing cycles before subscription ends.'\n                          )\n                          .min(2)\n                          .max(999),\n                      }),\n                    ])\n                  )\n                )\n                .min(1)\n                .max(6)\n                .optional(),\n              allowOneTimePurchases: z\n                .boolean()\n                .describe(\n                  'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n                )\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n            )\n            .optional(),\n          variantSummary: z\n            .object({\n              variantCount: z\n                .number()\n                .int()\n                .describe('The total number of variants for the product.')\n                .optional(),\n              minPriceVariant: z\n                .intersection(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Variant ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    visible: z\n                      .boolean()\n                      .describe(\n                        \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                      )\n                      .optional()\n                      .nullable(),\n                    sku: z\n                      .string()\n                      .describe('Variant SKU (stock keeping unit).')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    barcode: z\n                      .string()\n                      .describe('Variant barcode.')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.object({\n                          optionChoiceIds: z\n                            .object({\n                              optionId: z\n                                .string()\n                                .describe('Option ID.')\n                                .min(1)\n                                .max(36)\n                                .optional(),\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                            )\n                            .optional(),\n                          optionChoiceNames: z\n                            .object({\n                              optionName: z\n                                .string()\n                                .describe('Option name.')\n                                .min(1)\n                                .optional(),\n                              choiceName: z\n                                .string()\n                                .describe('Choice name.')\n                                .min(1)\n                                .optional(),\n                              renderType: z\n                                .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                .optional(),\n                            })\n                            .describe(\n                              'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .min(0)\n                      .max(6)\n                      .optional(),\n                    price: z\n                      .object({\n                        actualPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            \"Variant's current selling price. Must be greater than or equal to 0.\"\n                          )\n                          .optional(),\n                        compareAtPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                          )\n                          .optional(),\n                        priceAfterDiscount: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                          )\n                          .optional(),\n                      })\n                      .describe('Variant price.')\n                      .optional(),\n                    revenueDetails: z\n                      .object({\n                        cost: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe('Item cost.')\n                          .optional(),\n                        profit: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                          )\n                          .optional(),\n                        profitMargin: z\n                          .number()\n                          .describe(\n                            'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                          )\n                          .min(0)\n                          .max(1)\n                          .optional(),\n                      })\n                      .describe(\n                        'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                      )\n                      .optional(),\n                    media: z\n                      .intersection(\n                        z.object({\n                          altText: z\n                            .string()\n                            .describe('Image alt text.')\n                            .min(1)\n                            .max(1000)\n                            .optional()\n                            .nullable(),\n                          displayName: z\n                            .string()\n                            .describe(\n                              \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                            )\n                            .max(80)\n                            .optional()\n                            .nullable(),\n                          mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                          thumbnail: z\n                            .object({\n                              url: z\n                                .string()\n                                .describe('Thumbnail url.')\n                                .url()\n                                .optional(),\n                              height: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail height.')\n                                .optional(),\n                              width: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail width.')\n                                .optional(),\n                              altText: z\n                                .string()\n                                .describe('Thumbnail alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                          uploadId: z\n                            .string()\n                            .describe(\n                              'ID used to upload media to Wix Media Manager.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                        }),\n                        z.intersection(\n                          z.xor([\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z.never().optional(),\n                            }),\n                            z.object({\n                              url: z.never().optional(),\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Set media by ID of an existing file in Wix Media Manager.'\n                                )\n                                .min(1)\n                                .max(200),\n                            }),\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z\n                                .string()\n                                .describe(\n                                  'Set media using an external media URL.'\n                                )\n                                .url(),\n                            }),\n                          ]),\n                          z.xor([\n                            z.object({\n                              image: z.never().optional(),\n                              video: z.never().optional(),\n                            }),\n                            z.object({\n                              video: z.never().optional(),\n                              image: z\n                                .string()\n                                .describe(\n                                  \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                ),\n                            }),\n                            z.object({\n                              image: z.never().optional(),\n                              video: z\n                                .string()\n                                .describe(\n                                  \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                ),\n                            }),\n                          ])\n                        )\n                      )\n                      .describe('Variant media.')\n                      .optional(),\n                    subscriptionPricesInfo: z\n                      .object({\n                        subscriptionPrices: z\n                          .array(\n                            z.object({\n                              subscriptionId: z\n                                .string()\n                                .describe('Subscription ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                              price: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                )\n                                .optional(),\n                              pricePerUnit: z\n                                .object({\n                                  value: z\n                                    .string()\n                                    .describe(\n                                      'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                    )\n                                    .optional(),\n                                  description: z\n                                    .string()\n                                    .describe(\n                                      'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                  priceAfterDiscount: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe('Price per unit info.')\n                                .optional(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                          )\n                          .max(6)\n                          .optional(),\n                      })\n                      .describe(\n                        'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    inventoryStatus: z\n                      .object({\n                        inStock: z\n                          .boolean()\n                          .describe('Whether the variant is in stock.')\n                          .optional(),\n                        preorderEnabled: z\n                          .boolean()\n                          .describe(\n                            'Whether preorder is enabled for this variant.'\n                          )\n                          .optional(),\n                      })\n                      .describe('Variant inventory status.')\n                      .optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z.never().optional(),\n                    }),\n                    z.object({\n                      digitalProperties: z.never().optional(),\n                      physicalProperties: z\n                        .object({\n                          weight: z\n                            .number()\n                            .describe(\n                              'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                            )\n                            .min(0)\n                            .max(999999999.99)\n                            .optional()\n                            .nullable(),\n                          pricePerUnit: z\n                            .object({\n                              settings: z\n                                .object({\n                                  quantity: z\n                                    .number()\n                                    .describe(\n                                      'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                    )\n                                    .min(0.01)\n                                    .max(999999999.99)\n                                    .optional(),\n                                  measurementUnit: z\n                                    .enum([\n                                      'UNSPECIFIED',\n                                      'ML',\n                                      'CL',\n                                      'L',\n                                      'CBM',\n                                      'MG',\n                                      'G',\n                                      'KG',\n                                      'MM',\n                                      'CM',\n                                      'M',\n                                      'SQM',\n                                      'OZ',\n                                      'LB',\n                                      'FLOZ',\n                                      'PT',\n                                      'QT',\n                                      'GAL',\n                                      'IN',\n                                      'FT',\n                                      'YD',\n                                      'SQFT',\n                                    ])\n                                    .describe(\n                                      'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                )\n                                .optional(),\n                              value: z\n                                .string()\n                                .describe(\n                                  \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                )\n                                .optional(),\n                              description: z\n                                .string()\n                                .describe(\n                                  'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(100)\n                                .optional()\n                                .nullable(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                            )\n                            .optional(),\n                          productDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Product dimensions (length, width, height of the physical product).'\n                            )\n                            .optional(),\n                          packageDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Package dimensions (length, width, height of the shipping package).'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Physical properties. Must be passed when `productType: PHYSICAL`'\n                        ),\n                    }),\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z\n                        .object({\n                          digitalFile: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe('Media ID in media manager.')\n                                .min(1)\n                                .max(100)\n                                .optional(),\n                              fileName: z\n                                .string()\n                                .describe('Original file name.')\n                                .min(1)\n                                .max(1000)\n                                .optional(),\n                              fileSize: z\n                                .string()\n                                .describe('Original file size.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              fileType: z\n                                .enum([\n                                  'UNSPECIFIED',\n                                  'SECURE_PICTURE',\n                                  'SECURE_VIDEO',\n                                  'SECURE_DOCUMENT',\n                                  'SECURE_MUSIC',\n                                  'SECURE_ARCHIVE',\n                                  'SECURE_RAW',\n                                ])\n                                .describe('File type.')\n                                .optional(),\n                            })\n                            .describe(\n                              'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Digital properties. Must be passed when `productType: DIGITAL`'\n                        ),\n                    }),\n                  ])\n                )\n                .describe(\n                  'The variant with the lowest `actualPrice` among visible variants for this product.\\n\\nHidden variants are excluded; ties are broken by variant order. Empty if the product has no visible variants.\\n> **Note:** Returned only when you pass `\"MIN_PRICE_VARIANT\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n            })\n            .describe('The total number of variants for the product.')\n            .optional(),\n        }),\n        z.xor([\n          z.object({ physicalProperties: z.never().optional() }),\n          z.object({\n            physicalProperties: z\n              .object({\n                pricePerUnit: z\n                  .object({\n                    quantity: z\n                      .number()\n                      .describe(\n                        'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                      )\n                      .min(0.01)\n                      .max(999999999.99)\n                      .optional(),\n                    measurementUnit: z\n                      .enum([\n                        'UNSPECIFIED',\n                        'ML',\n                        'CL',\n                        'L',\n                        'CBM',\n                        'MG',\n                        'G',\n                        'KG',\n                        'MM',\n                        'CM',\n                        'M',\n                        'SQM',\n                        'OZ',\n                        'LB',\n                        'FLOZ',\n                        'PT',\n                        'QT',\n                        'GAL',\n                        'IN',\n                        'FT',\n                        'YD',\n                        'SQFT',\n                      ])\n                      .describe(\n                        'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                      )\n                      .optional(),\n                  })\n                  .describe(\n                    'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n                  )\n                  .optional(),\n                fulfillerId: z\n                  .string()\n                  .describe('Fulfiller ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                shippingWeightRange: z\n                  .object({\n                    minValue: z\n                      .number()\n                      .describe(\n                        'Minimum weight across all variants associated with this product.'\n                      )\n                      .min(0)\n                      .max(999999999.99)\n                      .optional(),\n                    maxValue: z\n                      .number()\n                      .describe(\n                        'Maximum weight across all variants associated with this product.'\n                      )\n                      .min(0)\n                      .max(999999999.99)\n                      .optional(),\n                  })\n                  .describe(\n                    'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n                  )\n                  .optional(),\n                pricePerUnitRange: z\n                  .object({\n                    minValue: z\n                      .object({\n                        value: z\n                          .string()\n                          .describe(\n                            \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                          )\n                          .optional(),\n                        description: z\n                          .string()\n                          .describe(\n                            'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                          )\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe('Minimum price per unit across all variants.')\n                      .optional(),\n                    maxValue: z\n                      .object({\n                        value: z\n                          .string()\n                          .describe(\n                            \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                          )\n                          .optional(),\n                        description: z\n                          .string()\n                          .describe(\n                            'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                          )\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe('Maximum price per unit across all variants.')\n                      .optional(),\n                  })\n                  .describe(\n                    'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n                  )\n                  .optional(),\n                weightMeasurementUnitInfo: z\n                  .object({\n                    weightMeasurementUnit: z\n                      .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                      .describe('Weight measurement unit.')\n                      .optional(),\n                  })\n                  .describe(\n                    'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n                  )\n                  .optional(),\n                deliveryProfileId: z\n                  .string()\n                  .describe('Delivery profile ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n              })\n              .describe(\n                'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n              ),\n          }),\n        ])\n      )\n      .describe('Product to update.'),\n    search: z\n      .object({\n        mode: z.enum(['OR', 'AND']).optional(),\n        expression: z\n          .string()\n          .describe('Search term or expression')\n          .max(100)\n          .optional()\n          .nullable(),\n        fields: z.array(z.string()).max(20).optional(),\n        fuzzy: z\n          .boolean()\n          .describe(\n            'Whether to enable the search function to use an algorithm to automatically find results that are close to the search expression, such as typos and declensions.'\n          )\n          .optional(),\n      })\n      .describe('Free text to match in searchable fields.')\n      .optional(),\n  }),\n});\nexport const BulkUpdateProductsByFilterResponse = z.object({\n  jobId: z\n    .string()\n    .describe(\n      'Job ID.\\n\\nPass this ID to [Get Async Job](https://dev.wix.com/docs/api-reference/business-management/async-job/introduction) to retrieve job details and metadata..'\n    )\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    )\n    .optional(),\n});\nexport const DeleteProductRequest = z.object({\n  productId: z.string().describe('Product ID.').min(1).max(36),\n});\nexport const DeleteProductResponse = z.object({});\nexport const BulkDeleteProductsRequest = z.object({\n  productIds: z.array(z.string()).min(1).max(100),\n});\nexport const BulkDeleteProductsResponse = z.object({\n  results: z\n    .array(\n      z.object({\n        itemMetadata: z\n          .object({\n            _id: z\n              .string()\n              .describe(\n                \"Item ID. Should always be available, unless it's impossible (for example, when failing to create an item).\"\n              )\n              .min(1)\n              .max(36)\n              .optional()\n              .nullable(),\n            originalIndex: z\n              .number()\n              .int()\n              .describe(\n                'Index of the item within the request array. Allows for correlation between request and response items.'\n              )\n              .optional(),\n            success: z\n              .boolean()\n              .describe(\n                'Whether the requested action was successful for this item. When `false`, the `error` field is populated.'\n              )\n              .optional(),\n            error: z\n              .object({\n                code: z.string().describe('Error code.').optional(),\n                description: z\n                  .string()\n                  .describe('Description of the error.')\n                  .optional(),\n                data: z\n                  .record(z.string(), z.any())\n                  .describe('Data related to the error.')\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Details about the error in case of failure.')\n              .optional(),\n          })\n          .describe('Bulk action metadata for products.')\n          .optional(),\n      })\n    )\n    .min(1)\n    .max(100)\n    .optional(),\n  bulkActionMetadata: z\n    .object({\n      totalSuccesses: z\n        .number()\n        .int()\n        .describe('Number of items that were successfully processed.')\n        .optional(),\n      totalFailures: z\n        .number()\n        .int()\n        .describe(\"Number of items that couldn't be processed.\")\n        .optional(),\n      undetailedFailures: z\n        .number()\n        .int()\n        .describe(\n          'Number of failures without details because detailed failure threshold was exceeded.'\n        )\n        .optional(),\n    })\n    .describe('Bulk action metadata.')\n    .optional(),\n});\nexport const BulkDeleteProductsByFilterRequest = z.object({\n  filter: z.record(z.string(), z.any()).describe('Filter object.'),\n  options: z\n    .object({\n      search: z\n        .object({\n          mode: z.enum(['OR', 'AND']).optional(),\n          expression: z\n            .string()\n            .describe('Search term or expression')\n            .max(100)\n            .optional()\n            .nullable(),\n          fields: z.array(z.string()).max(20).optional(),\n          fuzzy: z\n            .boolean()\n            .describe(\n              'Whether to enable the search function to use an algorithm to automatically find results that are close to the search expression, such as typos and declensions.'\n            )\n            .optional(),\n        })\n        .describe('Free text to match in searchable fields.')\n        .optional(),\n    })\n    .optional(),\n});\nexport const BulkDeleteProductsByFilterResponse = z.object({\n  jobId: z\n    .string()\n    .describe(\n      'Job ID.\\n\\nPass this ID to [Get Async Job](https://dev.wix.com/docs/api-reference/business-management/async-job/introduction) to retrieve job details and metadata..'\n    )\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    )\n    .optional(),\n});\nexport const GetProductRequest = z.object({\n  productId: z.string().describe('Product ID.').min(1).max(36),\n  options: z\n    .object({\n      fields: z\n        .array(\n          z.enum([\n            'URL',\n            'CURRENCY',\n            'INFO_SECTION',\n            'MERCHANT_DATA',\n            'PLAIN_DESCRIPTION',\n            'INFO_SECTION_PLAIN_DESCRIPTION',\n            'SUBSCRIPTION_PRICES_INFO',\n            'BREADCRUMBS_INFO',\n            'WEIGHT_MEASUREMENT_UNIT_INFO',\n            'VARIANT_OPTION_CHOICE_NAMES',\n            'MEDIA_ITEMS_INFO',\n            'DESCRIPTION',\n            'DIRECT_CATEGORIES_INFO',\n            'ALL_CATEGORIES_INFO',\n            'INFO_SECTION_DESCRIPTION',\n            'THUMBNAIL',\n            'PRODUCT_CHOICES_MEDIA_REFERENCES',\n            'PRODUCT_CHOICES_DISPLAY_IMAGE',\n            'DISCOUNT_INFO',\n          ])\n        )\n        .max(100)\n        .optional(),\n    })\n    .optional(),\n});\nexport const GetProductResponse = z.intersection(\n  z.object({\n    _id: z\n      .string()\n      .describe('Product ID.')\n      .min(1)\n      .max(36)\n      .optional()\n      .nullable(),\n    revision: z\n      .string()\n      .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n      .describe(\n        'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product.'\n      )\n      .optional()\n      .nullable(),\n    _createdDate: z\n      .date()\n      .describe('Date and time the product was created.')\n      .optional()\n      .nullable(),\n    _updatedDate: z\n      .date()\n      .describe('Date and time the product was updated.')\n      .optional()\n      .nullable(),\n    name: z\n      .string()\n      .describe('Product name. Translatable.')\n      .min(1)\n      .max(80)\n      .optional()\n      .nullable(),\n    slug: z\n      .string()\n      .describe(\n        'Product slug. A URL-friendly identifier used in the product page address.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n      )\n      .min(1)\n      .max(300)\n      .optional()\n      .nullable(),\n    url: z\n      .string()\n      .describe(\n        'URL to the site\\'s product page.\\n\\n> **Note:** Returned only when you pass `\"URL\"` to the `fields` array in Products API requests.'\n      )\n      .optional(),\n    description: z\n      .any()\n      .describe(\n        'Product description using rich content.\\n> **Note:** Returned only when you pass `\"DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n      )\n      .optional(),\n    plainDescription: z\n      .string()\n      .describe(\n        'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n      )\n      .max(16000)\n      .optional()\n      .nullable(),\n    visible: z\n      .boolean()\n      .describe(\n        \"Whether the product is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the default variant's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n      )\n      .optional()\n      .nullable(),\n    visibleInPos: z\n      .boolean()\n      .describe(\n        'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n      )\n      .optional()\n      .nullable(),\n    media: z\n      .object({\n        main: z\n          .intersection(\n            z.object({\n              altText: z\n                .string()\n                .describe('Image alt text.')\n                .min(1)\n                .max(1000)\n                .optional()\n                .nullable(),\n              displayName: z\n                .string()\n                .describe(\n                  \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                )\n                .max(80)\n                .optional()\n                .nullable(),\n              mediaType: z\n                .enum(['IMAGE', 'VIDEO'])\n                .describe('Media type.')\n                .optional(),\n              thumbnail: z\n                .object({\n                  url: z.string().describe('Thumbnail url.').url().optional(),\n                  height: z\n                    .number()\n                    .int()\n                    .describe('Thumbnail height.')\n                    .optional(),\n                  width: z\n                    .number()\n                    .int()\n                    .describe('Thumbnail width.')\n                    .optional(),\n                  altText: z\n                    .string()\n                    .describe('Thumbnail alt text.')\n                    .min(1)\n                    .max(1000)\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              uploadId: z\n                .string()\n                .describe('ID used to upload media to Wix Media Manager.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n            }),\n            z.intersection(\n              z.xor([\n                z.object({\n                  _id: z.never().optional(),\n                  url: z.never().optional(),\n                }),\n                z.object({\n                  url: z.never().optional(),\n                  _id: z\n                    .string()\n                    .describe(\n                      'Set media by ID of an existing file in Wix Media Manager.'\n                    )\n                    .min(1)\n                    .max(200),\n                }),\n                z.object({\n                  _id: z.never().optional(),\n                  url: z\n                    .string()\n                    .describe('Set media using an external media URL.')\n                    .url(),\n                }),\n              ]),\n              z.xor([\n                z.object({\n                  image: z.never().optional(),\n                  video: z.never().optional(),\n                }),\n                z.object({\n                  video: z.never().optional(),\n                  image: z\n                    .string()\n                    .describe(\n                      \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                    ),\n                }),\n                z.object({\n                  image: z.never().optional(),\n                  video: z\n                    .string()\n                    .describe(\n                      \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                    ),\n                }),\n              ])\n            )\n          )\n          .describe(\n            'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n          )\n          .optional(),\n        itemsInfo: z\n          .object({\n            items: z\n              .array(\n                z.intersection(\n                  z.object({\n                    altText: z\n                      .string()\n                      .describe('Image alt text.')\n                      .min(1)\n                      .max(1000)\n                      .optional()\n                      .nullable(),\n                    displayName: z\n                      .string()\n                      .describe(\n                        \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                      )\n                      .max(80)\n                      .optional()\n                      .nullable(),\n                    mediaType: z\n                      .enum(['IMAGE', 'VIDEO'])\n                      .describe('Media type.')\n                      .optional(),\n                    thumbnail: z\n                      .object({\n                        url: z\n                          .string()\n                          .describe('Thumbnail url.')\n                          .url()\n                          .optional(),\n                        height: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail height.')\n                          .optional(),\n                        width: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail width.')\n                          .optional(),\n                        altText: z\n                          .string()\n                          .describe('Thumbnail alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    uploadId: z\n                      .string()\n                      .describe('ID used to upload media to Wix Media Manager.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                  }),\n                  z.intersection(\n                    z.xor([\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z.never().optional(),\n                      }),\n                      z.object({\n                        url: z.never().optional(),\n                        _id: z\n                          .string()\n                          .describe(\n                            'Set media by ID of an existing file in Wix Media Manager.'\n                          )\n                          .min(1)\n                          .max(200),\n                      }),\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z\n                          .string()\n                          .describe('Set media using an external media URL.')\n                          .url(),\n                      }),\n                    ]),\n                    z.xor([\n                      z.object({\n                        image: z.never().optional(),\n                        video: z.never().optional(),\n                      }),\n                      z.object({\n                        video: z.never().optional(),\n                        image: z\n                          .string()\n                          .describe(\n                            \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                          ),\n                      }),\n                      z.object({\n                        image: z.never().optional(),\n                        video: z\n                          .string()\n                          .describe(\n                            \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                          ),\n                      }),\n                    ])\n                  )\n                )\n              )\n              .max(50)\n              .optional(),\n          })\n          .describe(\n            'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n      })\n      .describe(\n        'Product media items. For a detailed explanation of product media, see [About Product Media](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/about-product-media).'\n      )\n      .optional(),\n    seoData: z\n      .object({\n        tags: z\n          .array(\n            z.object({\n              type: z\n                .string()\n                .describe(\n                  'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                )\n                .optional(),\n              props: z\n                .record(z.string(), z.any())\n                .describe(\n                  'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                )\n                .optional()\n                .nullable(),\n              meta: z\n                .record(z.string(), z.any())\n                .describe(\n                  'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                )\n                .optional()\n                .nullable(),\n              children: z\n                .string()\n                .describe(\n                  'SEO tag inner content. For example, `<title> inner content </title>`.'\n                )\n                .optional(),\n              custom: z\n                .boolean()\n                .describe(\n                  'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                )\n                .optional(),\n              disabled: z\n                .boolean()\n                .describe(\n                  \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                )\n                .optional(),\n            })\n          )\n          .optional(),\n        settings: z\n          .object({\n            preventAutoRedirect: z\n              .boolean()\n              .describe(\n                'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n              )\n              .optional(),\n            keywords: z\n              .array(\n                z.object({\n                  term: z.string().describe('Keyword value.').optional(),\n                  isMain: z\n                    .boolean()\n                    .describe('Whether the keyword is the main focus keyword.')\n                    .optional(),\n                  origin: z\n                    .string()\n                    .describe(\n                      'The source that added the keyword terms to the SEO settings.'\n                    )\n                    .max(1000)\n                    .optional()\n                    .nullable(),\n                })\n              )\n              .max(5)\n              .optional(),\n          })\n          .describe('SEO general settings.')\n          .optional(),\n      })\n      .describe('Product SEO data.')\n      .optional(),\n    taxGroupId: z\n      .string()\n      .describe(\n        '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n      )\n      .regex(\n        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n        'Must be a valid GUID'\n      )\n      .optional()\n      .nullable(),\n    options: z\n      .array(\n        z.intersection(\n          z.object({\n            _id: z\n              .string()\n              .describe(\n                'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n              )\n              .min(1)\n              .max(36)\n              .optional()\n              .nullable(),\n            name: z\n              .string()\n              .describe('Option name.')\n              .min(1)\n              .max(50)\n              .optional()\n              .nullable(),\n            optionRenderType: z\n              .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n              .describe('Option render type.')\n              .optional(),\n            key: z\n              .string()\n              .describe(\n                'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n              )\n              .min(1)\n              .max(50)\n              .optional(),\n          }),\n          z.xor([\n            z.object({ choicesSettings: z.never().optional() }),\n            z.object({\n              choicesSettings: z\n                .object({\n                  choices: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          choiceId: z\n                            .string()\n                            .describe('Choice ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          linkedMedia: z\n                            .array(\n                              z.intersection(\n                                z.object({\n                                  altText: z\n                                    .string()\n                                    .describe('Image alt text.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                  displayName: z\n                                    .string()\n                                    .describe(\n                                      \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                    )\n                                    .max(80)\n                                    .optional()\n                                    .nullable(),\n                                  mediaType: z\n                                    .enum(['IMAGE', 'VIDEO'])\n                                    .describe('Media type.')\n                                    .optional(),\n                                  thumbnail: z\n                                    .object({\n                                      url: z\n                                        .string()\n                                        .describe('Thumbnail url.')\n                                        .url()\n                                        .optional(),\n                                      height: z\n                                        .number()\n                                        .int()\n                                        .describe('Thumbnail height.')\n                                        .optional(),\n                                      width: z\n                                        .number()\n                                        .int()\n                                        .describe('Thumbnail width.')\n                                        .optional(),\n                                      altText: z\n                                        .string()\n                                        .describe('Thumbnail alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .optional(),\n                                  uploadId: z\n                                    .string()\n                                    .describe(\n                                      'ID used to upload media to Wix Media Manager.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                }),\n                                z.intersection(\n                                  z.xor([\n                                    z.object({\n                                      _id: z.never().optional(),\n                                      url: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      url: z.never().optional(),\n                                      _id: z\n                                        .string()\n                                        .describe(\n                                          'Set media by ID of an existing file in Wix Media Manager.'\n                                        )\n                                        .min(1)\n                                        .max(200),\n                                    }),\n                                    z.object({\n                                      _id: z.never().optional(),\n                                      url: z\n                                        .string()\n                                        .describe(\n                                          'Set media using an external media URL.'\n                                        )\n                                        .url(),\n                                    }),\n                                  ]),\n                                  z.xor([\n                                    z.object({\n                                      image: z.never().optional(),\n                                      video: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      video: z.never().optional(),\n                                      image: z\n                                        .string()\n                                        .describe(\n                                          \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                        ),\n                                    }),\n                                    z.object({\n                                      image: z.never().optional(),\n                                      video: z\n                                        .string()\n                                        .describe(\n                                          \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                        ),\n                                    }),\n                                  ])\n                                )\n                              )\n                            )\n                            .max(15)\n                            .optional(),\n                          choiceType: z\n                            .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                            .describe('Choice type.')\n                            .optional(),\n                          key: z\n                            .string()\n                            .describe(\n                              'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                            )\n                            .min(1)\n                            .max(50)\n                            .optional(),\n                          name: z\n                            .string()\n                            .describe(\n                              'Choice name. For text choices, this field also contains the choice value.'\n                            )\n                            .min(1)\n                            .max(50)\n                            .optional()\n                            .nullable(),\n                          inStock: z\n                            .boolean()\n                            .describe(\n                              'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                            )\n                            .optional(),\n                          visible: z\n                            .boolean()\n                            .describe(\n                              'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                            )\n                            .optional(),\n                          displayImage: z\n                            .string()\n                            .describe(\n                              'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                            )\n                            .optional(),\n                          media: z\n                            .object({\n                              items: z\n                                .array(\n                                  z.intersection(\n                                    z.object({}),\n                                    z.xor([\n                                      z.object({\n                                        mediaId: z.never().optional(),\n                                        url: z.never().optional(),\n                                      }),\n                                      z.object({\n                                        url: z.never().optional(),\n                                        mediaId: z\n                                          .string()\n                                          .describe(\n                                            'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                          )\n                                          .min(1)\n                                          .max(200),\n                                      }),\n                                      z.object({\n                                        mediaId: z.never().optional(),\n                                        url: z\n                                          .string()\n                                          .describe(\n                                            'External media URL. Can be used only on write.'\n                                          )\n                                          .url(),\n                                      }),\n                                    ])\n                                  )\n                                )\n                                .max(15)\n                                .optional(),\n                            })\n                            .describe(\n                              'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                            )\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({ colorCode: z.never().optional() }),\n                          z.object({\n                            colorCode: z\n                              .string()\n                              .describe(\n                                'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                              )\n                              .min(3)\n                              .max(20),\n                          }),\n                        ])\n                      )\n                    )\n                    .min(1)\n                    .max(100)\n                    .optional(),\n                })\n                .describe('Choices settings.'),\n            }),\n          ])\n        )\n      )\n      .max(6)\n      .optional(),\n    modifiers: z\n      .array(\n        z.intersection(\n          z.object({\n            _id: z\n              .string()\n              .describe(\n                'ID of a customization with `customizationType: MODIFIER`.'\n              )\n              .min(1)\n              .max(36)\n              .optional()\n              .nullable(),\n            name: z\n              .string()\n              .describe('Modifier title.')\n              .min(1)\n              .max(50)\n              .optional()\n              .nullable(),\n            modifierRenderType: z\n              .enum(['FREE_TEXT', 'TEXT_CHOICES', 'SWATCH_CHOICES'])\n              .describe('Modifier render type.')\n              .optional(),\n            mandatory: z\n              .boolean()\n              .describe('Whether customer input is required for this modifier.')\n              .optional(),\n            key: z\n              .string()\n              .describe(\n                'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n              )\n              .min(1)\n              .max(50)\n              .optional(),\n          }),\n          z.xor([\n            z.object({\n              freeTextSettings: z.never().optional(),\n              choicesSettings: z.never().optional(),\n            }),\n            z.object({\n              choicesSettings: z.never().optional(),\n              freeTextSettings: z\n                .object({\n                  minCharCount: z\n                    .number()\n                    .int()\n                    .describe('Minimum number of characters.')\n                    .optional(),\n                  maxCharCount: z\n                    .number()\n                    .int()\n                    .describe('Maximum number of characters.')\n                    .max(500)\n                    .optional(),\n                  defaultAddedPrice: z\n                    .string()\n                    .describe(\n                      \"Default amount to be added to the product's price.\"\n                    )\n                    .optional()\n                    .nullable(),\n                  title: z\n                    .string()\n                    .describe('Title of the text to be input by the customer.')\n                    .min(1)\n                    .max(150)\n                    .optional(),\n                  key: z\n                    .string()\n                    .describe(\n                      'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                    )\n                    .min(1)\n                    .max(150)\n                    .optional(),\n                })\n                .describe('Free text modifier settings.'),\n            }),\n            z.object({\n              freeTextSettings: z.never().optional(),\n              choicesSettings: z\n                .object({\n                  choices: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          choiceId: z\n                            .string()\n                            .describe('Choice ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          linkedMedia: z\n                            .array(\n                              z.intersection(\n                                z.object({\n                                  altText: z\n                                    .string()\n                                    .describe('Image alt text.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                  displayName: z\n                                    .string()\n                                    .describe(\n                                      \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                    )\n                                    .max(80)\n                                    .optional()\n                                    .nullable(),\n                                  mediaType: z\n                                    .enum(['IMAGE', 'VIDEO'])\n                                    .describe('Media type.')\n                                    .optional(),\n                                  thumbnail: z\n                                    .object({\n                                      url: z\n                                        .string()\n                                        .describe('Thumbnail url.')\n                                        .url()\n                                        .optional(),\n                                      height: z\n                                        .number()\n                                        .int()\n                                        .describe('Thumbnail height.')\n                                        .optional(),\n                                      width: z\n                                        .number()\n                                        .int()\n                                        .describe('Thumbnail width.')\n                                        .optional(),\n                                      altText: z\n                                        .string()\n                                        .describe('Thumbnail alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .optional(),\n                                  uploadId: z\n                                    .string()\n                                    .describe(\n                                      'ID used to upload media to Wix Media Manager.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                }),\n                                z.intersection(\n                                  z.xor([\n                                    z.object({\n                                      _id: z.never().optional(),\n                                      url: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      url: z.never().optional(),\n                                      _id: z\n                                        .string()\n                                        .describe(\n                                          'Set media by ID of an existing file in Wix Media Manager.'\n                                        )\n                                        .min(1)\n                                        .max(200),\n                                    }),\n                                    z.object({\n                                      _id: z.never().optional(),\n                                      url: z\n                                        .string()\n                                        .describe(\n                                          'Set media using an external media URL.'\n                                        )\n                                        .url(),\n                                    }),\n                                  ]),\n                                  z.xor([\n                                    z.object({\n                                      image: z.never().optional(),\n                                      video: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      video: z.never().optional(),\n                                      image: z\n                                        .string()\n                                        .describe(\n                                          \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                        ),\n                                    }),\n                                    z.object({\n                                      image: z.never().optional(),\n                                      video: z\n                                        .string()\n                                        .describe(\n                                          \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                        ),\n                                    }),\n                                  ])\n                                )\n                              )\n                            )\n                            .max(15)\n                            .optional(),\n                          choiceType: z\n                            .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                            .describe('Choice type.')\n                            .optional(),\n                          key: z\n                            .string()\n                            .describe(\n                              'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                            )\n                            .min(1)\n                            .max(50)\n                            .optional(),\n                          name: z\n                            .string()\n                            .describe('Choice name.')\n                            .min(1)\n                            .max(50)\n                            .optional()\n                            .nullable(),\n                          addedPrice: z\n                            .string()\n                            .describe('Added price.')\n                            .optional()\n                            .nullable(),\n                          displayImage: z\n                            .string()\n                            .describe(\n                              'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                            )\n                            .optional(),\n                          media: z\n                            .object({\n                              items: z\n                                .array(\n                                  z.intersection(\n                                    z.object({}),\n                                    z.xor([\n                                      z.object({\n                                        mediaId: z.never().optional(),\n                                        url: z.never().optional(),\n                                      }),\n                                      z.object({\n                                        url: z.never().optional(),\n                                        mediaId: z\n                                          .string()\n                                          .describe(\n                                            'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                          )\n                                          .min(1)\n                                          .max(200),\n                                      }),\n                                      z.object({\n                                        mediaId: z.never().optional(),\n                                        url: z\n                                          .string()\n                                          .describe(\n                                            'External media URL. Can be used only on write.'\n                                          )\n                                          .url(),\n                                      }),\n                                    ])\n                                  )\n                                )\n                                .max(15)\n                                .optional(),\n                            })\n                            .describe(\n                              'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                            )\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({ colorCode: z.never().optional() }),\n                          z.object({\n                            colorCode: z\n                              .string()\n                              .describe(\n                                'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                              )\n                              .min(3)\n                              .max(20),\n                          }),\n                        ])\n                      )\n                    )\n                    .min(1)\n                    .max(100)\n                    .optional(),\n                })\n                .describe('Choice settings.'),\n            }),\n          ])\n        )\n      )\n      .max(10)\n      .optional(),\n    brand: z\n      .object({\n        _id: z\n          .string()\n          .describe('Brand ID.')\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        name: z.string().describe('Brand name.').max(50).optional().nullable(),\n      })\n      .describe(\n        \"Product [brand](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/brands-v3/introduction).\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n      )\n      .optional(),\n    infoSections: z\n      .array(\n        z.object({\n          _id: z\n            .string()\n            .describe('Info section ID.')\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          uniqueName: z\n            .string()\n            .describe(\n              'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n            )\n            .max(100)\n            .optional()\n            .nullable(),\n          title: z\n            .string()\n            .describe(\n              'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n            )\n            .min(1)\n            .max(50)\n            .optional()\n            .nullable(),\n          description: z\n            .any()\n            .describe(\n              'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n            )\n            .optional(),\n          plainDescription: z\n            .string()\n            .describe(\n              'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n            )\n            .max(16000)\n            .optional()\n            .nullable(),\n        })\n      )\n      .max(10)\n      .optional(),\n    ribbon: z\n      .object({\n        _id: z\n          .string()\n          .describe('Ribbon ID.')\n          .min(1)\n          .max(36)\n          .optional()\n          .nullable(),\n        name: z.string().describe('Ribbon name.').max(30).optional().nullable(),\n      })\n      .describe(\n        \"Primary [ribbon](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/ribbons-v3/introduction) displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n      )\n      .optional(),\n    directCategoriesInfo: z\n      .object({\n        categories: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('Category ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              index: z\n                .number()\n                .int()\n                .describe(\n                  'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                )\n                .min(0)\n                .max(200)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(2000)\n          .optional(),\n      })\n      .describe(\n        'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product.\\n\\nUpdated automatically when a product is added/removed from a category, when an item is moved within a category, or when a category is deleted.\\n> **Note:** Returned only when you pass `\"DIRECT_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n      )\n      .optional(),\n    allCategoriesInfo: z\n      .object({\n        categories: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('Category ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              index: z\n                .number()\n                .int()\n                .describe(\n                  'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                )\n                .min(0)\n                .max(200)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(2000)\n          .optional(),\n      })\n      .describe(\n        'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product, as well as their parent categories.\\n> **Note:** Returned only when you pass `\"ALL_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n      )\n      .optional(),\n    mainCategoryId: z\n      .string()\n      .describe(\n        'The ID of the product\\'s primary direct [category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction), which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n      )\n      .regex(\n        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n        'Must be a valid GUID'\n      )\n      .optional()\n      .nullable(),\n    costRange: z\n      .object({\n        minValue: z\n          .object({\n            amount: z\n              .string()\n              .describe(\n                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n              )\n              .optional(),\n            formattedAmount: z\n              .string()\n              .describe(\n                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n              )\n              .max(20)\n              .optional()\n              .nullable(),\n          })\n          .describe('Minimum value.')\n          .optional(),\n        maxValue: z\n          .object({\n            amount: z\n              .string()\n              .describe(\n                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n              )\n              .optional(),\n            formattedAmount: z\n              .string()\n              .describe(\n                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n              )\n              .max(20)\n              .optional()\n              .nullable(),\n          })\n          .describe('Maximum value.')\n          .optional(),\n      })\n      .describe(\n        'Product cost range - minimum and maximum costs of all product variants.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n      )\n      .optional(),\n    inventory: z\n      .object({\n        availabilityStatus: z\n          .enum(['IN_STOCK', 'OUT_OF_STOCK', 'PARTIALLY_OUT_OF_STOCK'])\n          .describe('Current availability status.')\n          .optional(),\n        preorderStatus: z\n          .enum(['ENABLED', 'DISABLED', 'PARTIALLY_ENABLED'])\n          .describe('Current preorder status.')\n          .optional(),\n        preorderAvailability: z\n          .enum(['ALL_VARIANTS', 'NO_VARIANTS', 'SOME_VARIANTS'])\n          .describe('Preorder availability status.')\n          .optional(),\n      })\n      .describe(\n        'Product inventory info.\\n\\n> **Note:** This field reflects the aggregated inventory status from the default location only. Use the [Inventory Items API](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/inventory-items-v3/introduction) to manage inventory for specific locations. Learn more about [inventory management](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-inventory-management).'\n      )\n      .optional(),\n    productType: z\n      .enum(['PHYSICAL', 'DIGITAL'])\n      .describe(\n        'Product type: `PHYSICAL` for tangible goods that require shipping, or `DIGITAL` for downloadable content.\\n\\nWhen passing `productType: PHYSICAL`, you must also pass `physicalProperties`. When passing `productType: DIGITAL`, you can optionally pass `digitalProperties` in each variant.'\n      )\n      .optional(),\n    handle: z\n      .string()\n      .describe(\n        \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n      )\n      .min(1)\n      .max(100)\n      .optional()\n      .nullable(),\n    currency: z\n      .string()\n      .describe(\n        'Currency used for the pricing of this product, in [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes) format.\\n\\nDefaults to the currency defined in the site settings, unless specified in the request\\'s `x-wix-currency` header.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n      )\n      .optional()\n      .nullable(),\n    breadcrumbsInfo: z\n      .object({\n        breadcrumbs: z\n          .array(\n            z.object({\n              categoryId: z\n                .string()\n                .describe('Category ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              categoryName: z\n                .string()\n                .describe('Category name.')\n                .min(1)\n                .max(80)\n                .optional(),\n              categorySlug: z\n                .string()\n                .describe('Category slug.')\n                .min(1)\n                .max(100)\n                .optional(),\n            })\n          )\n          .max(5)\n          .optional(),\n      })\n      .describe(\n        'Breadcrumbs of the `mainCategoryId`. Used to navigate to parent [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction). Useful for building navigation UI and for SEO purposes.\\n> **Note:** Returned only when you pass `\"BREADCRUMBS_INFO\"` to the `fields` array in Products API requests.'\n      )\n      .optional(),\n    actualPriceRange: z\n      .object({\n        minValue: z\n          .object({\n            amount: z\n              .string()\n              .describe(\n                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n              )\n              .optional(),\n            formattedAmount: z\n              .string()\n              .describe(\n                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n              )\n              .max(20)\n              .optional()\n              .nullable(),\n          })\n          .describe('Minimum value.')\n          .optional(),\n        maxValue: z\n          .object({\n            amount: z\n              .string()\n              .describe(\n                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n              )\n              .optional(),\n            formattedAmount: z\n              .string()\n              .describe(\n                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n              )\n              .max(20)\n              .optional()\n              .nullable(),\n          })\n          .describe('Maximum value.')\n          .optional(),\n      })\n      .describe(\n        'Minimum and maximum current selling prices across all product variants.'\n      )\n      .optional(),\n    compareAtPriceRange: z\n      .object({\n        minValue: z\n          .object({\n            amount: z\n              .string()\n              .describe(\n                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n              )\n              .optional(),\n            formattedAmount: z\n              .string()\n              .describe(\n                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n              )\n              .max(20)\n              .optional()\n              .nullable(),\n          })\n          .describe('Minimum value.')\n          .optional(),\n        maxValue: z\n          .object({\n            amount: z\n              .string()\n              .describe(\n                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n              )\n              .optional(),\n            formattedAmount: z\n              .string()\n              .describe(\n                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n              )\n              .max(20)\n              .optional()\n              .nullable(),\n          })\n          .describe('Maximum value.')\n          .optional(),\n      })\n      .describe(\n        'Minimum and maximum compare-at prices (original prices before discounts) across all product variants. Used to show savings to customers.'\n      )\n      .optional(),\n    variantsInfo: z\n      .object({\n        variants: z\n          .array(\n            z.intersection(\n              z.object({\n                _id: z\n                  .string()\n                  .describe('Variant ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                visible: z\n                  .boolean()\n                  .describe(\n                    \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                  )\n                  .optional()\n                  .nullable(),\n                sku: z\n                  .string()\n                  .describe('Variant SKU (stock keeping unit).')\n                  .min(1)\n                  .max(40)\n                  .optional()\n                  .nullable(),\n                barcode: z\n                  .string()\n                  .describe('Variant barcode.')\n                  .min(1)\n                  .max(40)\n                  .optional()\n                  .nullable(),\n                choices: z\n                  .array(\n                    z.object({\n                      optionChoiceIds: z\n                        .object({\n                          optionId: z\n                            .string()\n                            .describe('Option ID.')\n                            .min(1)\n                            .max(36)\n                            .optional(),\n                          choiceId: z\n                            .string()\n                            .describe('Choice ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                        )\n                        .optional(),\n                      optionChoiceNames: z\n                        .object({\n                          optionName: z\n                            .string()\n                            .describe('Option name.')\n                            .min(1)\n                            .optional(),\n                          choiceName: z\n                            .string()\n                            .describe('Choice name.')\n                            .min(1)\n                            .optional(),\n                          renderType: z\n                            .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                            .describe(\n                              'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                        )\n                        .optional(),\n                    })\n                  )\n                  .min(0)\n                  .max(6)\n                  .optional(),\n                price: z\n                  .object({\n                    actualPrice: z\n                      .object({\n                        amount: z\n                          .string()\n                          .describe(\n                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                          )\n                          .optional(),\n                        formattedAmount: z\n                          .string()\n                          .describe(\n                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(20)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        \"Variant's current selling price. Must be greater than or equal to 0.\"\n                      )\n                      .optional(),\n                    compareAtPrice: z\n                      .object({\n                        amount: z\n                          .string()\n                          .describe(\n                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                          )\n                          .optional(),\n                        formattedAmount: z\n                          .string()\n                          .describe(\n                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(20)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                      )\n                      .optional(),\n                    priceAfterDiscount: z\n                      .object({\n                        amount: z\n                          .string()\n                          .describe(\n                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                          )\n                          .optional(),\n                        formattedAmount: z\n                          .string()\n                          .describe(\n                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(20)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                      )\n                      .optional(),\n                  })\n                  .describe('Variant price.')\n                  .optional(),\n                revenueDetails: z\n                  .object({\n                    cost: z\n                      .object({\n                        amount: z\n                          .string()\n                          .describe(\n                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                          )\n                          .optional(),\n                        formattedAmount: z\n                          .string()\n                          .describe(\n                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(20)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe('Item cost.')\n                      .optional(),\n                    profit: z\n                      .object({\n                        amount: z\n                          .string()\n                          .describe(\n                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                          )\n                          .optional(),\n                        formattedAmount: z\n                          .string()\n                          .describe(\n                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(20)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                      )\n                      .optional(),\n                    profitMargin: z\n                      .number()\n                      .describe(\n                        'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                      )\n                      .min(0)\n                      .max(1)\n                      .optional(),\n                  })\n                  .describe(\n                    'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                  )\n                  .optional(),\n                media: z\n                  .intersection(\n                    z.object({\n                      altText: z\n                        .string()\n                        .describe('Image alt text.')\n                        .min(1)\n                        .max(1000)\n                        .optional()\n                        .nullable(),\n                      displayName: z\n                        .string()\n                        .describe(\n                          \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                        )\n                        .max(80)\n                        .optional()\n                        .nullable(),\n                      mediaType: z\n                        .enum(['IMAGE', 'VIDEO'])\n                        .describe('Media type.')\n                        .optional(),\n                      thumbnail: z\n                        .object({\n                          url: z\n                            .string()\n                            .describe('Thumbnail url.')\n                            .url()\n                            .optional(),\n                          height: z\n                            .number()\n                            .int()\n                            .describe('Thumbnail height.')\n                            .optional(),\n                          width: z\n                            .number()\n                            .int()\n                            .describe('Thumbnail width.')\n                            .optional(),\n                          altText: z\n                            .string()\n                            .describe('Thumbnail alt text.')\n                            .min(1)\n                            .max(1000)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                        )\n                        .optional(),\n                      uploadId: z\n                        .string()\n                        .describe(\n                          'ID used to upload media to Wix Media Manager.'\n                        )\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional(),\n                    }),\n                    z.intersection(\n                      z.xor([\n                        z.object({\n                          _id: z.never().optional(),\n                          url: z.never().optional(),\n                        }),\n                        z.object({\n                          url: z.never().optional(),\n                          _id: z\n                            .string()\n                            .describe(\n                              'Set media by ID of an existing file in Wix Media Manager.'\n                            )\n                            .min(1)\n                            .max(200),\n                        }),\n                        z.object({\n                          _id: z.never().optional(),\n                          url: z\n                            .string()\n                            .describe('Set media using an external media URL.')\n                            .url(),\n                        }),\n                      ]),\n                      z.xor([\n                        z.object({\n                          image: z.never().optional(),\n                          video: z.never().optional(),\n                        }),\n                        z.object({\n                          video: z.never().optional(),\n                          image: z\n                            .string()\n                            .describe(\n                              \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                            ),\n                        }),\n                        z.object({\n                          image: z.never().optional(),\n                          video: z\n                            .string()\n                            .describe(\n                              \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                            ),\n                        }),\n                      ])\n                    )\n                  )\n                  .describe('Variant media.')\n                  .optional(),\n                subscriptionPricesInfo: z\n                  .object({\n                    subscriptionPrices: z\n                      .array(\n                        z.object({\n                          subscriptionId: z\n                            .string()\n                            .describe('Subscription ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                          price: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                            )\n                            .optional(),\n                          pricePerUnit: z\n                            .object({\n                              value: z\n                                .string()\n                                .describe(\n                                  'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                )\n                                .optional(),\n                              description: z\n                                .string()\n                                .describe(\n                                  'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                            .describe('Price per unit info.')\n                            .optional(),\n                          priceAfterDiscount: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .max(6)\n                      .optional(),\n                  })\n                  .describe(\n                    'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                  )\n                  .optional(),\n                inventoryStatus: z\n                  .object({\n                    inStock: z\n                      .boolean()\n                      .describe('Whether the variant is in stock.')\n                      .optional(),\n                    preorderEnabled: z\n                      .boolean()\n                      .describe('Whether preorder is enabled for this variant.')\n                      .optional(),\n                  })\n                  .describe('Variant inventory status.')\n                  .optional(),\n              }),\n              z.xor([\n                z.object({\n                  physicalProperties: z.never().optional(),\n                  digitalProperties: z.never().optional(),\n                }),\n                z.object({\n                  digitalProperties: z.never().optional(),\n                  physicalProperties: z\n                    .object({\n                      weight: z\n                        .number()\n                        .describe(\n                          'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                        )\n                        .min(0)\n                        .max(999999999.99)\n                        .optional()\n                        .nullable(),\n                      pricePerUnit: z\n                        .object({\n                          settings: z\n                            .object({\n                              quantity: z\n                                .number()\n                                .describe(\n                                  'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                )\n                                .min(0.01)\n                                .max(999999999.99)\n                                .optional(),\n                              measurementUnit: z\n                                .enum([\n                                  'UNSPECIFIED',\n                                  'ML',\n                                  'CL',\n                                  'L',\n                                  'CBM',\n                                  'MG',\n                                  'G',\n                                  'KG',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'SQM',\n                                  'OZ',\n                                  'LB',\n                                  'FLOZ',\n                                  'PT',\n                                  'QT',\n                                  'GAL',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                  'SQFT',\n                                ])\n                                .describe(\n                                  'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                            )\n                            .optional(),\n                          value: z\n                            .string()\n                            .describe(\n                              \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                            )\n                            .optional(),\n                          description: z\n                            .string()\n                            .describe(\n                              'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(100)\n                            .optional()\n                            .nullable(),\n                          priceAfterDiscount: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                        )\n                        .optional(),\n                      productDimensions: z\n                        .object({\n                          length: z\n                            .string()\n                            .describe(\n                              'Length. Measurement unit is handled at the system level (metric/imperial).'\n                            )\n                            .optional()\n                            .nullable(),\n                          width: z\n                            .string()\n                            .describe(\n                              'Width. Measurement unit is handled at the system level (metric/imperial).'\n                            )\n                            .optional()\n                            .nullable(),\n                          height: z\n                            .string()\n                            .describe(\n                              'Height. Measurement unit is handled at the system level (metric/imperial).'\n                            )\n                            .optional()\n                            .nullable(),\n                          unit: z\n                            .enum([\n                              'UNKNOWN_DIMENSIONS_UNIT',\n                              'MM',\n                              'CM',\n                              'M',\n                              'IN',\n                              'FT',\n                              'YD',\n                            ])\n                            .describe(\n                              'Unit of measurement for dimensions (length, width, height).'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Product dimensions (length, width, height of the physical product).'\n                        )\n                        .optional(),\n                      packageDimensions: z\n                        .object({\n                          length: z\n                            .string()\n                            .describe(\n                              'Length. Measurement unit is handled at the system level (metric/imperial).'\n                            )\n                            .optional()\n                            .nullable(),\n                          width: z\n                            .string()\n                            .describe(\n                              'Width. Measurement unit is handled at the system level (metric/imperial).'\n                            )\n                            .optional()\n                            .nullable(),\n                          height: z\n                            .string()\n                            .describe(\n                              'Height. Measurement unit is handled at the system level (metric/imperial).'\n                            )\n                            .optional()\n                            .nullable(),\n                          unit: z\n                            .enum([\n                              'UNKNOWN_DIMENSIONS_UNIT',\n                              'MM',\n                              'CM',\n                              'M',\n                              'IN',\n                              'FT',\n                              'YD',\n                            ])\n                            .describe(\n                              'Unit of measurement for dimensions (length, width, height).'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Package dimensions (length, width, height of the shipping package).'\n                        )\n                        .optional(),\n                    })\n                    .describe(\n                      'Physical properties. Must be passed when `productType: PHYSICAL`'\n                    ),\n                }),\n                z.object({\n                  physicalProperties: z.never().optional(),\n                  digitalProperties: z\n                    .object({\n                      digitalFile: z\n                        .object({\n                          _id: z\n                            .string()\n                            .describe('Media ID in media manager.')\n                            .min(1)\n                            .max(100)\n                            .optional(),\n                          fileName: z\n                            .string()\n                            .describe('Original file name.')\n                            .min(1)\n                            .max(1000)\n                            .optional(),\n                          fileSize: z\n                            .string()\n                            .describe('Original file size.')\n                            .min(1)\n                            .max(1000)\n                            .optional()\n                            .nullable(),\n                          fileType: z\n                            .enum([\n                              'UNSPECIFIED',\n                              'SECURE_PICTURE',\n                              'SECURE_VIDEO',\n                              'SECURE_DOCUMENT',\n                              'SECURE_MUSIC',\n                              'SECURE_ARCHIVE',\n                              'SECURE_RAW',\n                            ])\n                            .describe('File type.')\n                            .optional(),\n                        })\n                        .describe(\n                          'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                        )\n                        .optional(),\n                    })\n                    .describe(\n                      'Digital properties. Must be passed when `productType: DIGITAL`'\n                    ),\n                }),\n              ])\n            )\n          )\n          .min(1)\n          .max(1000)\n          .optional(),\n      })\n      .describe(\n        'Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nYou must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).'\n      )\n      .optional(),\n    purchaseEligibility: z\n      .object({ userCriteria: z.enum(['MEMBERS_ONLY']).optional() })\n      .describe('Purchase eligibility settings for the product.')\n      .optional(),\n    additionalRibbons: z\n      .array(\n        z.object({\n          _id: z\n            .string()\n            .describe('Ribbon ID.')\n            .min(1)\n            .max(36)\n            .optional()\n            .nullable(),\n          name: z\n            .string()\n            .describe('Ribbon name.')\n            .max(30)\n            .optional()\n            .nullable(),\n        })\n      )\n      .max(4)\n      .optional(),\n    extendedFields: z\n      .object({\n        namespaces: z\n          .record(z.string(), z.record(z.string(), z.any()))\n          .describe(\n            'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n          )\n          .optional(),\n      })\n      .describe(\n        'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n      )\n      .optional(),\n    tags: z\n      .object({\n        privateTags: z\n          .object({ tagIds: z.array(z.string()).max(100).optional() })\n          .describe(\n            'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n          )\n          .optional(),\n        publicTags: z\n          .object({ tagIds: z.array(z.string()).max(100).optional() })\n          .describe(\n            'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n          )\n          .optional(),\n      })\n      .describe('Tags')\n      .optional(),\n    subscriptionDetails: z\n      .object({\n        subscriptions: z\n          .array(\n            z.intersection(\n              z.object({\n                _id: z\n                  .string()\n                  .describe('Subscription ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                title: z\n                  .string()\n                  .describe('Subscription title.')\n                  .min(1)\n                  .max(20)\n                  .optional(),\n                description: z\n                  .string()\n                  .describe('Subscription description.')\n                  .max(60)\n                  .optional()\n                  .nullable(),\n                visible: z\n                  .boolean()\n                  .describe(\n                    'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                  )\n                  .optional()\n                  .nullable(),\n                frequency: z\n                  .enum(['UNDEFINED', 'DAY', 'WEEK', 'MONTH', 'YEAR'])\n                  .describe(\n                    'Frequency of recurring payment.\\nFor example, if `frequency: MONTH` and `billingCycles: 6`; payment will be made monthly for 6 months.'\n                  )\n                  .optional(),\n                interval: z\n                  .number()\n                  .int()\n                  .describe(\n                    'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                discount: z\n                  .intersection(\n                    z.object({\n                      type: z\n                        .enum(['AMOUNT', 'PERCENT'])\n                        .describe('Discount type.')\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({\n                        amountOff: z.never().optional(),\n                        percentOff: z.never().optional(),\n                      }),\n                      z.object({\n                        percentOff: z.never().optional(),\n                        amountOff: z\n                          .string()\n                          .describe(\n                            'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                          ),\n                      }),\n                      z.object({\n                        amountOff: z.never().optional(),\n                        percentOff: z\n                          .number()\n                          .describe(\n                            'Percentage subtracted from the variant price when calculating subscription prices.'\n                          )\n                          .min(0.1)\n                          .max(99.9),\n                      }),\n                    ])\n                  )\n                  .describe(\n                    'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                  )\n                  .optional(),\n              }),\n              z.xor([\n                z.object({\n                  autoRenewal: z.never().optional(),\n                  billingCycles: z.never().optional(),\n                }),\n                z.object({\n                  billingCycles: z.never().optional(),\n                  autoRenewal: z\n                    .boolean()\n                    .describe(\n                      'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                    ),\n                }),\n                z.object({\n                  autoRenewal: z.never().optional(),\n                  billingCycles: z\n                    .number()\n                    .int()\n                    .describe(\n                      'Number of billing cycles before subscription ends.'\n                    )\n                    .min(2)\n                    .max(999),\n                }),\n              ])\n            )\n          )\n          .min(1)\n          .max(6)\n          .optional(),\n        allowOneTimePurchases: z\n          .boolean()\n          .describe(\n            'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n          )\n          .optional()\n          .nullable(),\n      })\n      .describe(\n        \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n      )\n      .optional(),\n    variantSummary: z\n      .object({\n        variantCount: z\n          .number()\n          .int()\n          .describe('The total number of variants for the product.')\n          .optional(),\n        minPriceVariant: z\n          .intersection(\n            z.object({\n              _id: z\n                .string()\n                .describe('Variant ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              visible: z\n                .boolean()\n                .describe(\n                  \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                )\n                .optional()\n                .nullable(),\n              sku: z\n                .string()\n                .describe('Variant SKU (stock keeping unit).')\n                .min(1)\n                .max(40)\n                .optional()\n                .nullable(),\n              barcode: z\n                .string()\n                .describe('Variant barcode.')\n                .min(1)\n                .max(40)\n                .optional()\n                .nullable(),\n              choices: z\n                .array(\n                  z.object({\n                    optionChoiceIds: z\n                      .object({\n                        optionId: z\n                          .string()\n                          .describe('Option ID.')\n                          .min(1)\n                          .max(36)\n                          .optional(),\n                        choiceId: z\n                          .string()\n                          .describe('Choice ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                      )\n                      .optional(),\n                    optionChoiceNames: z\n                      .object({\n                        optionName: z\n                          .string()\n                          .describe('Option name.')\n                          .min(1)\n                          .optional(),\n                        choiceName: z\n                          .string()\n                          .describe('Choice name.')\n                          .min(1)\n                          .optional(),\n                        renderType: z\n                          .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                          .describe(\n                            'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                  })\n                )\n                .min(0)\n                .max(6)\n                .optional(),\n              price: z\n                .object({\n                  actualPrice: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      \"Variant's current selling price. Must be greater than or equal to 0.\"\n                    )\n                    .optional(),\n                  compareAtPrice: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                    )\n                    .optional(),\n                  priceAfterDiscount: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                    )\n                    .optional(),\n                })\n                .describe('Variant price.')\n                .optional(),\n              revenueDetails: z\n                .object({\n                  cost: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Item cost.')\n                    .optional(),\n                  profit: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                    )\n                    .optional(),\n                  profitMargin: z\n                    .number()\n                    .describe(\n                      'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                    )\n                    .min(0)\n                    .max(1)\n                    .optional(),\n                })\n                .describe(\n                  'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                )\n                .optional(),\n              media: z\n                .intersection(\n                  z.object({\n                    altText: z\n                      .string()\n                      .describe('Image alt text.')\n                      .min(1)\n                      .max(1000)\n                      .optional()\n                      .nullable(),\n                    displayName: z\n                      .string()\n                      .describe(\n                        \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                      )\n                      .max(80)\n                      .optional()\n                      .nullable(),\n                    mediaType: z\n                      .enum(['IMAGE', 'VIDEO'])\n                      .describe('Media type.')\n                      .optional(),\n                    thumbnail: z\n                      .object({\n                        url: z\n                          .string()\n                          .describe('Thumbnail url.')\n                          .url()\n                          .optional(),\n                        height: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail height.')\n                          .optional(),\n                        width: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail width.')\n                          .optional(),\n                        altText: z\n                          .string()\n                          .describe('Thumbnail alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    uploadId: z\n                      .string()\n                      .describe('ID used to upload media to Wix Media Manager.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                  }),\n                  z.intersection(\n                    z.xor([\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z.never().optional(),\n                      }),\n                      z.object({\n                        url: z.never().optional(),\n                        _id: z\n                          .string()\n                          .describe(\n                            'Set media by ID of an existing file in Wix Media Manager.'\n                          )\n                          .min(1)\n                          .max(200),\n                      }),\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z\n                          .string()\n                          .describe('Set media using an external media URL.')\n                          .url(),\n                      }),\n                    ]),\n                    z.xor([\n                      z.object({\n                        image: z.never().optional(),\n                        video: z.never().optional(),\n                      }),\n                      z.object({\n                        video: z.never().optional(),\n                        image: z\n                          .string()\n                          .describe(\n                            \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                          ),\n                      }),\n                      z.object({\n                        image: z.never().optional(),\n                        video: z\n                          .string()\n                          .describe(\n                            \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                          ),\n                      }),\n                    ])\n                  )\n                )\n                .describe('Variant media.')\n                .optional(),\n              subscriptionPricesInfo: z\n                .object({\n                  subscriptionPrices: z\n                    .array(\n                      z.object({\n                        subscriptionId: z\n                          .string()\n                          .describe('Subscription ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        price: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                          )\n                          .optional(),\n                        pricePerUnit: z\n                          .object({\n                            value: z\n                              .string()\n                              .describe(\n                                'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                              )\n                              .optional(),\n                            description: z\n                              .string()\n                              .describe(\n                                'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                            priceAfterDiscount: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                              )\n                              .optional(),\n                          })\n                          .describe('Price per unit info.')\n                          .optional(),\n                        priceAfterDiscount: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                          )\n                          .optional(),\n                      })\n                    )\n                    .max(6)\n                    .optional(),\n                })\n                .describe(\n                  'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              inventoryStatus: z\n                .object({\n                  inStock: z\n                    .boolean()\n                    .describe('Whether the variant is in stock.')\n                    .optional(),\n                  preorderEnabled: z\n                    .boolean()\n                    .describe('Whether preorder is enabled for this variant.')\n                    .optional(),\n                })\n                .describe('Variant inventory status.')\n                .optional(),\n            }),\n            z.xor([\n              z.object({\n                physicalProperties: z.never().optional(),\n                digitalProperties: z.never().optional(),\n              }),\n              z.object({\n                digitalProperties: z.never().optional(),\n                physicalProperties: z\n                  .object({\n                    weight: z\n                      .number()\n                      .describe(\n                        'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                      )\n                      .min(0)\n                      .max(999999999.99)\n                      .optional()\n                      .nullable(),\n                    pricePerUnit: z\n                      .object({\n                        settings: z\n                          .object({\n                            quantity: z\n                              .number()\n                              .describe(\n                                'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                              )\n                              .min(0.01)\n                              .max(999999999.99)\n                              .optional(),\n                            measurementUnit: z\n                              .enum([\n                                'UNSPECIFIED',\n                                'ML',\n                                'CL',\n                                'L',\n                                'CBM',\n                                'MG',\n                                'G',\n                                'KG',\n                                'MM',\n                                'CM',\n                                'M',\n                                'SQM',\n                                'OZ',\n                                'LB',\n                                'FLOZ',\n                                'PT',\n                                'QT',\n                                'GAL',\n                                'IN',\n                                'FT',\n                                'YD',\n                                'SQFT',\n                              ])\n                              .describe(\n                                'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                          )\n                          .optional(),\n                        value: z\n                          .string()\n                          .describe(\n                            \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                          )\n                          .optional(),\n                        description: z\n                          .string()\n                          .describe(\n                            'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                        priceAfterDiscount: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                      )\n                      .optional(),\n                    productDimensions: z\n                      .object({\n                        length: z\n                          .string()\n                          .describe(\n                            'Length. Measurement unit is handled at the system level (metric/imperial).'\n                          )\n                          .optional()\n                          .nullable(),\n                        width: z\n                          .string()\n                          .describe(\n                            'Width. Measurement unit is handled at the system level (metric/imperial).'\n                          )\n                          .optional()\n                          .nullable(),\n                        height: z\n                          .string()\n                          .describe(\n                            'Height. Measurement unit is handled at the system level (metric/imperial).'\n                          )\n                          .optional()\n                          .nullable(),\n                        unit: z\n                          .enum([\n                            'UNKNOWN_DIMENSIONS_UNIT',\n                            'MM',\n                            'CM',\n                            'M',\n                            'IN',\n                            'FT',\n                            'YD',\n                          ])\n                          .describe(\n                            'Unit of measurement for dimensions (length, width, height).'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Product dimensions (length, width, height of the physical product).'\n                      )\n                      .optional(),\n                    packageDimensions: z\n                      .object({\n                        length: z\n                          .string()\n                          .describe(\n                            'Length. Measurement unit is handled at the system level (metric/imperial).'\n                          )\n                          .optional()\n                          .nullable(),\n                        width: z\n                          .string()\n                          .describe(\n                            'Width. Measurement unit is handled at the system level (metric/imperial).'\n                          )\n                          .optional()\n                          .nullable(),\n                        height: z\n                          .string()\n                          .describe(\n                            'Height. Measurement unit is handled at the system level (metric/imperial).'\n                          )\n                          .optional()\n                          .nullable(),\n                        unit: z\n                          .enum([\n                            'UNKNOWN_DIMENSIONS_UNIT',\n                            'MM',\n                            'CM',\n                            'M',\n                            'IN',\n                            'FT',\n                            'YD',\n                          ])\n                          .describe(\n                            'Unit of measurement for dimensions (length, width, height).'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Package dimensions (length, width, height of the shipping package).'\n                      )\n                      .optional(),\n                  })\n                  .describe(\n                    'Physical properties. Must be passed when `productType: PHYSICAL`'\n                  ),\n              }),\n              z.object({\n                physicalProperties: z.never().optional(),\n                digitalProperties: z\n                  .object({\n                    digitalFile: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe('Media ID in media manager.')\n                          .min(1)\n                          .max(100)\n                          .optional(),\n                        fileName: z\n                          .string()\n                          .describe('Original file name.')\n                          .min(1)\n                          .max(1000)\n                          .optional(),\n                        fileSize: z\n                          .string()\n                          .describe('Original file size.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        fileType: z\n                          .enum([\n                            'UNSPECIFIED',\n                            'SECURE_PICTURE',\n                            'SECURE_VIDEO',\n                            'SECURE_DOCUMENT',\n                            'SECURE_MUSIC',\n                            'SECURE_ARCHIVE',\n                            'SECURE_RAW',\n                          ])\n                          .describe('File type.')\n                          .optional(),\n                      })\n                      .describe(\n                        'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                      )\n                      .optional(),\n                  })\n                  .describe(\n                    'Digital properties. Must be passed when `productType: DIGITAL`'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'The variant with the lowest `actualPrice` among visible variants for this product.\\n\\nHidden variants are excluded; ties are broken by variant order. Empty if the product has no visible variants.\\n> **Note:** Returned only when you pass `\"MIN_PRICE_VARIANT\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n      })\n      .describe('The total number of variants for the product.')\n      .optional(),\n  }),\n  z.xor([\n    z.object({ physicalProperties: z.never().optional() }),\n    z.object({\n      physicalProperties: z\n        .object({\n          pricePerUnit: z\n            .object({\n              quantity: z\n                .number()\n                .describe(\n                  'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                )\n                .min(0.01)\n                .max(999999999.99)\n                .optional(),\n              measurementUnit: z\n                .enum([\n                  'UNSPECIFIED',\n                  'ML',\n                  'CL',\n                  'L',\n                  'CBM',\n                  'MG',\n                  'G',\n                  'KG',\n                  'MM',\n                  'CM',\n                  'M',\n                  'SQM',\n                  'OZ',\n                  'LB',\n                  'FLOZ',\n                  'PT',\n                  'QT',\n                  'GAL',\n                  'IN',\n                  'FT',\n                  'YD',\n                  'SQFT',\n                ])\n                .describe(\n                  'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                )\n                .optional(),\n            })\n            .describe(\n              'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n            )\n            .optional(),\n          fulfillerId: z\n            .string()\n            .describe('Fulfiller ID.')\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          shippingWeightRange: z\n            .object({\n              minValue: z\n                .number()\n                .describe(\n                  'Minimum weight across all variants associated with this product.'\n                )\n                .min(0)\n                .max(999999999.99)\n                .optional(),\n              maxValue: z\n                .number()\n                .describe(\n                  'Maximum weight across all variants associated with this product.'\n                )\n                .min(0)\n                .max(999999999.99)\n                .optional(),\n            })\n            .describe(\n              'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n            )\n            .optional(),\n          pricePerUnitRange: z\n            .object({\n              minValue: z\n                .object({\n                  value: z\n                    .string()\n                    .describe(\n                      \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                    )\n                    .optional(),\n                  description: z\n                    .string()\n                    .describe(\n                      'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                    )\n                    .max(100)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Minimum price per unit across all variants.')\n                .optional(),\n              maxValue: z\n                .object({\n                  value: z\n                    .string()\n                    .describe(\n                      \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                    )\n                    .optional(),\n                  description: z\n                    .string()\n                    .describe(\n                      'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                    )\n                    .max(100)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Maximum price per unit across all variants.')\n                .optional(),\n            })\n            .describe(\n              'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n            )\n            .optional(),\n          weightMeasurementUnitInfo: z\n            .object({\n              weightMeasurementUnit: z\n                .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                .describe('Weight measurement unit.')\n                .optional(),\n            })\n            .describe(\n              'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n            )\n            .optional(),\n          deliveryProfileId: z\n            .string()\n            .describe('Delivery profile ID.')\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n        })\n        .describe(\n          'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n        ),\n    }),\n  ])\n);\nexport const GetProductBySlugRequest = z.object({\n  slug: z.string().describe('Product slug.').min(1).max(100),\n  options: z\n    .object({\n      fields: z\n        .array(\n          z.enum([\n            'URL',\n            'CURRENCY',\n            'INFO_SECTION',\n            'MERCHANT_DATA',\n            'PLAIN_DESCRIPTION',\n            'INFO_SECTION_PLAIN_DESCRIPTION',\n            'SUBSCRIPTION_PRICES_INFO',\n            'BREADCRUMBS_INFO',\n            'WEIGHT_MEASUREMENT_UNIT_INFO',\n            'VARIANT_OPTION_CHOICE_NAMES',\n            'MEDIA_ITEMS_INFO',\n            'DESCRIPTION',\n            'DIRECT_CATEGORIES_INFO',\n            'ALL_CATEGORIES_INFO',\n            'INFO_SECTION_DESCRIPTION',\n            'THUMBNAIL',\n            'PRODUCT_CHOICES_MEDIA_REFERENCES',\n            'PRODUCT_CHOICES_DISPLAY_IMAGE',\n            'DISCOUNT_INFO',\n          ])\n        )\n        .max(100)\n        .optional(),\n    })\n    .optional(),\n});\nexport const GetProductBySlugResponse = z.object({\n  product: z\n    .intersection(\n      z.object({\n        _id: z\n          .string()\n          .describe('Product ID.')\n          .min(1)\n          .max(36)\n          .optional()\n          .nullable(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product.'\n          )\n          .optional()\n          .nullable(),\n        _createdDate: z\n          .date()\n          .describe('Date and time the product was created.')\n          .optional()\n          .nullable(),\n        _updatedDate: z\n          .date()\n          .describe('Date and time the product was updated.')\n          .optional()\n          .nullable(),\n        name: z\n          .string()\n          .describe('Product name. Translatable.')\n          .min(1)\n          .max(80)\n          .optional()\n          .nullable(),\n        slug: z\n          .string()\n          .describe(\n            'Product slug. A URL-friendly identifier used in the product page address.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n          )\n          .min(1)\n          .max(300)\n          .optional()\n          .nullable(),\n        url: z\n          .string()\n          .describe(\n            'URL to the site\\'s product page.\\n\\n> **Note:** Returned only when you pass `\"URL\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n        description: z\n          .any()\n          .describe(\n            'Product description using rich content.\\n> **Note:** Returned only when you pass `\"DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n          )\n          .optional(),\n        plainDescription: z\n          .string()\n          .describe(\n            'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n          )\n          .max(16000)\n          .optional()\n          .nullable(),\n        visible: z\n          .boolean()\n          .describe(\n            \"Whether the product is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the default variant's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n          )\n          .optional()\n          .nullable(),\n        visibleInPos: z\n          .boolean()\n          .describe(\n            'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n          )\n          .optional()\n          .nullable(),\n        media: z\n          .object({\n            main: z\n              .intersection(\n                z.object({\n                  altText: z\n                    .string()\n                    .describe('Image alt text.')\n                    .min(1)\n                    .max(1000)\n                    .optional()\n                    .nullable(),\n                  displayName: z\n                    .string()\n                    .describe(\n                      \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                    )\n                    .max(80)\n                    .optional()\n                    .nullable(),\n                  mediaType: z\n                    .enum(['IMAGE', 'VIDEO'])\n                    .describe('Media type.')\n                    .optional(),\n                  thumbnail: z\n                    .object({\n                      url: z\n                        .string()\n                        .describe('Thumbnail url.')\n                        .url()\n                        .optional(),\n                      height: z\n                        .number()\n                        .int()\n                        .describe('Thumbnail height.')\n                        .optional(),\n                      width: z\n                        .number()\n                        .int()\n                        .describe('Thumbnail width.')\n                        .optional(),\n                      altText: z\n                        .string()\n                        .describe('Thumbnail alt text.')\n                        .min(1)\n                        .max(1000)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                  uploadId: z\n                    .string()\n                    .describe('ID used to upload media to Wix Media Manager.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                }),\n                z.intersection(\n                  z.xor([\n                    z.object({\n                      _id: z.never().optional(),\n                      url: z.never().optional(),\n                    }),\n                    z.object({\n                      url: z.never().optional(),\n                      _id: z\n                        .string()\n                        .describe(\n                          'Set media by ID of an existing file in Wix Media Manager.'\n                        )\n                        .min(1)\n                        .max(200),\n                    }),\n                    z.object({\n                      _id: z.never().optional(),\n                      url: z\n                        .string()\n                        .describe('Set media using an external media URL.')\n                        .url(),\n                    }),\n                  ]),\n                  z.xor([\n                    z.object({\n                      image: z.never().optional(),\n                      video: z.never().optional(),\n                    }),\n                    z.object({\n                      video: z.never().optional(),\n                      image: z\n                        .string()\n                        .describe(\n                          \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                        ),\n                    }),\n                    z.object({\n                      image: z.never().optional(),\n                      video: z\n                        .string()\n                        .describe(\n                          \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                        ),\n                    }),\n                  ])\n                )\n              )\n              .describe(\n                'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n              )\n              .optional(),\n            itemsInfo: z\n              .object({\n                items: z\n                  .array(\n                    z.intersection(\n                      z.object({\n                        altText: z\n                          .string()\n                          .describe('Image alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        displayName: z\n                          .string()\n                          .describe(\n                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                          )\n                          .max(80)\n                          .optional()\n                          .nullable(),\n                        mediaType: z\n                          .enum(['IMAGE', 'VIDEO'])\n                          .describe('Media type.')\n                          .optional(),\n                        thumbnail: z\n                          .object({\n                            url: z\n                              .string()\n                              .describe('Thumbnail url.')\n                              .url()\n                              .optional(),\n                            height: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail height.')\n                              .optional(),\n                            width: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail width.')\n                              .optional(),\n                            altText: z\n                              .string()\n                              .describe('Thumbnail alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        uploadId: z\n                          .string()\n                          .describe(\n                            'ID used to upload media to Wix Media Manager.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                      }),\n                      z.intersection(\n                        z.xor([\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z.never().optional(),\n                          }),\n                          z.object({\n                            url: z.never().optional(),\n                            _id: z\n                              .string()\n                              .describe(\n                                'Set media by ID of an existing file in Wix Media Manager.'\n                              )\n                              .min(1)\n                              .max(200),\n                          }),\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z\n                              .string()\n                              .describe(\n                                'Set media using an external media URL.'\n                              )\n                              .url(),\n                          }),\n                        ]),\n                        z.xor([\n                          z.object({\n                            image: z.never().optional(),\n                            video: z.never().optional(),\n                          }),\n                          z.object({\n                            video: z.never().optional(),\n                            image: z\n                              .string()\n                              .describe(\n                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                              ),\n                          }),\n                          z.object({\n                            image: z.never().optional(),\n                            video: z\n                              .string()\n                              .describe(\n                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                  )\n                  .max(50)\n                  .optional(),\n              })\n              .describe(\n                'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n              )\n              .optional(),\n          })\n          .describe(\n            'Product media items. For a detailed explanation of product media, see [About Product Media](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/about-product-media).'\n          )\n          .optional(),\n        seoData: z\n          .object({\n            tags: z\n              .array(\n                z.object({\n                  type: z\n                    .string()\n                    .describe(\n                      'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                    )\n                    .optional(),\n                  props: z\n                    .record(z.string(), z.any())\n                    .describe(\n                      'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  meta: z\n                    .record(z.string(), z.any())\n                    .describe(\n                      'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  children: z\n                    .string()\n                    .describe(\n                      'SEO tag inner content. For example, `<title> inner content </title>`.'\n                    )\n                    .optional(),\n                  custom: z\n                    .boolean()\n                    .describe(\n                      'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                    )\n                    .optional(),\n                  disabled: z\n                    .boolean()\n                    .describe(\n                      \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                    )\n                    .optional(),\n                })\n              )\n              .optional(),\n            settings: z\n              .object({\n                preventAutoRedirect: z\n                  .boolean()\n                  .describe(\n                    'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n                  )\n                  .optional(),\n                keywords: z\n                  .array(\n                    z.object({\n                      term: z.string().describe('Keyword value.').optional(),\n                      isMain: z\n                        .boolean()\n                        .describe(\n                          'Whether the keyword is the main focus keyword.'\n                        )\n                        .optional(),\n                      origin: z\n                        .string()\n                        .describe(\n                          'The source that added the keyword terms to the SEO settings.'\n                        )\n                        .max(1000)\n                        .optional()\n                        .nullable(),\n                    })\n                  )\n                  .max(5)\n                  .optional(),\n              })\n              .describe('SEO general settings.')\n              .optional(),\n          })\n          .describe('Product SEO data.')\n          .optional(),\n        taxGroupId: z\n          .string()\n          .describe(\n            '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        options: z\n          .array(\n            z.intersection(\n              z.object({\n                _id: z\n                  .string()\n                  .describe(\n                    'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n                  )\n                  .min(1)\n                  .max(36)\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Option name.')\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                optionRenderType: z\n                  .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                  .describe('Option render type.')\n                  .optional(),\n                key: z\n                  .string()\n                  .describe(\n                    'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional(),\n              }),\n              z.xor([\n                z.object({ choicesSettings: z.never().optional() }),\n                z.object({\n                  choicesSettings: z\n                    .object({\n                      choices: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              linkedMedia: z\n                                .array(\n                                  z.intersection(\n                                    z.object({\n                                      altText: z\n                                        .string()\n                                        .describe('Image alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                      displayName: z\n                                        .string()\n                                        .describe(\n                                          \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                        )\n                                        .max(80)\n                                        .optional()\n                                        .nullable(),\n                                      mediaType: z\n                                        .enum(['IMAGE', 'VIDEO'])\n                                        .describe('Media type.')\n                                        .optional(),\n                                      thumbnail: z\n                                        .object({\n                                          url: z\n                                            .string()\n                                            .describe('Thumbnail url.')\n                                            .url()\n                                            .optional(),\n                                          height: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail height.')\n                                            .optional(),\n                                          width: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail width.')\n                                            .optional(),\n                                          altText: z\n                                            .string()\n                                            .describe('Thumbnail alt text.')\n                                            .min(1)\n                                            .max(1000)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .optional(),\n                                      uploadId: z\n                                        .string()\n                                        .describe(\n                                          'ID used to upload media to Wix Media Manager.'\n                                        )\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    }),\n                                    z.intersection(\n                                      z.xor([\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          url: z.never().optional(),\n                                          _id: z\n                                            .string()\n                                            .describe(\n                                              'Set media by ID of an existing file in Wix Media Manager.'\n                                            )\n                                            .min(1)\n                                            .max(200),\n                                        }),\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z\n                                            .string()\n                                            .describe(\n                                              'Set media using an external media URL.'\n                                            )\n                                            .url(),\n                                        }),\n                                      ]),\n                                      z.xor([\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          video: z.never().optional(),\n                                          image: z\n                                            .string()\n                                            .describe(\n                                              \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                            ),\n                                        }),\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z\n                                            .string()\n                                            .describe(\n                                              \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                            ),\n                                        }),\n                                      ])\n                                    )\n                                  )\n                                )\n                                .max(15)\n                                .optional(),\n                              choiceType: z\n                                .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                .describe('Choice type.')\n                                .optional(),\n                              key: z\n                                .string()\n                                .describe(\n                                  'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe(\n                                  'Choice name. For text choices, this field also contains the choice value.'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional()\n                                .nullable(),\n                              inStock: z\n                                .boolean()\n                                .describe(\n                                  'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                                )\n                                .optional(),\n                              visible: z\n                                .boolean()\n                                .describe(\n                                  'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                                )\n                                .optional(),\n                              displayImage: z\n                                .string()\n                                .describe(\n                                  'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                )\n                                .optional(),\n                              media: z\n                                .object({\n                                  items: z\n                                    .array(\n                                      z.intersection(\n                                        z.object({}),\n                                        z.xor([\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            mediaId: z\n                                              .string()\n                                              .describe(\n                                                'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'External media URL. Can be used only on write.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                    .max(15)\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                )\n                                .optional(),\n                            }),\n                            z.xor([\n                              z.object({ colorCode: z.never().optional() }),\n                              z.object({\n                                colorCode: z\n                                  .string()\n                                  .describe(\n                                    'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                                  )\n                                  .min(3)\n                                  .max(20),\n                              }),\n                            ])\n                          )\n                        )\n                        .min(1)\n                        .max(100)\n                        .optional(),\n                    })\n                    .describe('Choices settings.'),\n                }),\n              ])\n            )\n          )\n          .max(6)\n          .optional(),\n        modifiers: z\n          .array(\n            z.intersection(\n              z.object({\n                _id: z\n                  .string()\n                  .describe(\n                    'ID of a customization with `customizationType: MODIFIER`.'\n                  )\n                  .min(1)\n                  .max(36)\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Modifier title.')\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                modifierRenderType: z\n                  .enum(['FREE_TEXT', 'TEXT_CHOICES', 'SWATCH_CHOICES'])\n                  .describe('Modifier render type.')\n                  .optional(),\n                mandatory: z\n                  .boolean()\n                  .describe(\n                    'Whether customer input is required for this modifier.'\n                  )\n                  .optional(),\n                key: z\n                  .string()\n                  .describe(\n                    'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional(),\n              }),\n              z.xor([\n                z.object({\n                  freeTextSettings: z.never().optional(),\n                  choicesSettings: z.never().optional(),\n                }),\n                z.object({\n                  choicesSettings: z.never().optional(),\n                  freeTextSettings: z\n                    .object({\n                      minCharCount: z\n                        .number()\n                        .int()\n                        .describe('Minimum number of characters.')\n                        .optional(),\n                      maxCharCount: z\n                        .number()\n                        .int()\n                        .describe('Maximum number of characters.')\n                        .max(500)\n                        .optional(),\n                      defaultAddedPrice: z\n                        .string()\n                        .describe(\n                          \"Default amount to be added to the product's price.\"\n                        )\n                        .optional()\n                        .nullable(),\n                      title: z\n                        .string()\n                        .describe(\n                          'Title of the text to be input by the customer.'\n                        )\n                        .min(1)\n                        .max(150)\n                        .optional(),\n                      key: z\n                        .string()\n                        .describe(\n                          'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                        )\n                        .min(1)\n                        .max(150)\n                        .optional(),\n                    })\n                    .describe('Free text modifier settings.'),\n                }),\n                z.object({\n                  freeTextSettings: z.never().optional(),\n                  choicesSettings: z\n                    .object({\n                      choices: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              linkedMedia: z\n                                .array(\n                                  z.intersection(\n                                    z.object({\n                                      altText: z\n                                        .string()\n                                        .describe('Image alt text.')\n                                        .min(1)\n                                        .max(1000)\n                                        .optional()\n                                        .nullable(),\n                                      displayName: z\n                                        .string()\n                                        .describe(\n                                          \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                        )\n                                        .max(80)\n                                        .optional()\n                                        .nullable(),\n                                      mediaType: z\n                                        .enum(['IMAGE', 'VIDEO'])\n                                        .describe('Media type.')\n                                        .optional(),\n                                      thumbnail: z\n                                        .object({\n                                          url: z\n                                            .string()\n                                            .describe('Thumbnail url.')\n                                            .url()\n                                            .optional(),\n                                          height: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail height.')\n                                            .optional(),\n                                          width: z\n                                            .number()\n                                            .int()\n                                            .describe('Thumbnail width.')\n                                            .optional(),\n                                          altText: z\n                                            .string()\n                                            .describe('Thumbnail alt text.')\n                                            .min(1)\n                                            .max(1000)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .optional(),\n                                      uploadId: z\n                                        .string()\n                                        .describe(\n                                          'ID used to upload media to Wix Media Manager.'\n                                        )\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    }),\n                                    z.intersection(\n                                      z.xor([\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          url: z.never().optional(),\n                                          _id: z\n                                            .string()\n                                            .describe(\n                                              'Set media by ID of an existing file in Wix Media Manager.'\n                                            )\n                                            .min(1)\n                                            .max(200),\n                                        }),\n                                        z.object({\n                                          _id: z.never().optional(),\n                                          url: z\n                                            .string()\n                                            .describe(\n                                              'Set media using an external media URL.'\n                                            )\n                                            .url(),\n                                        }),\n                                      ]),\n                                      z.xor([\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z.never().optional(),\n                                        }),\n                                        z.object({\n                                          video: z.never().optional(),\n                                          image: z\n                                            .string()\n                                            .describe(\n                                              \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                            ),\n                                        }),\n                                        z.object({\n                                          image: z.never().optional(),\n                                          video: z\n                                            .string()\n                                            .describe(\n                                              \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                            ),\n                                        }),\n                                      ])\n                                    )\n                                  )\n                                )\n                                .max(15)\n                                .optional(),\n                              choiceType: z\n                                .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                .describe('Choice type.')\n                                .optional(),\n                              key: z\n                                .string()\n                                .describe(\n                                  'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                )\n                                .min(1)\n                                .max(50)\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe('Choice name.')\n                                .min(1)\n                                .max(50)\n                                .optional()\n                                .nullable(),\n                              addedPrice: z\n                                .string()\n                                .describe('Added price.')\n                                .optional()\n                                .nullable(),\n                              displayImage: z\n                                .string()\n                                .describe(\n                                  'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                )\n                                .optional(),\n                              media: z\n                                .object({\n                                  items: z\n                                    .array(\n                                      z.intersection(\n                                        z.object({}),\n                                        z.xor([\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            mediaId: z\n                                              .string()\n                                              .describe(\n                                                'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            mediaId: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'External media URL. Can be used only on write.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                    .max(15)\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                )\n                                .optional(),\n                            }),\n                            z.xor([\n                              z.object({ colorCode: z.never().optional() }),\n                              z.object({\n                                colorCode: z\n                                  .string()\n                                  .describe(\n                                    'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                                  )\n                                  .min(3)\n                                  .max(20),\n                              }),\n                            ])\n                          )\n                        )\n                        .min(1)\n                        .max(100)\n                        .optional(),\n                    })\n                    .describe('Choice settings.'),\n                }),\n              ])\n            )\n          )\n          .max(10)\n          .optional(),\n        brand: z\n          .object({\n            _id: z\n              .string()\n              .describe('Brand ID.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            name: z\n              .string()\n              .describe('Brand name.')\n              .max(50)\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            \"Product [brand](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/brands-v3/introduction).\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n          )\n          .optional(),\n        infoSections: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('Info section ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              uniqueName: z\n                .string()\n                .describe(\n                  'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n              title: z\n                .string()\n                .describe(\n                  'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                )\n                .min(1)\n                .max(50)\n                .optional()\n                .nullable(),\n              description: z\n                .any()\n                .describe(\n                  'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                )\n                .optional(),\n              plainDescription: z\n                .string()\n                .describe(\n                  'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                )\n                .max(16000)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(10)\n          .optional(),\n        ribbon: z\n          .object({\n            _id: z\n              .string()\n              .describe('Ribbon ID.')\n              .min(1)\n              .max(36)\n              .optional()\n              .nullable(),\n            name: z\n              .string()\n              .describe('Ribbon name.')\n              .max(30)\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            \"Primary [ribbon](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/ribbons-v3/introduction) displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n          )\n          .optional(),\n        directCategoriesInfo: z\n          .object({\n            categories: z\n              .array(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Category ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                  index: z\n                    .number()\n                    .int()\n                    .describe(\n                      'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                    )\n                    .min(0)\n                    .max(200)\n                    .optional()\n                    .nullable(),\n                })\n              )\n              .max(2000)\n              .optional(),\n          })\n          .describe(\n            'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product.\\n\\nUpdated automatically when a product is added/removed from a category, when an item is moved within a category, or when a category is deleted.\\n> **Note:** Returned only when you pass `\"DIRECT_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n        allCategoriesInfo: z\n          .object({\n            categories: z\n              .array(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Category ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                  index: z\n                    .number()\n                    .int()\n                    .describe(\n                      'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                    )\n                    .min(0)\n                    .max(200)\n                    .optional()\n                    .nullable(),\n                })\n              )\n              .max(2000)\n              .optional(),\n          })\n          .describe(\n            'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product, as well as their parent categories.\\n> **Note:** Returned only when you pass `\"ALL_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n        mainCategoryId: z\n          .string()\n          .describe(\n            'The ID of the product\\'s primary direct [category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction), which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        costRange: z\n          .object({\n            minValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Minimum value.')\n              .optional(),\n            maxValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Maximum value.')\n              .optional(),\n          })\n          .describe(\n            'Product cost range - minimum and maximum costs of all product variants.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n          )\n          .optional(),\n        inventory: z\n          .object({\n            availabilityStatus: z\n              .enum(['IN_STOCK', 'OUT_OF_STOCK', 'PARTIALLY_OUT_OF_STOCK'])\n              .describe('Current availability status.')\n              .optional(),\n            preorderStatus: z\n              .enum(['ENABLED', 'DISABLED', 'PARTIALLY_ENABLED'])\n              .describe('Current preorder status.')\n              .optional(),\n            preorderAvailability: z\n              .enum(['ALL_VARIANTS', 'NO_VARIANTS', 'SOME_VARIANTS'])\n              .describe('Preorder availability status.')\n              .optional(),\n          })\n          .describe(\n            'Product inventory info.\\n\\n> **Note:** This field reflects the aggregated inventory status from the default location only. Use the [Inventory Items API](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/inventory-items-v3/introduction) to manage inventory for specific locations. Learn more about [inventory management](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-inventory-management).'\n          )\n          .optional(),\n        productType: z\n          .enum(['PHYSICAL', 'DIGITAL'])\n          .describe(\n            'Product type: `PHYSICAL` for tangible goods that require shipping, or `DIGITAL` for downloadable content.\\n\\nWhen passing `productType: PHYSICAL`, you must also pass `physicalProperties`. When passing `productType: DIGITAL`, you can optionally pass `digitalProperties` in each variant.'\n          )\n          .optional(),\n        handle: z\n          .string()\n          .describe(\n            \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n          )\n          .min(1)\n          .max(100)\n          .optional()\n          .nullable(),\n        currency: z\n          .string()\n          .describe(\n            'Currency used for the pricing of this product, in [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes) format.\\n\\nDefaults to the currency defined in the site settings, unless specified in the request\\'s `x-wix-currency` header.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n          )\n          .optional()\n          .nullable(),\n        breadcrumbsInfo: z\n          .object({\n            breadcrumbs: z\n              .array(\n                z.object({\n                  categoryId: z\n                    .string()\n                    .describe('Category ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional(),\n                  categoryName: z\n                    .string()\n                    .describe('Category name.')\n                    .min(1)\n                    .max(80)\n                    .optional(),\n                  categorySlug: z\n                    .string()\n                    .describe('Category slug.')\n                    .min(1)\n                    .max(100)\n                    .optional(),\n                })\n              )\n              .max(5)\n              .optional(),\n          })\n          .describe(\n            'Breadcrumbs of the `mainCategoryId`. Used to navigate to parent [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction). Useful for building navigation UI and for SEO purposes.\\n> **Note:** Returned only when you pass `\"BREADCRUMBS_INFO\"` to the `fields` array in Products API requests.'\n          )\n          .optional(),\n        actualPriceRange: z\n          .object({\n            minValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Minimum value.')\n              .optional(),\n            maxValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Maximum value.')\n              .optional(),\n          })\n          .describe(\n            'Minimum and maximum current selling prices across all product variants.'\n          )\n          .optional(),\n        compareAtPriceRange: z\n          .object({\n            minValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Minimum value.')\n              .optional(),\n            maxValue: z\n              .object({\n                amount: z\n                  .string()\n                  .describe(\n                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                  )\n                  .optional(),\n                formattedAmount: z\n                  .string()\n                  .describe(\n                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(20)\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Maximum value.')\n              .optional(),\n          })\n          .describe(\n            'Minimum and maximum compare-at prices (original prices before discounts) across all product variants. Used to show savings to customers.'\n          )\n          .optional(),\n        variantsInfo: z\n          .object({\n            variants: z\n              .array(\n                z.intersection(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Variant ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    visible: z\n                      .boolean()\n                      .describe(\n                        \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                      )\n                      .optional()\n                      .nullable(),\n                    sku: z\n                      .string()\n                      .describe('Variant SKU (stock keeping unit).')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    barcode: z\n                      .string()\n                      .describe('Variant barcode.')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.object({\n                          optionChoiceIds: z\n                            .object({\n                              optionId: z\n                                .string()\n                                .describe('Option ID.')\n                                .min(1)\n                                .max(36)\n                                .optional(),\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                            )\n                            .optional(),\n                          optionChoiceNames: z\n                            .object({\n                              optionName: z\n                                .string()\n                                .describe('Option name.')\n                                .min(1)\n                                .optional(),\n                              choiceName: z\n                                .string()\n                                .describe('Choice name.')\n                                .min(1)\n                                .optional(),\n                              renderType: z\n                                .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                .describe(\n                                  'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .min(0)\n                      .max(6)\n                      .optional(),\n                    price: z\n                      .object({\n                        actualPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            \"Variant's current selling price. Must be greater than or equal to 0.\"\n                          )\n                          .optional(),\n                        compareAtPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                          )\n                          .optional(),\n                        priceAfterDiscount: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                          )\n                          .optional(),\n                      })\n                      .describe('Variant price.')\n                      .optional(),\n                    revenueDetails: z\n                      .object({\n                        cost: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe('Item cost.')\n                          .optional(),\n                        profit: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                          )\n                          .optional(),\n                        profitMargin: z\n                          .number()\n                          .describe(\n                            'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                          )\n                          .min(0)\n                          .max(1)\n                          .optional(),\n                      })\n                      .describe(\n                        'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                      )\n                      .optional(),\n                    media: z\n                      .intersection(\n                        z.object({\n                          altText: z\n                            .string()\n                            .describe('Image alt text.')\n                            .min(1)\n                            .max(1000)\n                            .optional()\n                            .nullable(),\n                          displayName: z\n                            .string()\n                            .describe(\n                              \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                            )\n                            .max(80)\n                            .optional()\n                            .nullable(),\n                          mediaType: z\n                            .enum(['IMAGE', 'VIDEO'])\n                            .describe('Media type.')\n                            .optional(),\n                          thumbnail: z\n                            .object({\n                              url: z\n                                .string()\n                                .describe('Thumbnail url.')\n                                .url()\n                                .optional(),\n                              height: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail height.')\n                                .optional(),\n                              width: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail width.')\n                                .optional(),\n                              altText: z\n                                .string()\n                                .describe('Thumbnail alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                          uploadId: z\n                            .string()\n                            .describe(\n                              'ID used to upload media to Wix Media Manager.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                        }),\n                        z.intersection(\n                          z.xor([\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z.never().optional(),\n                            }),\n                            z.object({\n                              url: z.never().optional(),\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Set media by ID of an existing file in Wix Media Manager.'\n                                )\n                                .min(1)\n                                .max(200),\n                            }),\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z\n                                .string()\n                                .describe(\n                                  'Set media using an external media URL.'\n                                )\n                                .url(),\n                            }),\n                          ]),\n                          z.xor([\n                            z.object({\n                              image: z.never().optional(),\n                              video: z.never().optional(),\n                            }),\n                            z.object({\n                              video: z.never().optional(),\n                              image: z\n                                .string()\n                                .describe(\n                                  \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                ),\n                            }),\n                            z.object({\n                              image: z.never().optional(),\n                              video: z\n                                .string()\n                                .describe(\n                                  \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                ),\n                            }),\n                          ])\n                        )\n                      )\n                      .describe('Variant media.')\n                      .optional(),\n                    subscriptionPricesInfo: z\n                      .object({\n                        subscriptionPrices: z\n                          .array(\n                            z.object({\n                              subscriptionId: z\n                                .string()\n                                .describe('Subscription ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                              price: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                )\n                                .optional(),\n                              pricePerUnit: z\n                                .object({\n                                  value: z\n                                    .string()\n                                    .describe(\n                                      'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                    )\n                                    .optional(),\n                                  description: z\n                                    .string()\n                                    .describe(\n                                      'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                  priceAfterDiscount: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe('Price per unit info.')\n                                .optional(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                          )\n                          .max(6)\n                          .optional(),\n                      })\n                      .describe(\n                        'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    inventoryStatus: z\n                      .object({\n                        inStock: z\n                          .boolean()\n                          .describe('Whether the variant is in stock.')\n                          .optional(),\n                        preorderEnabled: z\n                          .boolean()\n                          .describe(\n                            'Whether preorder is enabled for this variant.'\n                          )\n                          .optional(),\n                      })\n                      .describe('Variant inventory status.')\n                      .optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z.never().optional(),\n                    }),\n                    z.object({\n                      digitalProperties: z.never().optional(),\n                      physicalProperties: z\n                        .object({\n                          weight: z\n                            .number()\n                            .describe(\n                              'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                            )\n                            .min(0)\n                            .max(999999999.99)\n                            .optional()\n                            .nullable(),\n                          pricePerUnit: z\n                            .object({\n                              settings: z\n                                .object({\n                                  quantity: z\n                                    .number()\n                                    .describe(\n                                      'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                    )\n                                    .min(0.01)\n                                    .max(999999999.99)\n                                    .optional(),\n                                  measurementUnit: z\n                                    .enum([\n                                      'UNSPECIFIED',\n                                      'ML',\n                                      'CL',\n                                      'L',\n                                      'CBM',\n                                      'MG',\n                                      'G',\n                                      'KG',\n                                      'MM',\n                                      'CM',\n                                      'M',\n                                      'SQM',\n                                      'OZ',\n                                      'LB',\n                                      'FLOZ',\n                                      'PT',\n                                      'QT',\n                                      'GAL',\n                                      'IN',\n                                      'FT',\n                                      'YD',\n                                      'SQFT',\n                                    ])\n                                    .describe(\n                                      'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                )\n                                .optional(),\n                              value: z\n                                .string()\n                                .describe(\n                                  \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                )\n                                .optional(),\n                              description: z\n                                .string()\n                                .describe(\n                                  'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(100)\n                                .optional()\n                                .nullable(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                            )\n                            .optional(),\n                          productDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Product dimensions (length, width, height of the physical product).'\n                            )\n                            .optional(),\n                          packageDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Package dimensions (length, width, height of the shipping package).'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Physical properties. Must be passed when `productType: PHYSICAL`'\n                        ),\n                    }),\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z\n                        .object({\n                          digitalFile: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe('Media ID in media manager.')\n                                .min(1)\n                                .max(100)\n                                .optional(),\n                              fileName: z\n                                .string()\n                                .describe('Original file name.')\n                                .min(1)\n                                .max(1000)\n                                .optional(),\n                              fileSize: z\n                                .string()\n                                .describe('Original file size.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              fileType: z\n                                .enum([\n                                  'UNSPECIFIED',\n                                  'SECURE_PICTURE',\n                                  'SECURE_VIDEO',\n                                  'SECURE_DOCUMENT',\n                                  'SECURE_MUSIC',\n                                  'SECURE_ARCHIVE',\n                                  'SECURE_RAW',\n                                ])\n                                .describe('File type.')\n                                .optional(),\n                            })\n                            .describe(\n                              'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Digital properties. Must be passed when `productType: DIGITAL`'\n                        ),\n                    }),\n                  ])\n                )\n              )\n              .min(1)\n              .max(1000)\n              .optional(),\n          })\n          .describe(\n            'Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nYou must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).'\n          )\n          .optional(),\n        purchaseEligibility: z\n          .object({ userCriteria: z.enum(['MEMBERS_ONLY']).optional() })\n          .describe('Purchase eligibility settings for the product.')\n          .optional(),\n        additionalRibbons: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('Ribbon ID.')\n                .min(1)\n                .max(36)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Ribbon name.')\n                .max(30)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(4)\n          .optional(),\n        extendedFields: z\n          .object({\n            namespaces: z\n              .record(z.string(), z.record(z.string(), z.any()))\n              .describe(\n                'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n              )\n              .optional(),\n          })\n          .describe(\n            'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n          )\n          .optional(),\n        tags: z\n          .object({\n            privateTags: z\n              .object({ tagIds: z.array(z.string()).max(100).optional() })\n              .describe(\n                'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n              )\n              .optional(),\n            publicTags: z\n              .object({ tagIds: z.array(z.string()).max(100).optional() })\n              .describe(\n                'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n              )\n              .optional(),\n          })\n          .describe('Tags')\n          .optional(),\n        subscriptionDetails: z\n          .object({\n            subscriptions: z\n              .array(\n                z.intersection(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Subscription ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    title: z\n                      .string()\n                      .describe('Subscription title.')\n                      .min(1)\n                      .max(20)\n                      .optional(),\n                    description: z\n                      .string()\n                      .describe('Subscription description.')\n                      .max(60)\n                      .optional()\n                      .nullable(),\n                    visible: z\n                      .boolean()\n                      .describe(\n                        'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                      )\n                      .optional()\n                      .nullable(),\n                    frequency: z\n                      .enum(['UNDEFINED', 'DAY', 'WEEK', 'MONTH', 'YEAR'])\n                      .describe(\n                        'Frequency of recurring payment.\\nFor example, if `frequency: MONTH` and `billingCycles: 6`; payment will be made monthly for 6 months.'\n                      )\n                      .optional(),\n                    interval: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                      )\n                      .min(1)\n                      .max(50)\n                      .optional()\n                      .nullable(),\n                    discount: z\n                      .intersection(\n                        z.object({\n                          type: z\n                            .enum(['AMOUNT', 'PERCENT'])\n                            .describe('Discount type.')\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({\n                            amountOff: z.never().optional(),\n                            percentOff: z.never().optional(),\n                          }),\n                          z.object({\n                            percentOff: z.never().optional(),\n                            amountOff: z\n                              .string()\n                              .describe(\n                                'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                              ),\n                          }),\n                          z.object({\n                            amountOff: z.never().optional(),\n                            percentOff: z\n                              .number()\n                              .describe(\n                                'Percentage subtracted from the variant price when calculating subscription prices.'\n                              )\n                              .min(0.1)\n                              .max(99.9),\n                          }),\n                        ])\n                      )\n                      .describe(\n                        'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                      )\n                      .optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      autoRenewal: z.never().optional(),\n                      billingCycles: z.never().optional(),\n                    }),\n                    z.object({\n                      billingCycles: z.never().optional(),\n                      autoRenewal: z\n                        .boolean()\n                        .describe(\n                          'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                        ),\n                    }),\n                    z.object({\n                      autoRenewal: z.never().optional(),\n                      billingCycles: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Number of billing cycles before subscription ends.'\n                        )\n                        .min(2)\n                        .max(999),\n                    }),\n                  ])\n                )\n              )\n              .min(1)\n              .max(6)\n              .optional(),\n            allowOneTimePurchases: z\n              .boolean()\n              .describe(\n                'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n              )\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n          )\n          .optional(),\n        variantSummary: z\n          .object({\n            variantCount: z\n              .number()\n              .int()\n              .describe('The total number of variants for the product.')\n              .optional(),\n            minPriceVariant: z\n              .intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Variant ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  visible: z\n                    .boolean()\n                    .describe(\n                      \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                    )\n                    .optional()\n                    .nullable(),\n                  sku: z\n                    .string()\n                    .describe('Variant SKU (stock keeping unit).')\n                    .min(1)\n                    .max(40)\n                    .optional()\n                    .nullable(),\n                  barcode: z\n                    .string()\n                    .describe('Variant barcode.')\n                    .min(1)\n                    .max(40)\n                    .optional()\n                    .nullable(),\n                  choices: z\n                    .array(\n                      z.object({\n                        optionChoiceIds: z\n                          .object({\n                            optionId: z\n                              .string()\n                              .describe('Option ID.')\n                              .min(1)\n                              .max(36)\n                              .optional(),\n                            choiceId: z\n                              .string()\n                              .describe('Choice ID.')\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                          )\n                          .optional(),\n                        optionChoiceNames: z\n                          .object({\n                            optionName: z\n                              .string()\n                              .describe('Option name.')\n                              .min(1)\n                              .optional(),\n                            choiceName: z\n                              .string()\n                              .describe('Choice name.')\n                              .min(1)\n                              .optional(),\n                            renderType: z\n                              .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                              .describe(\n                                'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                      })\n                    )\n                    .min(0)\n                    .max(6)\n                    .optional(),\n                  price: z\n                    .object({\n                      actualPrice: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          \"Variant's current selling price. Must be greater than or equal to 0.\"\n                        )\n                        .optional(),\n                      compareAtPrice: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                        )\n                        .optional(),\n                      priceAfterDiscount: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                        )\n                        .optional(),\n                    })\n                    .describe('Variant price.')\n                    .optional(),\n                  revenueDetails: z\n                    .object({\n                      cost: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe('Item cost.')\n                        .optional(),\n                      profit: z\n                        .object({\n                          amount: z\n                            .string()\n                            .describe(\n                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                            )\n                            .optional(),\n                          formattedAmount: z\n                            .string()\n                            .describe(\n                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                            )\n                            .max(20)\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                        )\n                        .optional(),\n                      profitMargin: z\n                        .number()\n                        .describe(\n                          'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                        )\n                        .min(0)\n                        .max(1)\n                        .optional(),\n                    })\n                    .describe(\n                      'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                    )\n                    .optional(),\n                  media: z\n                    .intersection(\n                      z.object({\n                        altText: z\n                          .string()\n                          .describe('Image alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        displayName: z\n                          .string()\n                          .describe(\n                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                          )\n                          .max(80)\n                          .optional()\n                          .nullable(),\n                        mediaType: z\n                          .enum(['IMAGE', 'VIDEO'])\n                          .describe('Media type.')\n                          .optional(),\n                        thumbnail: z\n                          .object({\n                            url: z\n                              .string()\n                              .describe('Thumbnail url.')\n                              .url()\n                              .optional(),\n                            height: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail height.')\n                              .optional(),\n                            width: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail width.')\n                              .optional(),\n                            altText: z\n                              .string()\n                              .describe('Thumbnail alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        uploadId: z\n                          .string()\n                          .describe(\n                            'ID used to upload media to Wix Media Manager.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                      }),\n                      z.intersection(\n                        z.xor([\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z.never().optional(),\n                          }),\n                          z.object({\n                            url: z.never().optional(),\n                            _id: z\n                              .string()\n                              .describe(\n                                'Set media by ID of an existing file in Wix Media Manager.'\n                              )\n                              .min(1)\n                              .max(200),\n                          }),\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z\n                              .string()\n                              .describe(\n                                'Set media using an external media URL.'\n                              )\n                              .url(),\n                          }),\n                        ]),\n                        z.xor([\n                          z.object({\n                            image: z.never().optional(),\n                            video: z.never().optional(),\n                          }),\n                          z.object({\n                            video: z.never().optional(),\n                            image: z\n                              .string()\n                              .describe(\n                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                              ),\n                          }),\n                          z.object({\n                            image: z.never().optional(),\n                            video: z\n                              .string()\n                              .describe(\n                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                    .describe('Variant media.')\n                    .optional(),\n                  subscriptionPricesInfo: z\n                    .object({\n                      subscriptionPrices: z\n                        .array(\n                          z.object({\n                            subscriptionId: z\n                              .string()\n                              .describe('Subscription ID.')\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                            price: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                              )\n                              .optional(),\n                            pricePerUnit: z\n                              .object({\n                                value: z\n                                  .string()\n                                  .describe(\n                                    'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                  )\n                                  .optional(),\n                                description: z\n                                  .string()\n                                  .describe(\n                                    'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                                priceAfterDiscount: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe('Price per unit info.')\n                              .optional(),\n                            priceAfterDiscount: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                              )\n                              .optional(),\n                          })\n                        )\n                        .max(6)\n                        .optional(),\n                    })\n                    .describe(\n                      'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                  inventoryStatus: z\n                    .object({\n                      inStock: z\n                        .boolean()\n                        .describe('Whether the variant is in stock.')\n                        .optional(),\n                      preorderEnabled: z\n                        .boolean()\n                        .describe(\n                          'Whether preorder is enabled for this variant.'\n                        )\n                        .optional(),\n                    })\n                    .describe('Variant inventory status.')\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    physicalProperties: z.never().optional(),\n                    digitalProperties: z.never().optional(),\n                  }),\n                  z.object({\n                    digitalProperties: z.never().optional(),\n                    physicalProperties: z\n                      .object({\n                        weight: z\n                          .number()\n                          .describe(\n                            'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                          )\n                          .min(0)\n                          .max(999999999.99)\n                          .optional()\n                          .nullable(),\n                        pricePerUnit: z\n                          .object({\n                            settings: z\n                              .object({\n                                quantity: z\n                                  .number()\n                                  .describe(\n                                    'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                  )\n                                  .min(0.01)\n                                  .max(999999999.99)\n                                  .optional(),\n                                measurementUnit: z\n                                  .enum([\n                                    'UNSPECIFIED',\n                                    'ML',\n                                    'CL',\n                                    'L',\n                                    'CBM',\n                                    'MG',\n                                    'G',\n                                    'KG',\n                                    'MM',\n                                    'CM',\n                                    'M',\n                                    'SQM',\n                                    'OZ',\n                                    'LB',\n                                    'FLOZ',\n                                    'PT',\n                                    'QT',\n                                    'GAL',\n                                    'IN',\n                                    'FT',\n                                    'YD',\n                                    'SQFT',\n                                  ])\n                                  .describe(\n                                    'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                              )\n                              .optional(),\n                            value: z\n                              .string()\n                              .describe(\n                                \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                              )\n                              .optional(),\n                            description: z\n                              .string()\n                              .describe(\n                                'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(100)\n                              .optional()\n                              .nullable(),\n                            priceAfterDiscount: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                          )\n                          .optional(),\n                        productDimensions: z\n                          .object({\n                            length: z\n                              .string()\n                              .describe(\n                                'Length. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            width: z\n                              .string()\n                              .describe(\n                                'Width. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            height: z\n                              .string()\n                              .describe(\n                                'Height. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            unit: z\n                              .enum([\n                                'UNKNOWN_DIMENSIONS_UNIT',\n                                'MM',\n                                'CM',\n                                'M',\n                                'IN',\n                                'FT',\n                                'YD',\n                              ])\n                              .describe(\n                                'Unit of measurement for dimensions (length, width, height).'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Product dimensions (length, width, height of the physical product).'\n                          )\n                          .optional(),\n                        packageDimensions: z\n                          .object({\n                            length: z\n                              .string()\n                              .describe(\n                                'Length. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            width: z\n                              .string()\n                              .describe(\n                                'Width. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            height: z\n                              .string()\n                              .describe(\n                                'Height. Measurement unit is handled at the system level (metric/imperial).'\n                              )\n                              .optional()\n                              .nullable(),\n                            unit: z\n                              .enum([\n                                'UNKNOWN_DIMENSIONS_UNIT',\n                                'MM',\n                                'CM',\n                                'M',\n                                'IN',\n                                'FT',\n                                'YD',\n                              ])\n                              .describe(\n                                'Unit of measurement for dimensions (length, width, height).'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Package dimensions (length, width, height of the shipping package).'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Physical properties. Must be passed when `productType: PHYSICAL`'\n                      ),\n                  }),\n                  z.object({\n                    physicalProperties: z.never().optional(),\n                    digitalProperties: z\n                      .object({\n                        digitalFile: z\n                          .object({\n                            _id: z\n                              .string()\n                              .describe('Media ID in media manager.')\n                              .min(1)\n                              .max(100)\n                              .optional(),\n                            fileName: z\n                              .string()\n                              .describe('Original file name.')\n                              .min(1)\n                              .max(1000)\n                              .optional(),\n                            fileSize: z\n                              .string()\n                              .describe('Original file size.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                            fileType: z\n                              .enum([\n                                'UNSPECIFIED',\n                                'SECURE_PICTURE',\n                                'SECURE_VIDEO',\n                                'SECURE_DOCUMENT',\n                                'SECURE_MUSIC',\n                                'SECURE_ARCHIVE',\n                                'SECURE_RAW',\n                              ])\n                              .describe('File type.')\n                              .optional(),\n                          })\n                          .describe(\n                            'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Digital properties. Must be passed when `productType: DIGITAL`'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\n                'The variant with the lowest `actualPrice` among visible variants for this product.\\n\\nHidden variants are excluded; ties are broken by variant order. Empty if the product has no visible variants.\\n> **Note:** Returned only when you pass `\"MIN_PRICE_VARIANT\"` to the `fields` array in Products API requests.'\n              )\n              .optional(),\n          })\n          .describe('The total number of variants for the product.')\n          .optional(),\n      }),\n      z.xor([\n        z.object({ physicalProperties: z.never().optional() }),\n        z.object({\n          physicalProperties: z\n            .object({\n              pricePerUnit: z\n                .object({\n                  quantity: z\n                    .number()\n                    .describe(\n                      'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                    )\n                    .min(0.01)\n                    .max(999999999.99)\n                    .optional(),\n                  measurementUnit: z\n                    .enum([\n                      'UNSPECIFIED',\n                      'ML',\n                      'CL',\n                      'L',\n                      'CBM',\n                      'MG',\n                      'G',\n                      'KG',\n                      'MM',\n                      'CM',\n                      'M',\n                      'SQM',\n                      'OZ',\n                      'LB',\n                      'FLOZ',\n                      'PT',\n                      'QT',\n                      'GAL',\n                      'IN',\n                      'FT',\n                      'YD',\n                      'SQFT',\n                    ])\n                    .describe(\n                      'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n                )\n                .optional(),\n              fulfillerId: z\n                .string()\n                .describe('Fulfiller ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              shippingWeightRange: z\n                .object({\n                  minValue: z\n                    .number()\n                    .describe(\n                      'Minimum weight across all variants associated with this product.'\n                    )\n                    .min(0)\n                    .max(999999999.99)\n                    .optional(),\n                  maxValue: z\n                    .number()\n                    .describe(\n                      'Maximum weight across all variants associated with this product.'\n                    )\n                    .min(0)\n                    .max(999999999.99)\n                    .optional(),\n                })\n                .describe(\n                  'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n                )\n                .optional(),\n              pricePerUnitRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      value: z\n                        .string()\n                        .describe(\n                          \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                        )\n                        .optional(),\n                      description: z\n                        .string()\n                        .describe(\n                          'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                        )\n                        .max(100)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum price per unit across all variants.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      value: z\n                        .string()\n                        .describe(\n                          \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                        )\n                        .optional(),\n                      description: z\n                        .string()\n                        .describe(\n                          'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                        )\n                        .max(100)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum price per unit across all variants.')\n                    .optional(),\n                })\n                .describe(\n                  'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n                )\n                .optional(),\n              weightMeasurementUnitInfo: z\n                .object({\n                  weightMeasurementUnit: z\n                    .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                    .describe('Weight measurement unit.')\n                    .optional(),\n                })\n                .describe(\n                  'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              deliveryProfileId: z\n                .string()\n                .describe('Delivery profile ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n            ),\n        }),\n      ])\n    )\n    .describe('Product.')\n    .optional(),\n});\nexport const SearchProductsRequest = z.object({\n  search: z\n    .intersection(\n      z.object({\n        filter: z\n          .record(z.string(), z.any())\n          .describe(\n            'Filter object.\\n\\nLearn more about [filtering](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-the-wix-api-query-language#filters).'\n          )\n          .optional()\n          .nullable(),\n        sort: z\n          .array(\n            z.object({\n              fieldName: z\n                .string()\n                .describe('Name of the field to sort by.')\n                .max(512)\n                .optional(),\n              order: z.enum(['ASC', 'DESC']).optional(),\n              selectItemsBy: z\n                .array(z.record(z.string(), z.any()))\n                .max(10)\n                .optional(),\n            })\n          )\n          .max(10)\n          .optional(),\n        aggregations: z\n          .array(\n            z.intersection(\n              z.object({\n                name: z\n                  .string()\n                  .describe(\n                    'Aggregation name, returned in `aggregations.results.name`.'\n                  )\n                  .max(100)\n                  .optional()\n                  .nullable(),\n                type: z\n                  .enum([\n                    'VALUE',\n                    'RANGE',\n                    'SCALAR',\n                    'DATE_HISTOGRAM',\n                    'NESTED',\n                  ])\n                  .optional(),\n                fieldPath: z\n                  .string()\n                  .describe(\n                    'Field to aggregate by. Use dot notation to specify a JSON path. For example, `order.address.streetName`.'\n                  )\n                  .max(200)\n                  .optional(),\n              }),\n              z.xor([\n                z.object({\n                  value: z.never().optional(),\n                  range: z.never().optional(),\n                  scalar: z.never().optional(),\n                  dateHistogram: z.never().optional(),\n                  nested: z.never().optional(),\n                }),\n                z.object({\n                  range: z.never().optional(),\n                  scalar: z.never().optional(),\n                  dateHistogram: z.never().optional(),\n                  nested: z.never().optional(),\n                  value: z\n                    .intersection(\n                      z.object({\n                        sortType: z\n                          .enum(['COUNT', 'VALUE'])\n                          .describe('Sort type.')\n                          .optional(),\n                        sortDirection: z\n                          .enum(['DESC', 'ASC'])\n                          .describe('Sort direction.')\n                          .optional(),\n                        limit: z\n                          .number()\n                          .int()\n                          .describe(\n                            'Number of aggregation results to return.\\nMin: `1`\\nMax: `250`\\nDefault: `10`'\n                          )\n                          .optional()\n                          .nullable(),\n                        missingValues: z\n                          .enum(['EXCLUDE', 'INCLUDE'])\n                          .describe(\n                            'Whether to include or exclude missing values in the aggregation results.\\nDefault: `EXCLUDE`.'\n                          )\n                          .optional(),\n                      }),\n                      z.xor([\n                        z.object({ includeOptions: z.never().optional() }),\n                        z.object({\n                          includeOptions: z\n                            .object({\n                              addToBucket: z\n                                .string()\n                                .describe(\n                                  'Specify a custom name for the bucket containing the missing values. Defaults are `\"N/A\"` for strings, `0` for integers, and `false` for booleans.'\n                                )\n                                .max(20)\n                                .optional(),\n                            })\n                            .describe(\n                              'Options for including missing values in results.'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\n                      'A value aggregation calculates metrics such as count for specific fields within a dataset, providing insights into the overall distribution and key statistics of those values. For example, use a value aggregation to get the number (count) of products for each price listed in the store.'\n                    ),\n                }),\n                z.object({\n                  value: z.never().optional(),\n                  scalar: z.never().optional(),\n                  dateHistogram: z.never().optional(),\n                  nested: z.never().optional(),\n                  range: z\n                    .object({\n                      buckets: z\n                        .array(\n                          z.object({\n                            from: z\n                              .number()\n                              .describe(\n                                'Inclusive lower bound of the range. Required if `to` is not provided.'\n                              )\n                              .optional()\n                              .nullable(),\n                            to: z\n                              .number()\n                              .describe(\n                                'Exclusive upper bound of the range. Required if `from` is not provided.'\n                              )\n                              .optional()\n                              .nullable(),\n                          })\n                        )\n                        .max(50)\n                        .optional(),\n                    })\n                    .describe(\n                      'A range aggregation calculates the count of the values from the specified field in the dataset that fall within the range of each bucket you define. For example, use a range aggregation to compare the number of reservations made for parties of 4 or less to the number of reservations made for parties with 5 or more.'\n                    ),\n                }),\n                z.object({\n                  value: z.never().optional(),\n                  range: z.never().optional(),\n                  dateHistogram: z.never().optional(),\n                  nested: z.never().optional(),\n                  scalar: z\n                    .object({\n                      type: z\n                        .enum(['COUNT_DISTINCT', 'MIN', 'MAX'])\n                        .describe('Operator type for the scalar aggregation.')\n                        .optional(),\n                    })\n                    .describe(\n                      'A scalar aggregation calculates a single numerical value from a dataset, summarizing the dataset into one key metric: `COUNT_DISTINCT`, `SUM`, `AVG`, `MIN`, or `MAX`.'\n                    ),\n                }),\n                z.object({\n                  value: z.never().optional(),\n                  range: z.never().optional(),\n                  scalar: z.never().optional(),\n                  nested: z.never().optional(),\n                  dateHistogram: z\n                    .object({\n                      interval: z\n                        .enum([\n                          'YEAR',\n                          'MONTH',\n                          'WEEK',\n                          'DAY',\n                          'HOUR',\n                          'MINUTE',\n                          'SECOND',\n                        ])\n                        .describe('Interval for date histogram aggregation.')\n                        .optional(),\n                    })\n                    .describe(\n                      'A date histogram calculates the count of time values from the specified field in the dataset that fall within each time interval you define (hour, day, week, etc.) For example, use a date histogram to find how many reservations have been made at a restaurant each week.'\n                    ),\n                }),\n                z.object({\n                  value: z.never().optional(),\n                  range: z.never().optional(),\n                  scalar: z.never().optional(),\n                  dateHistogram: z.never().optional(),\n                  nested: z\n                    .object({\n                      nestedAggregations: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              name: z\n                                .string()\n                                .describe(\n                                  'Unique, caller-defined aggregation name, returned in `aggregations.results`.'\n                                )\n                                .max(100)\n                                .optional()\n                                .nullable(),\n                              type: z\n                                .enum([\n                                  'VALUE',\n                                  'RANGE',\n                                  'SCALAR',\n                                  'DATE_HISTOGRAM',\n                                ])\n                                .optional(),\n                              fieldPath: z\n                                .string()\n                                .describe(\n                                  'Field to aggregate by. Use dot notation to specify a JSON path. For example, `order.address.streetName`.'\n                                )\n                                .max(200)\n                                .optional(),\n                            }),\n                            z.xor([\n                              z.object({\n                                value: z.never().optional(),\n                                range: z.never().optional(),\n                                scalar: z.never().optional(),\n                                dateHistogram: z.never().optional(),\n                              }),\n                              z.object({\n                                range: z.never().optional(),\n                                scalar: z.never().optional(),\n                                dateHistogram: z.never().optional(),\n                                value: z\n                                  .intersection(\n                                    z.object({\n                                      sortType: z\n                                        .enum(['COUNT', 'VALUE'])\n                                        .describe('Sort type.')\n                                        .optional(),\n                                      sortDirection: z\n                                        .enum(['DESC', 'ASC'])\n                                        .describe('Sort direction.')\n                                        .optional(),\n                                      limit: z\n                                        .number()\n                                        .int()\n                                        .describe(\n                                          'Number of aggregation results to return.\\nMin: `1`\\nMax: `250`\\nDefault: `10`'\n                                        )\n                                        .optional()\n                                        .nullable(),\n                                      missingValues: z\n                                        .enum(['EXCLUDE', 'INCLUDE'])\n                                        .describe(\n                                          'Whether to include or exclude missing values in the aggregation results.\\nDefault: `EXCLUDE`.'\n                                        )\n                                        .optional(),\n                                    }),\n                                    z.xor([\n                                      z.object({\n                                        includeOptions: z.never().optional(),\n                                      }),\n                                      z.object({\n                                        includeOptions: z\n                                          .object({\n                                            addToBucket: z\n                                              .string()\n                                              .describe(\n                                                'Specify a custom name for the bucket containing the missing values. Defaults are `\"N/A\"` for strings, `0` for integers, and `false` for booleans.'\n                                              )\n                                              .max(20)\n                                              .optional(),\n                                          })\n                                          .describe(\n                                            'Options for including missing values in results.'\n                                          ),\n                                      }),\n                                    ])\n                                  )\n                                  .describe(\n                                    \"A value aggregation calculates the distribution of a specific field's values within a dataset, providing insights into the overall distribution and key statistics of those values. For example, use a value aggregation to get the number (count) of orders for each order status.\"\n                                  ),\n                              }),\n                              z.object({\n                                value: z.never().optional(),\n                                scalar: z.never().optional(),\n                                dateHistogram: z.never().optional(),\n                                range: z\n                                  .object({\n                                    buckets: z\n                                      .array(\n                                        z.object({\n                                          from: z\n                                            .number()\n                                            .describe(\n                                              'Inclusive lower bound of the range. Required if `to` is not provided.'\n                                            )\n                                            .optional()\n                                            .nullable(),\n                                          to: z\n                                            .number()\n                                            .describe(\n                                              'Exclusive upper bound of the range. Required if `from` is not provided.'\n                                            )\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                      )\n                                      .max(50)\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'A range aggregation calculates the count of the values from the specified field in the dataset that fall within the range of each bucket you define. For example, use a range aggregation to compare the number of reservations made for parties of 4 or less to the number of reservations made for parties with 5 or more. If ranges overlap, a record that fits more than one range will only be counted in the first range that matches the criteria.'\n                                  ),\n                              }),\n                              z.object({\n                                value: z.never().optional(),\n                                range: z.never().optional(),\n                                dateHistogram: z.never().optional(),\n                                scalar: z\n                                  .object({\n                                    type: z\n                                      .enum(['COUNT_DISTINCT', 'MIN', 'MAX'])\n                                      .describe(\n                                        'Operator type for the scalar aggregation.'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'A scalar aggregation calculates a single numerical value from a dataset, summarizing the dataset into one key metric: `COUNT_DISTINCT`, `SUM`, `AVG`, `MIN`, or `MAX`.'\n                                  ),\n                              }),\n                              z.object({\n                                value: z.never().optional(),\n                                range: z.never().optional(),\n                                scalar: z.never().optional(),\n                                dateHistogram: z\n                                  .object({\n                                    interval: z\n                                      .enum([\n                                        'YEAR',\n                                        'MONTH',\n                                        'WEEK',\n                                        'DAY',\n                                        'HOUR',\n                                        'MINUTE',\n                                        'SECOND',\n                                      ])\n                                      .describe(\n                                        'Interval for date histogram aggregation.'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'A date histogram calculates the count of time values from the specified field in the dataset that fall within each time interval you define (hour, day, week, etc.). For example, use a date histogram to determine how many reservations have been made at a restaurant each week. If ranges overlap, a record that fits more than one range will only be counted in the first range that matches the criteria.'\n                                  ),\n                              }),\n                            ])\n                          )\n                        )\n                        .min(2)\n                        .max(3)\n                        .optional(),\n                    })\n                    .describe(\n                      'A nested aggregation is applied within the results of another aggregation. Rather than aggregating directly on the primary dataset, first group data using one aggregation and then apply another aggregation within each group. It allows for more complex analyses where you can summarize data at different levels of detail or hierarchy. For example, to get the number of products that are in stock and out of stock for each price listed, first perform a value aggregation on `discountedPriceNumeric`, and a second value aggregation on `inStock`.'\n                    ),\n                }),\n              ])\n            )\n          )\n          .max(10)\n          .optional(),\n        search: z\n          .object({\n            mode: z.enum(['OR', 'AND']).optional(),\n            expression: z\n              .string()\n              .describe('Search term or expression')\n              .max(100)\n              .optional()\n              .nullable(),\n            fields: z.array(z.string()).max(20).optional(),\n            fuzzy: z\n              .boolean()\n              .describe(\n                'Whether to enable the search function to use an algorithm to automatically find results that are close to the search expression, such as typos and declensions.'\n              )\n              .optional(),\n          })\n          .describe('Free text to match in searchable fields.')\n          .optional(),\n        timeZone: z\n          .string()\n          .describe(\n            'Time zone to adjust date-time-based filters and aggregations, in ISO 8601 (including offsets) or IANA time zone database (including time zone IDs) format.\\nApplies to all relevant filters and aggregations, unless overridden by providing timestamps including time zone. For example, \"2023-12-20T10:52:34.795Z\".'\n          )\n          .max(50)\n          .optional()\n          .nullable(),\n      }),\n      z.xor([\n        z.object({ cursorPaging: z.never().optional() }),\n        z.object({\n          cursorPaging: z\n            .object({\n              limit: z\n                .number()\n                .int()\n                .describe('Maximum number of items to return in the results.')\n                .min(0)\n                .max(100)\n                .optional()\n                .nullable(),\n              cursor: z\n                .string()\n                .describe(\n                  \"Pointer to the next or previous page in the list of results.\\n\\nPass the relevant cursor token from the `pagingMetadata` object in the previous call's response.\\nNot relevant for the first request.\"\n                )\n                .max(16000)\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              'Cursor paging options.\\n\\nLearn more about [cursor paging](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-the-wix-api-query-language#cursor-paging).'\n            ),\n        }),\n      ])\n    )\n    .describe('Search options.'),\n  options: z\n    .object({\n      fields: z\n        .array(\n          z.enum([\n            'URL',\n            'CURRENCY',\n            'INFO_SECTION',\n            'MERCHANT_DATA',\n            'PLAIN_DESCRIPTION',\n            'INFO_SECTION_PLAIN_DESCRIPTION',\n            'SUBSCRIPTION_PRICES_INFO',\n            'BREADCRUMBS_INFO',\n            'WEIGHT_MEASUREMENT_UNIT_INFO',\n            'VARIANT_OPTION_CHOICE_NAMES',\n            'MEDIA_ITEMS_INFO',\n            'DESCRIPTION',\n            'DIRECT_CATEGORIES_INFO',\n            'ALL_CATEGORIES_INFO',\n            'INFO_SECTION_DESCRIPTION',\n            'THUMBNAIL',\n            'PRODUCT_CHOICES_MEDIA_REFERENCES',\n            'PRODUCT_CHOICES_DISPLAY_IMAGE',\n            'MIN_PRICE_VARIANT',\n            'DISCOUNT_INFO',\n          ])\n        )\n        .max(100)\n        .optional(),\n    })\n    .optional(),\n});\nexport const SearchProductsResponse = z.object({\n  products: z\n    .array(\n      z.intersection(\n        z.object({\n          _id: z\n            .string()\n            .describe('Product ID.')\n            .min(1)\n            .max(36)\n            .optional()\n            .nullable(),\n          revision: z\n            .string()\n            .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n            .describe(\n              'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product.'\n            )\n            .optional()\n            .nullable(),\n          _createdDate: z\n            .date()\n            .describe('Date and time the product was created.')\n            .optional()\n            .nullable(),\n          _updatedDate: z\n            .date()\n            .describe('Date and time the product was updated.')\n            .optional()\n            .nullable(),\n          name: z\n            .string()\n            .describe('Product name. Translatable.')\n            .min(1)\n            .max(80)\n            .optional()\n            .nullable(),\n          slug: z\n            .string()\n            .describe(\n              'Product slug. A URL-friendly identifier used in the product page address.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n            )\n            .min(1)\n            .max(300)\n            .optional()\n            .nullable(),\n          url: z\n            .string()\n            .describe(\n              'URL to the site\\'s product page.\\n\\n> **Note:** Returned only when you pass `\"URL\"` to the `fields` array in Products API requests.'\n            )\n            .optional(),\n          description: z\n            .any()\n            .describe(\n              'Product description using rich content.\\n> **Note:** Returned only when you pass `\"DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n            )\n            .optional(),\n          plainDescription: z\n            .string()\n            .describe(\n              'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n            )\n            .max(16000)\n            .optional()\n            .nullable(),\n          visible: z\n            .boolean()\n            .describe(\n              \"Whether the product is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the default variant's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n            )\n            .optional()\n            .nullable(),\n          visibleInPos: z\n            .boolean()\n            .describe(\n              'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n            )\n            .optional()\n            .nullable(),\n          media: z\n            .object({\n              main: z\n                .intersection(\n                  z.object({\n                    altText: z\n                      .string()\n                      .describe('Image alt text.')\n                      .min(1)\n                      .max(1000)\n                      .optional()\n                      .nullable(),\n                    displayName: z\n                      .string()\n                      .describe(\n                        \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                      )\n                      .max(80)\n                      .optional()\n                      .nullable(),\n                    mediaType: z\n                      .enum(['IMAGE', 'VIDEO'])\n                      .describe('Media type.')\n                      .optional(),\n                    thumbnail: z\n                      .object({\n                        url: z\n                          .string()\n                          .describe('Thumbnail url.')\n                          .url()\n                          .optional(),\n                        height: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail height.')\n                          .optional(),\n                        width: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail width.')\n                          .optional(),\n                        altText: z\n                          .string()\n                          .describe('Thumbnail alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    uploadId: z\n                      .string()\n                      .describe('ID used to upload media to Wix Media Manager.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                  }),\n                  z.intersection(\n                    z.xor([\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z.never().optional(),\n                      }),\n                      z.object({\n                        url: z.never().optional(),\n                        _id: z\n                          .string()\n                          .describe(\n                            'Set media by ID of an existing file in Wix Media Manager.'\n                          )\n                          .min(1)\n                          .max(200),\n                      }),\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z\n                          .string()\n                          .describe('Set media using an external media URL.')\n                          .url(),\n                      }),\n                    ]),\n                    z.xor([\n                      z.object({\n                        image: z.never().optional(),\n                        video: z.never().optional(),\n                      }),\n                      z.object({\n                        video: z.never().optional(),\n                        image: z\n                          .string()\n                          .describe(\n                            \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                          ),\n                      }),\n                      z.object({\n                        image: z.never().optional(),\n                        video: z\n                          .string()\n                          .describe(\n                            \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                          ),\n                      }),\n                    ])\n                  )\n                )\n                .describe(\n                  'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n                )\n                .optional(),\n              itemsInfo: z\n                .object({\n                  items: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          altText: z\n                            .string()\n                            .describe('Image alt text.')\n                            .min(1)\n                            .max(1000)\n                            .optional()\n                            .nullable(),\n                          displayName: z\n                            .string()\n                            .describe(\n                              \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                            )\n                            .max(80)\n                            .optional()\n                            .nullable(),\n                          mediaType: z\n                            .enum(['IMAGE', 'VIDEO'])\n                            .describe('Media type.')\n                            .optional(),\n                          thumbnail: z\n                            .object({\n                              url: z\n                                .string()\n                                .describe('Thumbnail url.')\n                                .url()\n                                .optional(),\n                              height: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail height.')\n                                .optional(),\n                              width: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail width.')\n                                .optional(),\n                              altText: z\n                                .string()\n                                .describe('Thumbnail alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                          uploadId: z\n                            .string()\n                            .describe(\n                              'ID used to upload media to Wix Media Manager.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                        }),\n                        z.intersection(\n                          z.xor([\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z.never().optional(),\n                            }),\n                            z.object({\n                              url: z.never().optional(),\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Set media by ID of an existing file in Wix Media Manager.'\n                                )\n                                .min(1)\n                                .max(200),\n                            }),\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z\n                                .string()\n                                .describe(\n                                  'Set media using an external media URL.'\n                                )\n                                .url(),\n                            }),\n                          ]),\n                          z.xor([\n                            z.object({\n                              image: z.never().optional(),\n                              video: z.never().optional(),\n                            }),\n                            z.object({\n                              video: z.never().optional(),\n                              image: z\n                                .string()\n                                .describe(\n                                  \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                ),\n                            }),\n                            z.object({\n                              image: z.never().optional(),\n                              video: z\n                                .string()\n                                .describe(\n                                  \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                ),\n                            }),\n                          ])\n                        )\n                      )\n                    )\n                    .max(50)\n                    .optional(),\n                })\n                .describe(\n                  'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n            })\n            .describe(\n              'Product media items. For a detailed explanation of product media, see [About Product Media](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/about-product-media).'\n            )\n            .optional(),\n          seoData: z\n            .object({\n              tags: z\n                .array(\n                  z.object({\n                    type: z\n                      .string()\n                      .describe(\n                        'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                      )\n                      .optional(),\n                    props: z\n                      .record(z.string(), z.any())\n                      .describe(\n                        'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    meta: z\n                      .record(z.string(), z.any())\n                      .describe(\n                        'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    children: z\n                      .string()\n                      .describe(\n                        'SEO tag inner content. For example, `<title> inner content </title>`.'\n                      )\n                      .optional(),\n                    custom: z\n                      .boolean()\n                      .describe(\n                        'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                      )\n                      .optional(),\n                    disabled: z\n                      .boolean()\n                      .describe(\n                        \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                      )\n                      .optional(),\n                  })\n                )\n                .optional(),\n              settings: z\n                .object({\n                  preventAutoRedirect: z\n                    .boolean()\n                    .describe(\n                      'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n                    )\n                    .optional(),\n                  keywords: z\n                    .array(\n                      z.object({\n                        term: z.string().describe('Keyword value.').optional(),\n                        isMain: z\n                          .boolean()\n                          .describe(\n                            'Whether the keyword is the main focus keyword.'\n                          )\n                          .optional(),\n                        origin: z\n                          .string()\n                          .describe(\n                            'The source that added the keyword terms to the SEO settings.'\n                          )\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(5)\n                    .optional(),\n                })\n                .describe('SEO general settings.')\n                .optional(),\n            })\n            .describe('Product SEO data.')\n            .optional(),\n          taxGroupId: z\n            .string()\n            .describe(\n              '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n            )\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          options: z\n            .array(\n              z.intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe(\n                      'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n                    )\n                    .min(1)\n                    .max(36)\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Option name.')\n                    .min(1)\n                    .max(50)\n                    .optional()\n                    .nullable(),\n                  optionRenderType: z\n                    .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                    .describe('Option render type.')\n                    .optional(),\n                  key: z\n                    .string()\n                    .describe(\n                      'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                    )\n                    .min(1)\n                    .max(50)\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({ choicesSettings: z.never().optional() }),\n                  z.object({\n                    choicesSettings: z\n                      .object({\n                        choices: z\n                          .array(\n                            z.intersection(\n                              z.object({\n                                choiceId: z\n                                  .string()\n                                  .describe('Choice ID.')\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                linkedMedia: z\n                                  .array(\n                                    z.intersection(\n                                      z.object({\n                                        altText: z\n                                          .string()\n                                          .describe('Image alt text.')\n                                          .min(1)\n                                          .max(1000)\n                                          .optional()\n                                          .nullable(),\n                                        displayName: z\n                                          .string()\n                                          .describe(\n                                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                          )\n                                          .max(80)\n                                          .optional()\n                                          .nullable(),\n                                        mediaType: z\n                                          .enum(['IMAGE', 'VIDEO'])\n                                          .describe('Media type.')\n                                          .optional(),\n                                        thumbnail: z\n                                          .object({\n                                            url: z\n                                              .string()\n                                              .describe('Thumbnail url.')\n                                              .url()\n                                              .optional(),\n                                            height: z\n                                              .number()\n                                              .int()\n                                              .describe('Thumbnail height.')\n                                              .optional(),\n                                            width: z\n                                              .number()\n                                              .int()\n                                              .describe('Thumbnail width.')\n                                              .optional(),\n                                            altText: z\n                                              .string()\n                                              .describe('Thumbnail alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                          })\n                                          .describe(\n                                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .optional(),\n                                        uploadId: z\n                                          .string()\n                                          .describe(\n                                            'ID used to upload media to Wix Media Manager.'\n                                          )\n                                          .regex(\n                                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                            'Must be a valid GUID'\n                                          )\n                                          .optional(),\n                                      }),\n                                      z.intersection(\n                                        z.xor([\n                                          z.object({\n                                            _id: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            _id: z\n                                              .string()\n                                              .describe(\n                                                'Set media by ID of an existing file in Wix Media Manager.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            _id: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'Set media using an external media URL.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ]),\n                                        z.xor([\n                                          z.object({\n                                            image: z.never().optional(),\n                                            video: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            video: z.never().optional(),\n                                            image: z\n                                              .string()\n                                              .describe(\n                                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                              ),\n                                          }),\n                                          z.object({\n                                            image: z.never().optional(),\n                                            video: z\n                                              .string()\n                                              .describe(\n                                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                              ),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                  )\n                                  .max(15)\n                                  .optional(),\n                                choiceType: z\n                                  .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                  .describe('Choice type.')\n                                  .optional(),\n                                key: z\n                                  .string()\n                                  .describe(\n                                    'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                  )\n                                  .min(1)\n                                  .max(50)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe(\n                                    'Choice name. For text choices, this field also contains the choice value.'\n                                  )\n                                  .min(1)\n                                  .max(50)\n                                  .optional()\n                                  .nullable(),\n                                inStock: z\n                                  .boolean()\n                                  .describe(\n                                    'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                                  )\n                                  .optional(),\n                                visible: z\n                                  .boolean()\n                                  .describe(\n                                    'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                                  )\n                                  .optional(),\n                                displayImage: z\n                                  .string()\n                                  .describe(\n                                    'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                  )\n                                  .optional(),\n                                media: z\n                                  .object({\n                                    items: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({}),\n                                          z.xor([\n                                            z.object({\n                                              mediaId: z.never().optional(),\n                                              url: z.never().optional(),\n                                            }),\n                                            z.object({\n                                              url: z.never().optional(),\n                                              mediaId: z\n                                                .string()\n                                                .describe(\n                                                  'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                )\n                                                .min(1)\n                                                .max(200),\n                                            }),\n                                            z.object({\n                                              mediaId: z.never().optional(),\n                                              url: z\n                                                .string()\n                                                .describe(\n                                                  'External media URL. Can be used only on write.'\n                                                )\n                                                .url(),\n                                            }),\n                                          ])\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                  )\n                                  .optional(),\n                              }),\n                              z.xor([\n                                z.object({ colorCode: z.never().optional() }),\n                                z.object({\n                                  colorCode: z\n                                    .string()\n                                    .describe(\n                                      'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                                    )\n                                    .min(3)\n                                    .max(20),\n                                }),\n                              ])\n                            )\n                          )\n                          .min(1)\n                          .max(100)\n                          .optional(),\n                      })\n                      .describe('Choices settings.'),\n                  }),\n                ])\n              )\n            )\n            .max(6)\n            .optional(),\n          modifiers: z\n            .array(\n              z.intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe(\n                      'ID of a customization with `customizationType: MODIFIER`.'\n                    )\n                    .min(1)\n                    .max(36)\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Modifier title.')\n                    .min(1)\n                    .max(50)\n                    .optional()\n                    .nullable(),\n                  modifierRenderType: z\n                    .enum(['FREE_TEXT', 'TEXT_CHOICES', 'SWATCH_CHOICES'])\n                    .describe('Modifier render type.')\n                    .optional(),\n                  mandatory: z\n                    .boolean()\n                    .describe(\n                      'Whether customer input is required for this modifier.'\n                    )\n                    .optional(),\n                  key: z\n                    .string()\n                    .describe(\n                      'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                    )\n                    .min(1)\n                    .max(50)\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    freeTextSettings: z.never().optional(),\n                    choicesSettings: z.never().optional(),\n                  }),\n                  z.object({\n                    choicesSettings: z.never().optional(),\n                    freeTextSettings: z\n                      .object({\n                        minCharCount: z\n                          .number()\n                          .int()\n                          .describe('Minimum number of characters.')\n                          .optional(),\n                        maxCharCount: z\n                          .number()\n                          .int()\n                          .describe('Maximum number of characters.')\n                          .max(500)\n                          .optional(),\n                        defaultAddedPrice: z\n                          .string()\n                          .describe(\n                            \"Default amount to be added to the product's price.\"\n                          )\n                          .optional()\n                          .nullable(),\n                        title: z\n                          .string()\n                          .describe(\n                            'Title of the text to be input by the customer.'\n                          )\n                          .min(1)\n                          .max(150)\n                          .optional(),\n                        key: z\n                          .string()\n                          .describe(\n                            'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                          )\n                          .min(1)\n                          .max(150)\n                          .optional(),\n                      })\n                      .describe('Free text modifier settings.'),\n                  }),\n                  z.object({\n                    freeTextSettings: z.never().optional(),\n                    choicesSettings: z\n                      .object({\n                        choices: z\n                          .array(\n                            z.intersection(\n                              z.object({\n                                choiceId: z\n                                  .string()\n                                  .describe('Choice ID.')\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                linkedMedia: z\n                                  .array(\n                                    z.intersection(\n                                      z.object({\n                                        altText: z\n                                          .string()\n                                          .describe('Image alt text.')\n                                          .min(1)\n                                          .max(1000)\n                                          .optional()\n                                          .nullable(),\n                                        displayName: z\n                                          .string()\n                                          .describe(\n                                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                          )\n                                          .max(80)\n                                          .optional()\n                                          .nullable(),\n                                        mediaType: z\n                                          .enum(['IMAGE', 'VIDEO'])\n                                          .describe('Media type.')\n                                          .optional(),\n                                        thumbnail: z\n                                          .object({\n                                            url: z\n                                              .string()\n                                              .describe('Thumbnail url.')\n                                              .url()\n                                              .optional(),\n                                            height: z\n                                              .number()\n                                              .int()\n                                              .describe('Thumbnail height.')\n                                              .optional(),\n                                            width: z\n                                              .number()\n                                              .int()\n                                              .describe('Thumbnail width.')\n                                              .optional(),\n                                            altText: z\n                                              .string()\n                                              .describe('Thumbnail alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                          })\n                                          .describe(\n                                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .optional(),\n                                        uploadId: z\n                                          .string()\n                                          .describe(\n                                            'ID used to upload media to Wix Media Manager.'\n                                          )\n                                          .regex(\n                                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                            'Must be a valid GUID'\n                                          )\n                                          .optional(),\n                                      }),\n                                      z.intersection(\n                                        z.xor([\n                                          z.object({\n                                            _id: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            _id: z\n                                              .string()\n                                              .describe(\n                                                'Set media by ID of an existing file in Wix Media Manager.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            _id: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'Set media using an external media URL.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ]),\n                                        z.xor([\n                                          z.object({\n                                            image: z.never().optional(),\n                                            video: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            video: z.never().optional(),\n                                            image: z\n                                              .string()\n                                              .describe(\n                                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                              ),\n                                          }),\n                                          z.object({\n                                            image: z.never().optional(),\n                                            video: z\n                                              .string()\n                                              .describe(\n                                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                              ),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                  )\n                                  .max(15)\n                                  .optional(),\n                                choiceType: z\n                                  .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                  .describe('Choice type.')\n                                  .optional(),\n                                key: z\n                                  .string()\n                                  .describe(\n                                    'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                  )\n                                  .min(1)\n                                  .max(50)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe('Choice name.')\n                                  .min(1)\n                                  .max(50)\n                                  .optional()\n                                  .nullable(),\n                                addedPrice: z\n                                  .string()\n                                  .describe('Added price.')\n                                  .optional()\n                                  .nullable(),\n                                displayImage: z\n                                  .string()\n                                  .describe(\n                                    'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                  )\n                                  .optional(),\n                                media: z\n                                  .object({\n                                    items: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({}),\n                                          z.xor([\n                                            z.object({\n                                              mediaId: z.never().optional(),\n                                              url: z.never().optional(),\n                                            }),\n                                            z.object({\n                                              url: z.never().optional(),\n                                              mediaId: z\n                                                .string()\n                                                .describe(\n                                                  'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                )\n                                                .min(1)\n                                                .max(200),\n                                            }),\n                                            z.object({\n                                              mediaId: z.never().optional(),\n                                              url: z\n                                                .string()\n                                                .describe(\n                                                  'External media URL. Can be used only on write.'\n                                                )\n                                                .url(),\n                                            }),\n                                          ])\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                  )\n                                  .optional(),\n                              }),\n                              z.xor([\n                                z.object({ colorCode: z.never().optional() }),\n                                z.object({\n                                  colorCode: z\n                                    .string()\n                                    .describe(\n                                      'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                                    )\n                                    .min(3)\n                                    .max(20),\n                                }),\n                              ])\n                            )\n                          )\n                          .min(1)\n                          .max(100)\n                          .optional(),\n                      })\n                      .describe('Choice settings.'),\n                  }),\n                ])\n              )\n            )\n            .max(10)\n            .optional(),\n          brand: z\n            .object({\n              _id: z\n                .string()\n                .describe('Brand ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Brand name.')\n                .max(50)\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              \"Product [brand](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/brands-v3/introduction).\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n            )\n            .optional(),\n          infoSections: z\n            .array(\n              z.object({\n                _id: z\n                  .string()\n                  .describe('Info section ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                uniqueName: z\n                  .string()\n                  .describe(\n                    'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(100)\n                  .optional()\n                  .nullable(),\n                title: z\n                  .string()\n                  .describe(\n                    'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                description: z\n                  .any()\n                  .describe(\n                    'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                  )\n                  .optional(),\n                plainDescription: z\n                  .string()\n                  .describe(\n                    'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(16000)\n                  .optional()\n                  .nullable(),\n              })\n            )\n            .max(10)\n            .optional(),\n          ribbon: z\n            .object({\n              _id: z\n                .string()\n                .describe('Ribbon ID.')\n                .min(1)\n                .max(36)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Ribbon name.')\n                .max(30)\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              \"Primary [ribbon](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/ribbons-v3/introduction) displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n            )\n            .optional(),\n          directCategoriesInfo: z\n            .object({\n              categories: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Category ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    index: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                      )\n                      .min(0)\n                      .max(200)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(2000)\n                .optional(),\n            })\n            .describe(\n              'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product.\\n\\nUpdated automatically when a product is added/removed from a category, when an item is moved within a category, or when a category is deleted.\\n> **Note:** Returned only when you pass `\"DIRECT_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n            )\n            .optional(),\n          allCategoriesInfo: z\n            .object({\n              categories: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Category ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    index: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                      )\n                      .min(0)\n                      .max(200)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(2000)\n                .optional(),\n            })\n            .describe(\n              'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product, as well as their parent categories.\\n> **Note:** Returned only when you pass `\"ALL_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n            )\n            .optional(),\n          mainCategoryId: z\n            .string()\n            .describe(\n              'The ID of the product\\'s primary direct [category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction), which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n            )\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          costRange: z\n            .object({\n              minValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Minimum value.')\n                .optional(),\n              maxValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Maximum value.')\n                .optional(),\n            })\n            .describe(\n              'Product cost range - minimum and maximum costs of all product variants.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n            )\n            .optional(),\n          inventory: z\n            .object({\n              availabilityStatus: z\n                .enum(['IN_STOCK', 'OUT_OF_STOCK', 'PARTIALLY_OUT_OF_STOCK'])\n                .describe('Current availability status.')\n                .optional(),\n              preorderStatus: z\n                .enum(['ENABLED', 'DISABLED', 'PARTIALLY_ENABLED'])\n                .describe('Current preorder status.')\n                .optional(),\n              preorderAvailability: z\n                .enum(['ALL_VARIANTS', 'NO_VARIANTS', 'SOME_VARIANTS'])\n                .describe('Preorder availability status.')\n                .optional(),\n            })\n            .describe(\n              'Product inventory info.\\n\\n> **Note:** This field reflects the aggregated inventory status from the default location only. Use the [Inventory Items API](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/inventory-items-v3/introduction) to manage inventory for specific locations. Learn more about [inventory management](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-inventory-management).'\n            )\n            .optional(),\n          productType: z\n            .enum(['PHYSICAL', 'DIGITAL'])\n            .describe(\n              'Product type: `PHYSICAL` for tangible goods that require shipping, or `DIGITAL` for downloadable content.\\n\\nWhen passing `productType: PHYSICAL`, you must also pass `physicalProperties`. When passing `productType: DIGITAL`, you can optionally pass `digitalProperties` in each variant.'\n            )\n            .optional(),\n          handle: z\n            .string()\n            .describe(\n              \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n            )\n            .min(1)\n            .max(100)\n            .optional()\n            .nullable(),\n          currency: z\n            .string()\n            .describe(\n              'Currency used for the pricing of this product, in [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes) format.\\n\\nDefaults to the currency defined in the site settings, unless specified in the request\\'s `x-wix-currency` header.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n            )\n            .optional()\n            .nullable(),\n          breadcrumbsInfo: z\n            .object({\n              breadcrumbs: z\n                .array(\n                  z.object({\n                    categoryId: z\n                      .string()\n                      .describe('Category ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    categoryName: z\n                      .string()\n                      .describe('Category name.')\n                      .min(1)\n                      .max(80)\n                      .optional(),\n                    categorySlug: z\n                      .string()\n                      .describe('Category slug.')\n                      .min(1)\n                      .max(100)\n                      .optional(),\n                  })\n                )\n                .max(5)\n                .optional(),\n            })\n            .describe(\n              'Breadcrumbs of the `mainCategoryId`. Used to navigate to parent [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction). Useful for building navigation UI and for SEO purposes.\\n> **Note:** Returned only when you pass `\"BREADCRUMBS_INFO\"` to the `fields` array in Products API requests.'\n            )\n            .optional(),\n          actualPriceRange: z\n            .object({\n              minValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Minimum value.')\n                .optional(),\n              maxValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Maximum value.')\n                .optional(),\n            })\n            .describe(\n              'Minimum and maximum current selling prices across all product variants.'\n            )\n            .optional(),\n          compareAtPriceRange: z\n            .object({\n              minValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Minimum value.')\n                .optional(),\n              maxValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Maximum value.')\n                .optional(),\n            })\n            .describe(\n              'Minimum and maximum compare-at prices (original prices before discounts) across all product variants. Used to show savings to customers.'\n            )\n            .optional(),\n          variantsInfo: z\n            .object({\n              variants: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe('Variant ID.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional()\n                        .nullable(),\n                      visible: z\n                        .boolean()\n                        .describe(\n                          \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                        )\n                        .optional()\n                        .nullable(),\n                      sku: z\n                        .string()\n                        .describe('Variant SKU (stock keeping unit).')\n                        .min(1)\n                        .max(40)\n                        .optional()\n                        .nullable(),\n                      barcode: z\n                        .string()\n                        .describe('Variant barcode.')\n                        .min(1)\n                        .max(40)\n                        .optional()\n                        .nullable(),\n                      choices: z\n                        .array(\n                          z.object({\n                            optionChoiceIds: z\n                              .object({\n                                optionId: z\n                                  .string()\n                                  .describe('Option ID.')\n                                  .min(1)\n                                  .max(36)\n                                  .optional(),\n                                choiceId: z\n                                  .string()\n                                  .describe('Choice ID.')\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                              )\n                              .optional(),\n                            optionChoiceNames: z\n                              .object({\n                                optionName: z\n                                  .string()\n                                  .describe('Option name.')\n                                  .min(1)\n                                  .optional(),\n                                choiceName: z\n                                  .string()\n                                  .describe('Choice name.')\n                                  .min(1)\n                                  .optional(),\n                                renderType: z\n                                  .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                  .describe(\n                                    'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                              )\n                              .optional(),\n                          })\n                        )\n                        .min(0)\n                        .max(6)\n                        .optional(),\n                      price: z\n                        .object({\n                          actualPrice: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              \"Variant's current selling price. Must be greater than or equal to 0.\"\n                            )\n                            .optional(),\n                          compareAtPrice: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                            )\n                            .optional(),\n                          priceAfterDiscount: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                            )\n                            .optional(),\n                        })\n                        .describe('Variant price.')\n                        .optional(),\n                      revenueDetails: z\n                        .object({\n                          cost: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe('Item cost.')\n                            .optional(),\n                          profit: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                            )\n                            .optional(),\n                          profitMargin: z\n                            .number()\n                            .describe(\n                              'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                            )\n                            .min(0)\n                            .max(1)\n                            .optional(),\n                        })\n                        .describe(\n                          'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                        )\n                        .optional(),\n                      media: z\n                        .intersection(\n                          z.object({\n                            altText: z\n                              .string()\n                              .describe('Image alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                            displayName: z\n                              .string()\n                              .describe(\n                                \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                              )\n                              .max(80)\n                              .optional()\n                              .nullable(),\n                            mediaType: z\n                              .enum(['IMAGE', 'VIDEO'])\n                              .describe('Media type.')\n                              .optional(),\n                            thumbnail: z\n                              .object({\n                                url: z\n                                  .string()\n                                  .describe('Thumbnail url.')\n                                  .url()\n                                  .optional(),\n                                height: z\n                                  .number()\n                                  .int()\n                                  .describe('Thumbnail height.')\n                                  .optional(),\n                                width: z\n                                  .number()\n                                  .int()\n                                  .describe('Thumbnail width.')\n                                  .optional(),\n                                altText: z\n                                  .string()\n                                  .describe('Thumbnail alt text.')\n                                  .min(1)\n                                  .max(1000)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                              )\n                              .optional(),\n                            uploadId: z\n                              .string()\n                              .describe(\n                                'ID used to upload media to Wix Media Manager.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          }),\n                          z.intersection(\n                            z.xor([\n                              z.object({\n                                _id: z.never().optional(),\n                                url: z.never().optional(),\n                              }),\n                              z.object({\n                                url: z.never().optional(),\n                                _id: z\n                                  .string()\n                                  .describe(\n                                    'Set media by ID of an existing file in Wix Media Manager.'\n                                  )\n                                  .min(1)\n                                  .max(200),\n                              }),\n                              z.object({\n                                _id: z.never().optional(),\n                                url: z\n                                  .string()\n                                  .describe(\n                                    'Set media using an external media URL.'\n                                  )\n                                  .url(),\n                              }),\n                            ]),\n                            z.xor([\n                              z.object({\n                                image: z.never().optional(),\n                                video: z.never().optional(),\n                              }),\n                              z.object({\n                                video: z.never().optional(),\n                                image: z\n                                  .string()\n                                  .describe(\n                                    \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                  ),\n                              }),\n                              z.object({\n                                image: z.never().optional(),\n                                video: z\n                                  .string()\n                                  .describe(\n                                    \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                  ),\n                              }),\n                            ])\n                          )\n                        )\n                        .describe('Variant media.')\n                        .optional(),\n                      subscriptionPricesInfo: z\n                        .object({\n                          subscriptionPrices: z\n                            .array(\n                              z.object({\n                                subscriptionId: z\n                                  .string()\n                                  .describe('Subscription ID.')\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional(),\n                                price: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                  )\n                                  .optional(),\n                                pricePerUnit: z\n                                  .object({\n                                    value: z\n                                      .string()\n                                      .describe(\n                                        'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                      )\n                                      .optional(),\n                                    description: z\n                                      .string()\n                                      .describe(\n                                        'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                    priceAfterDiscount: z\n                                      .object({\n                                        amount: z\n                                          .string()\n                                          .describe(\n                                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                          )\n                                          .optional(),\n                                        formattedAmount: z\n                                          .string()\n                                          .describe(\n                                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe('Price per unit info.')\n                                  .optional(),\n                                priceAfterDiscount: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                  )\n                                  .optional(),\n                              })\n                            )\n                            .max(6)\n                            .optional(),\n                        })\n                        .describe(\n                          'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                        )\n                        .optional(),\n                      inventoryStatus: z\n                        .object({\n                          inStock: z\n                            .boolean()\n                            .describe('Whether the variant is in stock.')\n                            .optional(),\n                          preorderEnabled: z\n                            .boolean()\n                            .describe(\n                              'Whether preorder is enabled for this variant.'\n                            )\n                            .optional(),\n                        })\n                        .describe('Variant inventory status.')\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({\n                        physicalProperties: z.never().optional(),\n                        digitalProperties: z.never().optional(),\n                      }),\n                      z.object({\n                        digitalProperties: z.never().optional(),\n                        physicalProperties: z\n                          .object({\n                            weight: z\n                              .number()\n                              .describe(\n                                'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                              )\n                              .min(0)\n                              .max(999999999.99)\n                              .optional()\n                              .nullable(),\n                            pricePerUnit: z\n                              .object({\n                                settings: z\n                                  .object({\n                                    quantity: z\n                                      .number()\n                                      .describe(\n                                        'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                      )\n                                      .min(0.01)\n                                      .max(999999999.99)\n                                      .optional(),\n                                    measurementUnit: z\n                                      .enum([\n                                        'UNSPECIFIED',\n                                        'ML',\n                                        'CL',\n                                        'L',\n                                        'CBM',\n                                        'MG',\n                                        'G',\n                                        'KG',\n                                        'MM',\n                                        'CM',\n                                        'M',\n                                        'SQM',\n                                        'OZ',\n                                        'LB',\n                                        'FLOZ',\n                                        'PT',\n                                        'QT',\n                                        'GAL',\n                                        'IN',\n                                        'FT',\n                                        'YD',\n                                        'SQFT',\n                                      ])\n                                      .describe(\n                                        'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                  )\n                                  .optional(),\n                                value: z\n                                  .string()\n                                  .describe(\n                                    \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                  )\n                                  .optional(),\n                                description: z\n                                  .string()\n                                  .describe(\n                                    'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(100)\n                                  .optional()\n                                  .nullable(),\n                                priceAfterDiscount: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                              )\n                              .optional(),\n                            productDimensions: z\n                              .object({\n                                length: z\n                                  .string()\n                                  .describe(\n                                    'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                width: z\n                                  .string()\n                                  .describe(\n                                    'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                height: z\n                                  .string()\n                                  .describe(\n                                    'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                unit: z\n                                  .enum([\n                                    'UNKNOWN_DIMENSIONS_UNIT',\n                                    'MM',\n                                    'CM',\n                                    'M',\n                                    'IN',\n                                    'FT',\n                                    'YD',\n                                  ])\n                                  .describe(\n                                    'Unit of measurement for dimensions (length, width, height).'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Product dimensions (length, width, height of the physical product).'\n                              )\n                              .optional(),\n                            packageDimensions: z\n                              .object({\n                                length: z\n                                  .string()\n                                  .describe(\n                                    'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                width: z\n                                  .string()\n                                  .describe(\n                                    'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                height: z\n                                  .string()\n                                  .describe(\n                                    'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                unit: z\n                                  .enum([\n                                    'UNKNOWN_DIMENSIONS_UNIT',\n                                    'MM',\n                                    'CM',\n                                    'M',\n                                    'IN',\n                                    'FT',\n                                    'YD',\n                                  ])\n                                  .describe(\n                                    'Unit of measurement for dimensions (length, width, height).'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Package dimensions (length, width, height of the shipping package).'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Physical properties. Must be passed when `productType: PHYSICAL`'\n                          ),\n                      }),\n                      z.object({\n                        physicalProperties: z.never().optional(),\n                        digitalProperties: z\n                          .object({\n                            digitalFile: z\n                              .object({\n                                _id: z\n                                  .string()\n                                  .describe('Media ID in media manager.')\n                                  .min(1)\n                                  .max(100)\n                                  .optional(),\n                                fileName: z\n                                  .string()\n                                  .describe('Original file name.')\n                                  .min(1)\n                                  .max(1000)\n                                  .optional(),\n                                fileSize: z\n                                  .string()\n                                  .describe('Original file size.')\n                                  .min(1)\n                                  .max(1000)\n                                  .optional()\n                                  .nullable(),\n                                fileType: z\n                                  .enum([\n                                    'UNSPECIFIED',\n                                    'SECURE_PICTURE',\n                                    'SECURE_VIDEO',\n                                    'SECURE_DOCUMENT',\n                                    'SECURE_MUSIC',\n                                    'SECURE_ARCHIVE',\n                                    'SECURE_RAW',\n                                  ])\n                                  .describe('File type.')\n                                  .optional(),\n                              })\n                              .describe(\n                                'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Digital properties. Must be passed when `productType: DIGITAL`'\n                          ),\n                      }),\n                    ])\n                  )\n                )\n                .min(1)\n                .max(1000)\n                .optional(),\n            })\n            .describe(\n              'Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nYou must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).'\n            )\n            .optional(),\n          purchaseEligibility: z\n            .object({ userCriteria: z.enum(['MEMBERS_ONLY']).optional() })\n            .describe('Purchase eligibility settings for the product.')\n            .optional(),\n          additionalRibbons: z\n            .array(\n              z.object({\n                _id: z\n                  .string()\n                  .describe('Ribbon ID.')\n                  .min(1)\n                  .max(36)\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Ribbon name.')\n                  .max(30)\n                  .optional()\n                  .nullable(),\n              })\n            )\n            .max(4)\n            .optional(),\n          extendedFields: z\n            .object({\n              namespaces: z\n                .record(z.string(), z.record(z.string(), z.any()))\n                .describe(\n                  'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                )\n                .optional(),\n            })\n            .describe(\n              'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n            )\n            .optional(),\n          tags: z\n            .object({\n              privateTags: z\n                .object({ tagIds: z.array(z.string()).max(100).optional() })\n                .describe(\n                  'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n                )\n                .optional(),\n              publicTags: z\n                .object({ tagIds: z.array(z.string()).max(100).optional() })\n                .describe(\n                  'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n                )\n                .optional(),\n            })\n            .describe('Tags')\n            .optional(),\n          subscriptionDetails: z\n            .object({\n              subscriptions: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe('Subscription ID.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional()\n                        .nullable(),\n                      title: z\n                        .string()\n                        .describe('Subscription title.')\n                        .min(1)\n                        .max(20)\n                        .optional(),\n                      description: z\n                        .string()\n                        .describe('Subscription description.')\n                        .max(60)\n                        .optional()\n                        .nullable(),\n                      visible: z\n                        .boolean()\n                        .describe(\n                          'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                        )\n                        .optional()\n                        .nullable(),\n                      frequency: z\n                        .enum(['UNDEFINED', 'DAY', 'WEEK', 'MONTH', 'YEAR'])\n                        .describe(\n                          'Frequency of recurring payment.\\nFor example, if `frequency: MONTH` and `billingCycles: 6`; payment will be made monthly for 6 months.'\n                        )\n                        .optional(),\n                      interval: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                        )\n                        .min(1)\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                      discount: z\n                        .intersection(\n                          z.object({\n                            type: z\n                              .enum(['AMOUNT', 'PERCENT'])\n                              .describe('Discount type.')\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              amountOff: z.never().optional(),\n                              percentOff: z.never().optional(),\n                            }),\n                            z.object({\n                              percentOff: z.never().optional(),\n                              amountOff: z\n                                .string()\n                                .describe(\n                                  'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                                ),\n                            }),\n                            z.object({\n                              amountOff: z.never().optional(),\n                              percentOff: z\n                                .number()\n                                .describe(\n                                  'Percentage subtracted from the variant price when calculating subscription prices.'\n                                )\n                                .min(0.1)\n                                .max(99.9),\n                            }),\n                          ])\n                        )\n                        .describe(\n                          'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                        )\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({\n                        autoRenewal: z.never().optional(),\n                        billingCycles: z.never().optional(),\n                      }),\n                      z.object({\n                        billingCycles: z.never().optional(),\n                        autoRenewal: z\n                          .boolean()\n                          .describe(\n                            'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                          ),\n                      }),\n                      z.object({\n                        autoRenewal: z.never().optional(),\n                        billingCycles: z\n                          .number()\n                          .int()\n                          .describe(\n                            'Number of billing cycles before subscription ends.'\n                          )\n                          .min(2)\n                          .max(999),\n                      }),\n                    ])\n                  )\n                )\n                .min(1)\n                .max(6)\n                .optional(),\n              allowOneTimePurchases: z\n                .boolean()\n                .describe(\n                  'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n                )\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n            )\n            .optional(),\n          variantSummary: z\n            .object({\n              variantCount: z\n                .number()\n                .int()\n                .describe('The total number of variants for the product.')\n                .optional(),\n              minPriceVariant: z\n                .intersection(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Variant ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    visible: z\n                      .boolean()\n                      .describe(\n                        \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                      )\n                      .optional()\n                      .nullable(),\n                    sku: z\n                      .string()\n                      .describe('Variant SKU (stock keeping unit).')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    barcode: z\n                      .string()\n                      .describe('Variant barcode.')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.object({\n                          optionChoiceIds: z\n                            .object({\n                              optionId: z\n                                .string()\n                                .describe('Option ID.')\n                                .min(1)\n                                .max(36)\n                                .optional(),\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                            )\n                            .optional(),\n                          optionChoiceNames: z\n                            .object({\n                              optionName: z\n                                .string()\n                                .describe('Option name.')\n                                .min(1)\n                                .optional(),\n                              choiceName: z\n                                .string()\n                                .describe('Choice name.')\n                                .min(1)\n                                .optional(),\n                              renderType: z\n                                .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                .describe(\n                                  'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .min(0)\n                      .max(6)\n                      .optional(),\n                    price: z\n                      .object({\n                        actualPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            \"Variant's current selling price. Must be greater than or equal to 0.\"\n                          )\n                          .optional(),\n                        compareAtPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                          )\n                          .optional(),\n                        priceAfterDiscount: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                          )\n                          .optional(),\n                      })\n                      .describe('Variant price.')\n                      .optional(),\n                    revenueDetails: z\n                      .object({\n                        cost: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe('Item cost.')\n                          .optional(),\n                        profit: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                          )\n                          .optional(),\n                        profitMargin: z\n                          .number()\n                          .describe(\n                            'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                          )\n                          .min(0)\n                          .max(1)\n                          .optional(),\n                      })\n                      .describe(\n                        'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                      )\n                      .optional(),\n                    media: z\n                      .intersection(\n                        z.object({\n                          altText: z\n                            .string()\n                            .describe('Image alt text.')\n                            .min(1)\n                            .max(1000)\n                            .optional()\n                            .nullable(),\n                          displayName: z\n                            .string()\n                            .describe(\n                              \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                            )\n                            .max(80)\n                            .optional()\n                            .nullable(),\n                          mediaType: z\n                            .enum(['IMAGE', 'VIDEO'])\n                            .describe('Media type.')\n                            .optional(),\n                          thumbnail: z\n                            .object({\n                              url: z\n                                .string()\n                                .describe('Thumbnail url.')\n                                .url()\n                                .optional(),\n                              height: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail height.')\n                                .optional(),\n                              width: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail width.')\n                                .optional(),\n                              altText: z\n                                .string()\n                                .describe('Thumbnail alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                          uploadId: z\n                            .string()\n                            .describe(\n                              'ID used to upload media to Wix Media Manager.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                        }),\n                        z.intersection(\n                          z.xor([\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z.never().optional(),\n                            }),\n                            z.object({\n                              url: z.never().optional(),\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Set media by ID of an existing file in Wix Media Manager.'\n                                )\n                                .min(1)\n                                .max(200),\n                            }),\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z\n                                .string()\n                                .describe(\n                                  'Set media using an external media URL.'\n                                )\n                                .url(),\n                            }),\n                          ]),\n                          z.xor([\n                            z.object({\n                              image: z.never().optional(),\n                              video: z.never().optional(),\n                            }),\n                            z.object({\n                              video: z.never().optional(),\n                              image: z\n                                .string()\n                                .describe(\n                                  \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                ),\n                            }),\n                            z.object({\n                              image: z.never().optional(),\n                              video: z\n                                .string()\n                                .describe(\n                                  \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                ),\n                            }),\n                          ])\n                        )\n                      )\n                      .describe('Variant media.')\n                      .optional(),\n                    subscriptionPricesInfo: z\n                      .object({\n                        subscriptionPrices: z\n                          .array(\n                            z.object({\n                              subscriptionId: z\n                                .string()\n                                .describe('Subscription ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                              price: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                )\n                                .optional(),\n                              pricePerUnit: z\n                                .object({\n                                  value: z\n                                    .string()\n                                    .describe(\n                                      'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                    )\n                                    .optional(),\n                                  description: z\n                                    .string()\n                                    .describe(\n                                      'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                  priceAfterDiscount: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe('Price per unit info.')\n                                .optional(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                          )\n                          .max(6)\n                          .optional(),\n                      })\n                      .describe(\n                        'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    inventoryStatus: z\n                      .object({\n                        inStock: z\n                          .boolean()\n                          .describe('Whether the variant is in stock.')\n                          .optional(),\n                        preorderEnabled: z\n                          .boolean()\n                          .describe(\n                            'Whether preorder is enabled for this variant.'\n                          )\n                          .optional(),\n                      })\n                      .describe('Variant inventory status.')\n                      .optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z.never().optional(),\n                    }),\n                    z.object({\n                      digitalProperties: z.never().optional(),\n                      physicalProperties: z\n                        .object({\n                          weight: z\n                            .number()\n                            .describe(\n                              'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                            )\n                            .min(0)\n                            .max(999999999.99)\n                            .optional()\n                            .nullable(),\n                          pricePerUnit: z\n                            .object({\n                              settings: z\n                                .object({\n                                  quantity: z\n                                    .number()\n                                    .describe(\n                                      'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                    )\n                                    .min(0.01)\n                                    .max(999999999.99)\n                                    .optional(),\n                                  measurementUnit: z\n                                    .enum([\n                                      'UNSPECIFIED',\n                                      'ML',\n                                      'CL',\n                                      'L',\n                                      'CBM',\n                                      'MG',\n                                      'G',\n                                      'KG',\n                                      'MM',\n                                      'CM',\n                                      'M',\n                                      'SQM',\n                                      'OZ',\n                                      'LB',\n                                      'FLOZ',\n                                      'PT',\n                                      'QT',\n                                      'GAL',\n                                      'IN',\n                                      'FT',\n                                      'YD',\n                                      'SQFT',\n                                    ])\n                                    .describe(\n                                      'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                )\n                                .optional(),\n                              value: z\n                                .string()\n                                .describe(\n                                  \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                )\n                                .optional(),\n                              description: z\n                                .string()\n                                .describe(\n                                  'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(100)\n                                .optional()\n                                .nullable(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                            )\n                            .optional(),\n                          productDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Product dimensions (length, width, height of the physical product).'\n                            )\n                            .optional(),\n                          packageDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Package dimensions (length, width, height of the shipping package).'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Physical properties. Must be passed when `productType: PHYSICAL`'\n                        ),\n                    }),\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z\n                        .object({\n                          digitalFile: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe('Media ID in media manager.')\n                                .min(1)\n                                .max(100)\n                                .optional(),\n                              fileName: z\n                                .string()\n                                .describe('Original file name.')\n                                .min(1)\n                                .max(1000)\n                                .optional(),\n                              fileSize: z\n                                .string()\n                                .describe('Original file size.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              fileType: z\n                                .enum([\n                                  'UNSPECIFIED',\n                                  'SECURE_PICTURE',\n                                  'SECURE_VIDEO',\n                                  'SECURE_DOCUMENT',\n                                  'SECURE_MUSIC',\n                                  'SECURE_ARCHIVE',\n                                  'SECURE_RAW',\n                                ])\n                                .describe('File type.')\n                                .optional(),\n                            })\n                            .describe(\n                              'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Digital properties. Must be passed when `productType: DIGITAL`'\n                        ),\n                    }),\n                  ])\n                )\n                .describe(\n                  'The variant with the lowest `actualPrice` among visible variants for this product.\\n\\nHidden variants are excluded; ties are broken by variant order. Empty if the product has no visible variants.\\n> **Note:** Returned only when you pass `\"MIN_PRICE_VARIANT\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n            })\n            .describe('The total number of variants for the product.')\n            .optional(),\n        }),\n        z.xor([\n          z.object({ physicalProperties: z.never().optional() }),\n          z.object({\n            physicalProperties: z\n              .object({\n                pricePerUnit: z\n                  .object({\n                    quantity: z\n                      .number()\n                      .describe(\n                        'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                      )\n                      .min(0.01)\n                      .max(999999999.99)\n                      .optional(),\n                    measurementUnit: z\n                      .enum([\n                        'UNSPECIFIED',\n                        'ML',\n                        'CL',\n                        'L',\n                        'CBM',\n                        'MG',\n                        'G',\n                        'KG',\n                        'MM',\n                        'CM',\n                        'M',\n                        'SQM',\n                        'OZ',\n                        'LB',\n                        'FLOZ',\n                        'PT',\n                        'QT',\n                        'GAL',\n                        'IN',\n                        'FT',\n                        'YD',\n                        'SQFT',\n                      ])\n                      .describe(\n                        'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                      )\n                      .optional(),\n                  })\n                  .describe(\n                    'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n                  )\n                  .optional(),\n                fulfillerId: z\n                  .string()\n                  .describe('Fulfiller ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                shippingWeightRange: z\n                  .object({\n                    minValue: z\n                      .number()\n                      .describe(\n                        'Minimum weight across all variants associated with this product.'\n                      )\n                      .min(0)\n                      .max(999999999.99)\n                      .optional(),\n                    maxValue: z\n                      .number()\n                      .describe(\n                        'Maximum weight across all variants associated with this product.'\n                      )\n                      .min(0)\n                      .max(999999999.99)\n                      .optional(),\n                  })\n                  .describe(\n                    'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n                  )\n                  .optional(),\n                pricePerUnitRange: z\n                  .object({\n                    minValue: z\n                      .object({\n                        value: z\n                          .string()\n                          .describe(\n                            \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                          )\n                          .optional(),\n                        description: z\n                          .string()\n                          .describe(\n                            'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                          )\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe('Minimum price per unit across all variants.')\n                      .optional(),\n                    maxValue: z\n                      .object({\n                        value: z\n                          .string()\n                          .describe(\n                            \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                          )\n                          .optional(),\n                        description: z\n                          .string()\n                          .describe(\n                            'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                          )\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe('Maximum price per unit across all variants.')\n                      .optional(),\n                  })\n                  .describe(\n                    'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n                  )\n                  .optional(),\n                weightMeasurementUnitInfo: z\n                  .object({\n                    weightMeasurementUnit: z\n                      .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                      .describe('Weight measurement unit.')\n                      .optional(),\n                  })\n                  .describe(\n                    'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n                  )\n                  .optional(),\n                deliveryProfileId: z\n                  .string()\n                  .describe('Delivery profile ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n              })\n              .describe(\n                'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n              ),\n          }),\n        ])\n      )\n    )\n    .optional(),\n  pagingMetadata: z\n    .object({\n      count: z\n        .number()\n        .int()\n        .describe('Number of items returned in the response.')\n        .optional()\n        .nullable(),\n      cursors: z\n        .object({\n          next: z\n            .string()\n            .describe(\n              'Cursor string pointing to the next page in the list of results.'\n            )\n            .max(16000)\n            .optional()\n            .nullable(),\n          prev: z\n            .string()\n            .describe(\n              'Cursor pointing to the previous page in the list of results.'\n            )\n            .max(16000)\n            .optional()\n            .nullable(),\n        })\n        .describe(\n          'Cursor strings that point to the next page, previous page, or both.'\n        )\n        .optional(),\n      hasNext: z\n        .boolean()\n        .describe(\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        .optional()\n        .nullable(),\n    })\n    .describe('Paging metadata.')\n    .optional(),\n  aggregationData: z\n    .object({\n      results: z\n        .array(\n          z.intersection(\n            z.object({\n              name: z\n                .string()\n                .describe(\n                  'Aggregation name, returned in `aggregations.results.name`.'\n                )\n                .max(100)\n                .optional(),\n              type: z\n                .enum(['VALUE', 'RANGE', 'SCALAR', 'DATE_HISTOGRAM', 'NESTED'])\n                .describe(\n                  'Aggregation type. Must align with the corresponding aggregation field.'\n                )\n                .optional(),\n              fieldPath: z\n                .string()\n                .describe(\n                  'Field to aggregate by. Use dot notation to specify a JSON path. For example, `order.address.streetName`.'\n                )\n                .max(200)\n                .optional(),\n            }),\n            z.xor([\n              z.object({\n                values: z.never().optional(),\n                ranges: z.never().optional(),\n                scalar: z.never().optional(),\n                groupedByValue: z.never().optional(),\n                dateHistogram: z.never().optional(),\n                nested: z.never().optional(),\n              }),\n              z.object({\n                ranges: z.never().optional(),\n                scalar: z.never().optional(),\n                groupedByValue: z.never().optional(),\n                dateHistogram: z.never().optional(),\n                nested: z.never().optional(),\n                values: z\n                  .object({\n                    results: z\n                      .array(\n                        z.object({\n                          value: z\n                            .string()\n                            .describe('Value of the field.')\n                            .max(100)\n                            .optional(),\n                          count: z\n                            .number()\n                            .int()\n                            .describe('Number of entities with this value.')\n                            .optional(),\n                        })\n                      )\n                      .max(250)\n                      .optional(),\n                  })\n                  .describe('Value aggregation results.'),\n              }),\n              z.object({\n                values: z.never().optional(),\n                scalar: z.never().optional(),\n                groupedByValue: z.never().optional(),\n                dateHistogram: z.never().optional(),\n                nested: z.never().optional(),\n                ranges: z\n                  .object({\n                    results: z\n                      .array(\n                        z.object({\n                          from: z\n                            .number()\n                            .describe('Inclusive lower bound of the range.')\n                            .optional()\n                            .nullable(),\n                          to: z\n                            .number()\n                            .describe('Exclusive upper bound of the range.')\n                            .optional()\n                            .nullable(),\n                          count: z\n                            .number()\n                            .int()\n                            .describe('Total number of entities in this range.')\n                            .optional(),\n                        })\n                      )\n                      .max(50)\n                      .optional(),\n                  })\n                  .describe('Range aggregation results.'),\n              }),\n              z.object({\n                values: z.never().optional(),\n                ranges: z.never().optional(),\n                groupedByValue: z.never().optional(),\n                dateHistogram: z.never().optional(),\n                nested: z.never().optional(),\n                scalar: z\n                  .object({\n                    type: z\n                      .enum(['COUNT_DISTINCT', 'MIN', 'MAX'])\n                      .describe('Type of scalar aggregation.')\n                      .optional(),\n                    value: z\n                      .number()\n                      .describe('Value of the scalar aggregation.')\n                      .optional(),\n                  })\n                  .describe('Scalar aggregation results.'),\n              }),\n              z.object({\n                values: z.never().optional(),\n                ranges: z.never().optional(),\n                scalar: z.never().optional(),\n                dateHistogram: z.never().optional(),\n                nested: z.never().optional(),\n                groupedByValue: z\n                  .object({\n                    results: z\n                      .array(\n                        z.object({\n                          value: z\n                            .string()\n                            .describe('Value of the field.')\n                            .max(1000)\n                            .optional(),\n                          nestedResults: z\n                            .intersection(\n                              z.object({\n                                name: z\n                                  .string()\n                                  .describe(\n                                    'Unique, caller-defined aggregation name, identifiable by the requested aggregation `name`.'\n                                  )\n                                  .max(100)\n                                  .optional(),\n                                type: z\n                                  .enum([\n                                    'VALUE',\n                                    'RANGE',\n                                    'SCALAR',\n                                    'DATE_HISTOGRAM',\n                                    'NESTED',\n                                  ])\n                                  .describe('Aggregation type.')\n                                  .optional(),\n                                fieldPath: z\n                                  .string()\n                                  .describe(\n                                    'Field which the data was aggregated by.'\n                                  )\n                                  .max(200)\n                                  .optional(),\n                              }),\n                              z.xor([\n                                z.object({\n                                  values: z.never().optional(),\n                                  ranges: z.never().optional(),\n                                  scalar: z.never().optional(),\n                                }),\n                                z.object({\n                                  ranges: z.never().optional(),\n                                  scalar: z.never().optional(),\n                                  values: z\n                                    .object({\n                                      results: z\n                                        .array(\n                                          z.object({\n                                            value: z\n                                              .string()\n                                              .describe('Value of the field.')\n                                              .max(100)\n                                              .optional(),\n                                            count: z\n                                              .number()\n                                              .int()\n                                              .describe(\n                                                'Number of entities with this value.'\n                                              )\n                                              .optional(),\n                                          })\n                                        )\n                                        .max(250)\n                                        .optional(),\n                                    })\n                                    .describe('Value aggregation results.'),\n                                }),\n                                z.object({\n                                  values: z.never().optional(),\n                                  scalar: z.never().optional(),\n                                  ranges: z\n                                    .object({\n                                      results: z\n                                        .array(\n                                          z.object({\n                                            from: z\n                                              .number()\n                                              .describe(\n                                                'Inclusive lower bound of the range.'\n                                              )\n                                              .optional()\n                                              .nullable(),\n                                            to: z\n                                              .number()\n                                              .describe(\n                                                'Exclusive upper bound of the range.'\n                                              )\n                                              .optional()\n                                              .nullable(),\n                                            count: z\n                                              .number()\n                                              .int()\n                                              .describe(\n                                                'Total number of entities in this range.'\n                                              )\n                                              .optional(),\n                                          })\n                                        )\n                                        .max(50)\n                                        .optional(),\n                                    })\n                                    .describe('Range aggregation results.'),\n                                }),\n                                z.object({\n                                  values: z.never().optional(),\n                                  ranges: z.never().optional(),\n                                  scalar: z\n                                    .object({\n                                      type: z\n                                        .enum(['COUNT_DISTINCT', 'MIN', 'MAX'])\n                                        .describe('Type of scalar aggregation.')\n                                        .optional(),\n                                      value: z\n                                        .number()\n                                        .describe(\n                                          'Value of the scalar aggregation.'\n                                        )\n                                        .optional(),\n                                    })\n                                    .describe('Scalar aggregation results.'),\n                                }),\n                              ])\n                            )\n                            .describe('Nested aggregations.')\n                            .optional(),\n                        })\n                      )\n                      .max(1000)\n                      .optional(),\n                  })\n                  .describe('Group by value aggregation results.'),\n              }),\n              z.object({\n                values: z.never().optional(),\n                ranges: z.never().optional(),\n                scalar: z.never().optional(),\n                groupedByValue: z.never().optional(),\n                nested: z.never().optional(),\n                dateHistogram: z\n                  .object({\n                    results: z\n                      .array(\n                        z.object({\n                          value: z\n                            .string()\n                            .describe(\n                              'Date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.'\n                            )\n                            .max(100)\n                            .optional(),\n                          count: z\n                            .number()\n                            .int()\n                            .describe('Number of entities in the bucket.')\n                            .optional(),\n                        })\n                      )\n                      .max(200)\n                      .optional(),\n                  })\n                  .describe('Date histogram aggregation results.'),\n              }),\n              z.object({\n                values: z.never().optional(),\n                ranges: z.never().optional(),\n                scalar: z.never().optional(),\n                groupedByValue: z.never().optional(),\n                dateHistogram: z.never().optional(),\n                nested: z\n                  .object({\n                    results: z\n                      .array(\n                        z.object({\n                          results: z\n                            .record(\n                              z.string(),\n                              z.intersection(\n                                z.object({}),\n                                z.xor([\n                                  z.object({\n                                    value: z.never().optional(),\n                                    range: z.never().optional(),\n                                    scalar: z.never().optional(),\n                                    dateHistogram: z.never().optional(),\n                                  }),\n                                  z.object({\n                                    range: z.never().optional(),\n                                    scalar: z.never().optional(),\n                                    dateHistogram: z.never().optional(),\n                                    value: z\n                                      .object({\n                                        value: z\n                                          .string()\n                                          .describe('Value of the field')\n                                          .max(1000)\n                                          .optional(),\n                                        count: z\n                                          .number()\n                                          .int()\n                                          .describe(\n                                            'Number of entities with this value.'\n                                          )\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe('Value aggregation result.'),\n                                  }),\n                                  z.object({\n                                    value: z.never().optional(),\n                                    scalar: z.never().optional(),\n                                    dateHistogram: z.never().optional(),\n                                    range: z\n                                      .object({\n                                        from: z\n                                          .number()\n                                          .describe(\n                                            'Inclusive lower bound of the range.'\n                                          )\n                                          .optional()\n                                          .nullable(),\n                                        to: z\n                                          .number()\n                                          .describe(\n                                            'Exclusive upper bound of the range.'\n                                          )\n                                          .optional()\n                                          .nullable(),\n                                        count: z\n                                          .number()\n                                          .int()\n                                          .describe(\n                                            'Number of entities in this range.'\n                                          )\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe('Range aggregation result.'),\n                                  }),\n                                  z.object({\n                                    value: z.never().optional(),\n                                    range: z.never().optional(),\n                                    dateHistogram: z.never().optional(),\n                                    scalar: z\n                                      .object({\n                                        value: z\n                                          .number()\n                                          .describe(\n                                            'Value of the scalar aggregation.'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe('Scalar aggregation result.'),\n                                  }),\n                                  z.object({\n                                    value: z.never().optional(),\n                                    range: z.never().optional(),\n                                    scalar: z.never().optional(),\n                                    dateHistogram: z\n                                      .object({\n                                        value: z\n                                          .string()\n                                          .describe('Value of the field')\n                                          .max(1000)\n                                          .optional(),\n                                        count: z\n                                          .number()\n                                          .int()\n                                          .describe(\n                                            'Number of entities with this value.'\n                                          )\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Date histogram aggregation result.'\n                                      ),\n                                  }),\n                                ])\n                              )\n                            )\n                            .describe('List of nested aggregations.')\n                            .optional(),\n                        })\n                      )\n                      .max(1000)\n                      .optional(),\n                  })\n                  .describe('Nested aggregation results.'),\n              }),\n            ])\n          )\n        )\n        .max(10000)\n        .optional(),\n    })\n    .describe('Aggregation data.')\n    .optional(),\n});\nexport const QueryProductsRequest = z.object({\n  query: z\n    .intersection(\n      z.object({\n        filter: z\n          .record(z.string(), z.any())\n          .describe(\n            'Filter object.\\n\\nLearn more about [filtering](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-the-wix-api-query-language#filters).'\n          )\n          .optional()\n          .nullable(),\n        sort: z\n          .array(\n            z.object({\n              fieldName: z\n                .string()\n                .describe('Name of the field to sort by.')\n                .max(512)\n                .optional(),\n              order: z.enum(['ASC', 'DESC']).optional(),\n              selectItemsBy: z\n                .array(z.record(z.string(), z.any()))\n                .max(10)\n                .optional(),\n            })\n          )\n          .max(5)\n          .optional(),\n      }),\n      z.xor([\n        z.object({ cursorPaging: z.never().optional() }),\n        z.object({\n          cursorPaging: z\n            .object({\n              limit: z\n                .number()\n                .int()\n                .describe('Maximum number of items to return in the results.')\n                .min(0)\n                .max(100)\n                .optional()\n                .nullable(),\n              cursor: z\n                .string()\n                .describe(\n                  \"Pointer to the next or previous page in the list of results.\\n\\nPass the relevant cursor token from the `pagingMetadata` object in the previous call's response.\\nNot relevant for the first request.\"\n                )\n                .max(16000)\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              'Cursor paging options.\\n\\nLearn more about [cursor paging](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-the-wix-api-query-language#cursor-paging).'\n            ),\n        }),\n      ])\n    )\n    .describe('Query options.'),\n  options: z\n    .object({\n      fields: z\n        .array(\n          z.enum([\n            'URL',\n            'CURRENCY',\n            'INFO_SECTION',\n            'MERCHANT_DATA',\n            'PLAIN_DESCRIPTION',\n            'INFO_SECTION_PLAIN_DESCRIPTION',\n            'SUBSCRIPTION_PRICES_INFO',\n            'BREADCRUMBS_INFO',\n            'WEIGHT_MEASUREMENT_UNIT_INFO',\n            'VARIANT_OPTION_CHOICE_NAMES',\n            'MEDIA_ITEMS_INFO',\n            'DESCRIPTION',\n            'DIRECT_CATEGORIES_INFO',\n            'ALL_CATEGORIES_INFO',\n            'INFO_SECTION_DESCRIPTION',\n            'THUMBNAIL',\n            'PRODUCT_CHOICES_MEDIA_REFERENCES',\n            'PRODUCT_CHOICES_DISPLAY_IMAGE',\n            'MIN_PRICE_VARIANT',\n            'DISCOUNT_INFO',\n          ])\n        )\n        .max(100)\n        .optional(),\n    })\n    .optional(),\n});\nexport const QueryProductsResponse = z.object({\n  products: z\n    .array(\n      z.intersection(\n        z.object({\n          _id: z\n            .string()\n            .describe('Product ID.')\n            .min(1)\n            .max(36)\n            .optional()\n            .nullable(),\n          revision: z\n            .string()\n            .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n            .describe(\n              'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product.'\n            )\n            .optional()\n            .nullable(),\n          _createdDate: z\n            .date()\n            .describe('Date and time the product was created.')\n            .optional()\n            .nullable(),\n          _updatedDate: z\n            .date()\n            .describe('Date and time the product was updated.')\n            .optional()\n            .nullable(),\n          name: z\n            .string()\n            .describe('Product name. Translatable.')\n            .min(1)\n            .max(80)\n            .optional()\n            .nullable(),\n          slug: z\n            .string()\n            .describe(\n              'Product slug. A URL-friendly identifier used in the product page address.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n            )\n            .min(1)\n            .max(300)\n            .optional()\n            .nullable(),\n          url: z\n            .string()\n            .describe(\n              'URL to the site\\'s product page.\\n\\n> **Note:** Returned only when you pass `\"URL\"` to the `fields` array in Products API requests.'\n            )\n            .optional(),\n          description: z\n            .any()\n            .describe(\n              'Product description using rich content.\\n> **Note:** Returned only when you pass `\"DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n            )\n            .optional(),\n          plainDescription: z\n            .string()\n            .describe(\n              'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n            )\n            .max(16000)\n            .optional()\n            .nullable(),\n          visible: z\n            .boolean()\n            .describe(\n              \"Whether the product is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the default variant's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n            )\n            .optional()\n            .nullable(),\n          visibleInPos: z\n            .boolean()\n            .describe(\n              'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n            )\n            .optional()\n            .nullable(),\n          media: z\n            .object({\n              main: z\n                .intersection(\n                  z.object({\n                    altText: z\n                      .string()\n                      .describe('Image alt text.')\n                      .min(1)\n                      .max(1000)\n                      .optional()\n                      .nullable(),\n                    displayName: z\n                      .string()\n                      .describe(\n                        \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                      )\n                      .max(80)\n                      .optional()\n                      .nullable(),\n                    mediaType: z\n                      .enum(['IMAGE', 'VIDEO'])\n                      .describe('Media type.')\n                      .optional(),\n                    thumbnail: z\n                      .object({\n                        url: z\n                          .string()\n                          .describe('Thumbnail url.')\n                          .url()\n                          .optional(),\n                        height: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail height.')\n                          .optional(),\n                        width: z\n                          .number()\n                          .int()\n                          .describe('Thumbnail width.')\n                          .optional(),\n                        altText: z\n                          .string()\n                          .describe('Thumbnail alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    uploadId: z\n                      .string()\n                      .describe('ID used to upload media to Wix Media Manager.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                  }),\n                  z.intersection(\n                    z.xor([\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z.never().optional(),\n                      }),\n                      z.object({\n                        url: z.never().optional(),\n                        _id: z\n                          .string()\n                          .describe(\n                            'Set media by ID of an existing file in Wix Media Manager.'\n                          )\n                          .min(1)\n                          .max(200),\n                      }),\n                      z.object({\n                        _id: z.never().optional(),\n                        url: z\n                          .string()\n                          .describe('Set media using an external media URL.')\n                          .url(),\n                      }),\n                    ]),\n                    z.xor([\n                      z.object({\n                        image: z.never().optional(),\n                        video: z.never().optional(),\n                      }),\n                      z.object({\n                        video: z.never().optional(),\n                        image: z\n                          .string()\n                          .describe(\n                            \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                          ),\n                      }),\n                      z.object({\n                        image: z.never().optional(),\n                        video: z\n                          .string()\n                          .describe(\n                            \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                          ),\n                      }),\n                    ])\n                  )\n                )\n                .describe(\n                  'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n                )\n                .optional(),\n              itemsInfo: z\n                .object({\n                  items: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          altText: z\n                            .string()\n                            .describe('Image alt text.')\n                            .min(1)\n                            .max(1000)\n                            .optional()\n                            .nullable(),\n                          displayName: z\n                            .string()\n                            .describe(\n                              \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                            )\n                            .max(80)\n                            .optional()\n                            .nullable(),\n                          mediaType: z\n                            .enum(['IMAGE', 'VIDEO'])\n                            .describe('Media type.')\n                            .optional(),\n                          thumbnail: z\n                            .object({\n                              url: z\n                                .string()\n                                .describe('Thumbnail url.')\n                                .url()\n                                .optional(),\n                              height: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail height.')\n                                .optional(),\n                              width: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail width.')\n                                .optional(),\n                              altText: z\n                                .string()\n                                .describe('Thumbnail alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                          uploadId: z\n                            .string()\n                            .describe(\n                              'ID used to upload media to Wix Media Manager.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                        }),\n                        z.intersection(\n                          z.xor([\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z.never().optional(),\n                            }),\n                            z.object({\n                              url: z.never().optional(),\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Set media by ID of an existing file in Wix Media Manager.'\n                                )\n                                .min(1)\n                                .max(200),\n                            }),\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z\n                                .string()\n                                .describe(\n                                  'Set media using an external media URL.'\n                                )\n                                .url(),\n                            }),\n                          ]),\n                          z.xor([\n                            z.object({\n                              image: z.never().optional(),\n                              video: z.never().optional(),\n                            }),\n                            z.object({\n                              video: z.never().optional(),\n                              image: z\n                                .string()\n                                .describe(\n                                  \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                ),\n                            }),\n                            z.object({\n                              image: z.never().optional(),\n                              video: z\n                                .string()\n                                .describe(\n                                  \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                ),\n                            }),\n                          ])\n                        )\n                      )\n                    )\n                    .max(50)\n                    .optional(),\n                })\n                .describe(\n                  'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n            })\n            .describe(\n              'Product media items. For a detailed explanation of product media, see [About Product Media](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/about-product-media).'\n            )\n            .optional(),\n          seoData: z\n            .object({\n              tags: z\n                .array(\n                  z.object({\n                    type: z\n                      .string()\n                      .describe(\n                        'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                      )\n                      .optional(),\n                    props: z\n                      .record(z.string(), z.any())\n                      .describe(\n                        'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    meta: z\n                      .record(z.string(), z.any())\n                      .describe(\n                        'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    children: z\n                      .string()\n                      .describe(\n                        'SEO tag inner content. For example, `<title> inner content </title>`.'\n                      )\n                      .optional(),\n                    custom: z\n                      .boolean()\n                      .describe(\n                        'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                      )\n                      .optional(),\n                    disabled: z\n                      .boolean()\n                      .describe(\n                        \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                      )\n                      .optional(),\n                  })\n                )\n                .optional(),\n              settings: z\n                .object({\n                  preventAutoRedirect: z\n                    .boolean()\n                    .describe(\n                      'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n                    )\n                    .optional(),\n                  keywords: z\n                    .array(\n                      z.object({\n                        term: z.string().describe('Keyword value.').optional(),\n                        isMain: z\n                          .boolean()\n                          .describe(\n                            'Whether the keyword is the main focus keyword.'\n                          )\n                          .optional(),\n                        origin: z\n                          .string()\n                          .describe(\n                            'The source that added the keyword terms to the SEO settings.'\n                          )\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(5)\n                    .optional(),\n                })\n                .describe('SEO general settings.')\n                .optional(),\n            })\n            .describe('Product SEO data.')\n            .optional(),\n          taxGroupId: z\n            .string()\n            .describe(\n              '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n            )\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          options: z\n            .array(\n              z.intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe(\n                      'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n                    )\n                    .min(1)\n                    .max(36)\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Option name.')\n                    .min(1)\n                    .max(50)\n                    .optional()\n                    .nullable(),\n                  optionRenderType: z\n                    .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                    .describe('Option render type.')\n                    .optional(),\n                  key: z\n                    .string()\n                    .describe(\n                      'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                    )\n                    .min(1)\n                    .max(50)\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({ choicesSettings: z.never().optional() }),\n                  z.object({\n                    choicesSettings: z\n                      .object({\n                        choices: z\n                          .array(\n                            z.intersection(\n                              z.object({\n                                choiceId: z\n                                  .string()\n                                  .describe('Choice ID.')\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                linkedMedia: z\n                                  .array(\n                                    z.intersection(\n                                      z.object({\n                                        altText: z\n                                          .string()\n                                          .describe('Image alt text.')\n                                          .min(1)\n                                          .max(1000)\n                                          .optional()\n                                          .nullable(),\n                                        displayName: z\n                                          .string()\n                                          .describe(\n                                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                          )\n                                          .max(80)\n                                          .optional()\n                                          .nullable(),\n                                        mediaType: z\n                                          .enum(['IMAGE', 'VIDEO'])\n                                          .describe('Media type.')\n                                          .optional(),\n                                        thumbnail: z\n                                          .object({\n                                            url: z\n                                              .string()\n                                              .describe('Thumbnail url.')\n                                              .url()\n                                              .optional(),\n                                            height: z\n                                              .number()\n                                              .int()\n                                              .describe('Thumbnail height.')\n                                              .optional(),\n                                            width: z\n                                              .number()\n                                              .int()\n                                              .describe('Thumbnail width.')\n                                              .optional(),\n                                            altText: z\n                                              .string()\n                                              .describe('Thumbnail alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                          })\n                                          .describe(\n                                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .optional(),\n                                        uploadId: z\n                                          .string()\n                                          .describe(\n                                            'ID used to upload media to Wix Media Manager.'\n                                          )\n                                          .regex(\n                                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                            'Must be a valid GUID'\n                                          )\n                                          .optional(),\n                                      }),\n                                      z.intersection(\n                                        z.xor([\n                                          z.object({\n                                            _id: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            _id: z\n                                              .string()\n                                              .describe(\n                                                'Set media by ID of an existing file in Wix Media Manager.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            _id: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'Set media using an external media URL.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ]),\n                                        z.xor([\n                                          z.object({\n                                            image: z.never().optional(),\n                                            video: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            video: z.never().optional(),\n                                            image: z\n                                              .string()\n                                              .describe(\n                                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                              ),\n                                          }),\n                                          z.object({\n                                            image: z.never().optional(),\n                                            video: z\n                                              .string()\n                                              .describe(\n                                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                              ),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                  )\n                                  .max(15)\n                                  .optional(),\n                                choiceType: z\n                                  .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                  .describe('Choice type.')\n                                  .optional(),\n                                key: z\n                                  .string()\n                                  .describe(\n                                    'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                  )\n                                  .min(1)\n                                  .max(50)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe(\n                                    'Choice name. For text choices, this field also contains the choice value.'\n                                  )\n                                  .min(1)\n                                  .max(50)\n                                  .optional()\n                                  .nullable(),\n                                inStock: z\n                                  .boolean()\n                                  .describe(\n                                    'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                                  )\n                                  .optional(),\n                                visible: z\n                                  .boolean()\n                                  .describe(\n                                    'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                                  )\n                                  .optional(),\n                                displayImage: z\n                                  .string()\n                                  .describe(\n                                    'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                  )\n                                  .optional(),\n                                media: z\n                                  .object({\n                                    items: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({}),\n                                          z.xor([\n                                            z.object({\n                                              mediaId: z.never().optional(),\n                                              url: z.never().optional(),\n                                            }),\n                                            z.object({\n                                              url: z.never().optional(),\n                                              mediaId: z\n                                                .string()\n                                                .describe(\n                                                  'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                )\n                                                .min(1)\n                                                .max(200),\n                                            }),\n                                            z.object({\n                                              mediaId: z.never().optional(),\n                                              url: z\n                                                .string()\n                                                .describe(\n                                                  'External media URL. Can be used only on write.'\n                                                )\n                                                .url(),\n                                            }),\n                                          ])\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                  )\n                                  .optional(),\n                              }),\n                              z.xor([\n                                z.object({ colorCode: z.never().optional() }),\n                                z.object({\n                                  colorCode: z\n                                    .string()\n                                    .describe(\n                                      'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                                    )\n                                    .min(3)\n                                    .max(20),\n                                }),\n                              ])\n                            )\n                          )\n                          .min(1)\n                          .max(100)\n                          .optional(),\n                      })\n                      .describe('Choices settings.'),\n                  }),\n                ])\n              )\n            )\n            .max(6)\n            .optional(),\n          modifiers: z\n            .array(\n              z.intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe(\n                      'ID of a customization with `customizationType: MODIFIER`.'\n                    )\n                    .min(1)\n                    .max(36)\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Modifier title.')\n                    .min(1)\n                    .max(50)\n                    .optional()\n                    .nullable(),\n                  modifierRenderType: z\n                    .enum(['FREE_TEXT', 'TEXT_CHOICES', 'SWATCH_CHOICES'])\n                    .describe('Modifier render type.')\n                    .optional(),\n                  mandatory: z\n                    .boolean()\n                    .describe(\n                      'Whether customer input is required for this modifier.'\n                    )\n                    .optional(),\n                  key: z\n                    .string()\n                    .describe(\n                      'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                    )\n                    .min(1)\n                    .max(50)\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    freeTextSettings: z.never().optional(),\n                    choicesSettings: z.never().optional(),\n                  }),\n                  z.object({\n                    choicesSettings: z.never().optional(),\n                    freeTextSettings: z\n                      .object({\n                        minCharCount: z\n                          .number()\n                          .int()\n                          .describe('Minimum number of characters.')\n                          .optional(),\n                        maxCharCount: z\n                          .number()\n                          .int()\n                          .describe('Maximum number of characters.')\n                          .max(500)\n                          .optional(),\n                        defaultAddedPrice: z\n                          .string()\n                          .describe(\n                            \"Default amount to be added to the product's price.\"\n                          )\n                          .optional()\n                          .nullable(),\n                        title: z\n                          .string()\n                          .describe(\n                            'Title of the text to be input by the customer.'\n                          )\n                          .min(1)\n                          .max(150)\n                          .optional(),\n                        key: z\n                          .string()\n                          .describe(\n                            'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                          )\n                          .min(1)\n                          .max(150)\n                          .optional(),\n                      })\n                      .describe('Free text modifier settings.'),\n                  }),\n                  z.object({\n                    freeTextSettings: z.never().optional(),\n                    choicesSettings: z\n                      .object({\n                        choices: z\n                          .array(\n                            z.intersection(\n                              z.object({\n                                choiceId: z\n                                  .string()\n                                  .describe('Choice ID.')\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                linkedMedia: z\n                                  .array(\n                                    z.intersection(\n                                      z.object({\n                                        altText: z\n                                          .string()\n                                          .describe('Image alt text.')\n                                          .min(1)\n                                          .max(1000)\n                                          .optional()\n                                          .nullable(),\n                                        displayName: z\n                                          .string()\n                                          .describe(\n                                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                          )\n                                          .max(80)\n                                          .optional()\n                                          .nullable(),\n                                        mediaType: z\n                                          .enum(['IMAGE', 'VIDEO'])\n                                          .describe('Media type.')\n                                          .optional(),\n                                        thumbnail: z\n                                          .object({\n                                            url: z\n                                              .string()\n                                              .describe('Thumbnail url.')\n                                              .url()\n                                              .optional(),\n                                            height: z\n                                              .number()\n                                              .int()\n                                              .describe('Thumbnail height.')\n                                              .optional(),\n                                            width: z\n                                              .number()\n                                              .int()\n                                              .describe('Thumbnail width.')\n                                              .optional(),\n                                            altText: z\n                                              .string()\n                                              .describe('Thumbnail alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                          })\n                                          .describe(\n                                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .optional(),\n                                        uploadId: z\n                                          .string()\n                                          .describe(\n                                            'ID used to upload media to Wix Media Manager.'\n                                          )\n                                          .regex(\n                                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                            'Must be a valid GUID'\n                                          )\n                                          .optional(),\n                                      }),\n                                      z.intersection(\n                                        z.xor([\n                                          z.object({\n                                            _id: z.never().optional(),\n                                            url: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            url: z.never().optional(),\n                                            _id: z\n                                              .string()\n                                              .describe(\n                                                'Set media by ID of an existing file in Wix Media Manager.'\n                                              )\n                                              .min(1)\n                                              .max(200),\n                                          }),\n                                          z.object({\n                                            _id: z.never().optional(),\n                                            url: z\n                                              .string()\n                                              .describe(\n                                                'Set media using an external media URL.'\n                                              )\n                                              .url(),\n                                          }),\n                                        ]),\n                                        z.xor([\n                                          z.object({\n                                            image: z.never().optional(),\n                                            video: z.never().optional(),\n                                          }),\n                                          z.object({\n                                            video: z.never().optional(),\n                                            image: z\n                                              .string()\n                                              .describe(\n                                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                              ),\n                                          }),\n                                          z.object({\n                                            image: z.never().optional(),\n                                            video: z\n                                              .string()\n                                              .describe(\n                                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                              ),\n                                          }),\n                                        ])\n                                      )\n                                    )\n                                  )\n                                  .max(15)\n                                  .optional(),\n                                choiceType: z\n                                  .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                  .describe('Choice type.')\n                                  .optional(),\n                                key: z\n                                  .string()\n                                  .describe(\n                                    'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                  )\n                                  .min(1)\n                                  .max(50)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe('Choice name.')\n                                  .min(1)\n                                  .max(50)\n                                  .optional()\n                                  .nullable(),\n                                addedPrice: z\n                                  .string()\n                                  .describe('Added price.')\n                                  .optional()\n                                  .nullable(),\n                                displayImage: z\n                                  .string()\n                                  .describe(\n                                    'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                  )\n                                  .optional(),\n                                media: z\n                                  .object({\n                                    items: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({}),\n                                          z.xor([\n                                            z.object({\n                                              mediaId: z.never().optional(),\n                                              url: z.never().optional(),\n                                            }),\n                                            z.object({\n                                              url: z.never().optional(),\n                                              mediaId: z\n                                                .string()\n                                                .describe(\n                                                  'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                )\n                                                .min(1)\n                                                .max(200),\n                                            }),\n                                            z.object({\n                                              mediaId: z.never().optional(),\n                                              url: z\n                                                .string()\n                                                .describe(\n                                                  'External media URL. Can be used only on write.'\n                                                )\n                                                .url(),\n                                            }),\n                                          ])\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                  )\n                                  .optional(),\n                              }),\n                              z.xor([\n                                z.object({ colorCode: z.never().optional() }),\n                                z.object({\n                                  colorCode: z\n                                    .string()\n                                    .describe(\n                                      'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                                    )\n                                    .min(3)\n                                    .max(20),\n                                }),\n                              ])\n                            )\n                          )\n                          .min(1)\n                          .max(100)\n                          .optional(),\n                      })\n                      .describe('Choice settings.'),\n                  }),\n                ])\n              )\n            )\n            .max(10)\n            .optional(),\n          brand: z\n            .object({\n              _id: z\n                .string()\n                .describe('Brand ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Brand name.')\n                .max(50)\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              \"Product [brand](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/brands-v3/introduction).\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n            )\n            .optional(),\n          infoSections: z\n            .array(\n              z.object({\n                _id: z\n                  .string()\n                  .describe('Info section ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                uniqueName: z\n                  .string()\n                  .describe(\n                    'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(100)\n                  .optional()\n                  .nullable(),\n                title: z\n                  .string()\n                  .describe(\n                    'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                  )\n                  .min(1)\n                  .max(50)\n                  .optional()\n                  .nullable(),\n                description: z\n                  .any()\n                  .describe(\n                    'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                  )\n                  .optional(),\n                plainDescription: z\n                  .string()\n                  .describe(\n                    'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                  )\n                  .max(16000)\n                  .optional()\n                  .nullable(),\n              })\n            )\n            .max(10)\n            .optional(),\n          ribbon: z\n            .object({\n              _id: z\n                .string()\n                .describe('Ribbon ID.')\n                .min(1)\n                .max(36)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Ribbon name.')\n                .max(30)\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              \"Primary [ribbon](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/ribbons-v3/introduction) displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n            )\n            .optional(),\n          directCategoriesInfo: z\n            .object({\n              categories: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Category ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    index: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                      )\n                      .min(0)\n                      .max(200)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(2000)\n                .optional(),\n            })\n            .describe(\n              'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product.\\n\\nUpdated automatically when a product is added/removed from a category, when an item is moved within a category, or when a category is deleted.\\n> **Note:** Returned only when you pass `\"DIRECT_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n            )\n            .optional(),\n          allCategoriesInfo: z\n            .object({\n              categories: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Category ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    index: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                      )\n                      .min(0)\n                      .max(200)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(2000)\n                .optional(),\n            })\n            .describe(\n              'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product, as well as their parent categories.\\n> **Note:** Returned only when you pass `\"ALL_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n            )\n            .optional(),\n          mainCategoryId: z\n            .string()\n            .describe(\n              'The ID of the product\\'s primary direct [category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction), which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n            )\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          costRange: z\n            .object({\n              minValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Minimum value.')\n                .optional(),\n              maxValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Maximum value.')\n                .optional(),\n            })\n            .describe(\n              'Product cost range - minimum and maximum costs of all product variants.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n            )\n            .optional(),\n          inventory: z\n            .object({\n              availabilityStatus: z\n                .enum(['IN_STOCK', 'OUT_OF_STOCK', 'PARTIALLY_OUT_OF_STOCK'])\n                .describe('Current availability status.')\n                .optional(),\n              preorderStatus: z\n                .enum(['ENABLED', 'DISABLED', 'PARTIALLY_ENABLED'])\n                .describe('Current preorder status.')\n                .optional(),\n              preorderAvailability: z\n                .enum(['ALL_VARIANTS', 'NO_VARIANTS', 'SOME_VARIANTS'])\n                .describe('Preorder availability status.')\n                .optional(),\n            })\n            .describe(\n              'Product inventory info.\\n\\n> **Note:** This field reflects the aggregated inventory status from the default location only. Use the [Inventory Items API](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/inventory-items-v3/introduction) to manage inventory for specific locations. Learn more about [inventory management](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-inventory-management).'\n            )\n            .optional(),\n          productType: z\n            .enum(['PHYSICAL', 'DIGITAL'])\n            .describe(\n              'Product type: `PHYSICAL` for tangible goods that require shipping, or `DIGITAL` for downloadable content.\\n\\nWhen passing `productType: PHYSICAL`, you must also pass `physicalProperties`. When passing `productType: DIGITAL`, you can optionally pass `digitalProperties` in each variant.'\n            )\n            .optional(),\n          handle: z\n            .string()\n            .describe(\n              \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n            )\n            .min(1)\n            .max(100)\n            .optional()\n            .nullable(),\n          currency: z\n            .string()\n            .describe(\n              'Currency used for the pricing of this product, in [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes) format.\\n\\nDefaults to the currency defined in the site settings, unless specified in the request\\'s `x-wix-currency` header.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n            )\n            .optional()\n            .nullable(),\n          breadcrumbsInfo: z\n            .object({\n              breadcrumbs: z\n                .array(\n                  z.object({\n                    categoryId: z\n                      .string()\n                      .describe('Category ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    categoryName: z\n                      .string()\n                      .describe('Category name.')\n                      .min(1)\n                      .max(80)\n                      .optional(),\n                    categorySlug: z\n                      .string()\n                      .describe('Category slug.')\n                      .min(1)\n                      .max(100)\n                      .optional(),\n                  })\n                )\n                .max(5)\n                .optional(),\n            })\n            .describe(\n              'Breadcrumbs of the `mainCategoryId`. Used to navigate to parent [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction). Useful for building navigation UI and for SEO purposes.\\n> **Note:** Returned only when you pass `\"BREADCRUMBS_INFO\"` to the `fields` array in Products API requests.'\n            )\n            .optional(),\n          actualPriceRange: z\n            .object({\n              minValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Minimum value.')\n                .optional(),\n              maxValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Maximum value.')\n                .optional(),\n            })\n            .describe(\n              'Minimum and maximum current selling prices across all product variants.'\n            )\n            .optional(),\n          compareAtPriceRange: z\n            .object({\n              minValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Minimum value.')\n                .optional(),\n              maxValue: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Maximum value.')\n                .optional(),\n            })\n            .describe(\n              'Minimum and maximum compare-at prices (original prices before discounts) across all product variants. Used to show savings to customers.'\n            )\n            .optional(),\n          variantsInfo: z\n            .object({\n              variants: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe('Variant ID.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional()\n                        .nullable(),\n                      visible: z\n                        .boolean()\n                        .describe(\n                          \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                        )\n                        .optional()\n                        .nullable(),\n                      sku: z\n                        .string()\n                        .describe('Variant SKU (stock keeping unit).')\n                        .min(1)\n                        .max(40)\n                        .optional()\n                        .nullable(),\n                      barcode: z\n                        .string()\n                        .describe('Variant barcode.')\n                        .min(1)\n                        .max(40)\n                        .optional()\n                        .nullable(),\n                      choices: z\n                        .array(\n                          z.object({\n                            optionChoiceIds: z\n                              .object({\n                                optionId: z\n                                  .string()\n                                  .describe('Option ID.')\n                                  .min(1)\n                                  .max(36)\n                                  .optional(),\n                                choiceId: z\n                                  .string()\n                                  .describe('Choice ID.')\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                              )\n                              .optional(),\n                            optionChoiceNames: z\n                              .object({\n                                optionName: z\n                                  .string()\n                                  .describe('Option name.')\n                                  .min(1)\n                                  .optional(),\n                                choiceName: z\n                                  .string()\n                                  .describe('Choice name.')\n                                  .min(1)\n                                  .optional(),\n                                renderType: z\n                                  .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                  .describe(\n                                    'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                              )\n                              .optional(),\n                          })\n                        )\n                        .min(0)\n                        .max(6)\n                        .optional(),\n                      price: z\n                        .object({\n                          actualPrice: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              \"Variant's current selling price. Must be greater than or equal to 0.\"\n                            )\n                            .optional(),\n                          compareAtPrice: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                            )\n                            .optional(),\n                          priceAfterDiscount: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                            )\n                            .optional(),\n                        })\n                        .describe('Variant price.')\n                        .optional(),\n                      revenueDetails: z\n                        .object({\n                          cost: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe('Item cost.')\n                            .optional(),\n                          profit: z\n                            .object({\n                              amount: z\n                                .string()\n                                .describe(\n                                  'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                )\n                                .optional(),\n                              formattedAmount: z\n                                .string()\n                                .describe(\n                                  'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(20)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                            )\n                            .optional(),\n                          profitMargin: z\n                            .number()\n                            .describe(\n                              'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                            )\n                            .min(0)\n                            .max(1)\n                            .optional(),\n                        })\n                        .describe(\n                          'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                        )\n                        .optional(),\n                      media: z\n                        .intersection(\n                          z.object({\n                            altText: z\n                              .string()\n                              .describe('Image alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                            displayName: z\n                              .string()\n                              .describe(\n                                \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                              )\n                              .max(80)\n                              .optional()\n                              .nullable(),\n                            mediaType: z\n                              .enum(['IMAGE', 'VIDEO'])\n                              .describe('Media type.')\n                              .optional(),\n                            thumbnail: z\n                              .object({\n                                url: z\n                                  .string()\n                                  .describe('Thumbnail url.')\n                                  .url()\n                                  .optional(),\n                                height: z\n                                  .number()\n                                  .int()\n                                  .describe('Thumbnail height.')\n                                  .optional(),\n                                width: z\n                                  .number()\n                                  .int()\n                                  .describe('Thumbnail width.')\n                                  .optional(),\n                                altText: z\n                                  .string()\n                                  .describe('Thumbnail alt text.')\n                                  .min(1)\n                                  .max(1000)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                              )\n                              .optional(),\n                            uploadId: z\n                              .string()\n                              .describe(\n                                'ID used to upload media to Wix Media Manager.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          }),\n                          z.intersection(\n                            z.xor([\n                              z.object({\n                                _id: z.never().optional(),\n                                url: z.never().optional(),\n                              }),\n                              z.object({\n                                url: z.never().optional(),\n                                _id: z\n                                  .string()\n                                  .describe(\n                                    'Set media by ID of an existing file in Wix Media Manager.'\n                                  )\n                                  .min(1)\n                                  .max(200),\n                              }),\n                              z.object({\n                                _id: z.never().optional(),\n                                url: z\n                                  .string()\n                                  .describe(\n                                    'Set media using an external media URL.'\n                                  )\n                                  .url(),\n                              }),\n                            ]),\n                            z.xor([\n                              z.object({\n                                image: z.never().optional(),\n                                video: z.never().optional(),\n                              }),\n                              z.object({\n                                video: z.never().optional(),\n                                image: z\n                                  .string()\n                                  .describe(\n                                    \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                  ),\n                              }),\n                              z.object({\n                                image: z.never().optional(),\n                                video: z\n                                  .string()\n                                  .describe(\n                                    \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                  ),\n                              }),\n                            ])\n                          )\n                        )\n                        .describe('Variant media.')\n                        .optional(),\n                      subscriptionPricesInfo: z\n                        .object({\n                          subscriptionPrices: z\n                            .array(\n                              z.object({\n                                subscriptionId: z\n                                  .string()\n                                  .describe('Subscription ID.')\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional(),\n                                price: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                  )\n                                  .optional(),\n                                pricePerUnit: z\n                                  .object({\n                                    value: z\n                                      .string()\n                                      .describe(\n                                        'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                      )\n                                      .optional(),\n                                    description: z\n                                      .string()\n                                      .describe(\n                                        'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                    priceAfterDiscount: z\n                                      .object({\n                                        amount: z\n                                          .string()\n                                          .describe(\n                                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                          )\n                                          .optional(),\n                                        formattedAmount: z\n                                          .string()\n                                          .describe(\n                                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe('Price per unit info.')\n                                  .optional(),\n                                priceAfterDiscount: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                  )\n                                  .optional(),\n                              })\n                            )\n                            .max(6)\n                            .optional(),\n                        })\n                        .describe(\n                          'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                        )\n                        .optional(),\n                      inventoryStatus: z\n                        .object({\n                          inStock: z\n                            .boolean()\n                            .describe('Whether the variant is in stock.')\n                            .optional(),\n                          preorderEnabled: z\n                            .boolean()\n                            .describe(\n                              'Whether preorder is enabled for this variant.'\n                            )\n                            .optional(),\n                        })\n                        .describe('Variant inventory status.')\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({\n                        physicalProperties: z.never().optional(),\n                        digitalProperties: z.never().optional(),\n                      }),\n                      z.object({\n                        digitalProperties: z.never().optional(),\n                        physicalProperties: z\n                          .object({\n                            weight: z\n                              .number()\n                              .describe(\n                                'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                              )\n                              .min(0)\n                              .max(999999999.99)\n                              .optional()\n                              .nullable(),\n                            pricePerUnit: z\n                              .object({\n                                settings: z\n                                  .object({\n                                    quantity: z\n                                      .number()\n                                      .describe(\n                                        'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                      )\n                                      .min(0.01)\n                                      .max(999999999.99)\n                                      .optional(),\n                                    measurementUnit: z\n                                      .enum([\n                                        'UNSPECIFIED',\n                                        'ML',\n                                        'CL',\n                                        'L',\n                                        'CBM',\n                                        'MG',\n                                        'G',\n                                        'KG',\n                                        'MM',\n                                        'CM',\n                                        'M',\n                                        'SQM',\n                                        'OZ',\n                                        'LB',\n                                        'FLOZ',\n                                        'PT',\n                                        'QT',\n                                        'GAL',\n                                        'IN',\n                                        'FT',\n                                        'YD',\n                                        'SQFT',\n                                      ])\n                                      .describe(\n                                        'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                  )\n                                  .optional(),\n                                value: z\n                                  .string()\n                                  .describe(\n                                    \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                  )\n                                  .optional(),\n                                description: z\n                                  .string()\n                                  .describe(\n                                    'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(100)\n                                  .optional()\n                                  .nullable(),\n                                priceAfterDiscount: z\n                                  .object({\n                                    amount: z\n                                      .string()\n                                      .describe(\n                                        'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                      )\n                                      .optional(),\n                                    formattedAmount: z\n                                      .string()\n                                      .describe(\n                                        'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(20)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                              )\n                              .optional(),\n                            productDimensions: z\n                              .object({\n                                length: z\n                                  .string()\n                                  .describe(\n                                    'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                width: z\n                                  .string()\n                                  .describe(\n                                    'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                height: z\n                                  .string()\n                                  .describe(\n                                    'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                unit: z\n                                  .enum([\n                                    'UNKNOWN_DIMENSIONS_UNIT',\n                                    'MM',\n                                    'CM',\n                                    'M',\n                                    'IN',\n                                    'FT',\n                                    'YD',\n                                  ])\n                                  .describe(\n                                    'Unit of measurement for dimensions (length, width, height).'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Product dimensions (length, width, height of the physical product).'\n                              )\n                              .optional(),\n                            packageDimensions: z\n                              .object({\n                                length: z\n                                  .string()\n                                  .describe(\n                                    'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                width: z\n                                  .string()\n                                  .describe(\n                                    'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                height: z\n                                  .string()\n                                  .describe(\n                                    'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                unit: z\n                                  .enum([\n                                    'UNKNOWN_DIMENSIONS_UNIT',\n                                    'MM',\n                                    'CM',\n                                    'M',\n                                    'IN',\n                                    'FT',\n                                    'YD',\n                                  ])\n                                  .describe(\n                                    'Unit of measurement for dimensions (length, width, height).'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Package dimensions (length, width, height of the shipping package).'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Physical properties. Must be passed when `productType: PHYSICAL`'\n                          ),\n                      }),\n                      z.object({\n                        physicalProperties: z.never().optional(),\n                        digitalProperties: z\n                          .object({\n                            digitalFile: z\n                              .object({\n                                _id: z\n                                  .string()\n                                  .describe('Media ID in media manager.')\n                                  .min(1)\n                                  .max(100)\n                                  .optional(),\n                                fileName: z\n                                  .string()\n                                  .describe('Original file name.')\n                                  .min(1)\n                                  .max(1000)\n                                  .optional(),\n                                fileSize: z\n                                  .string()\n                                  .describe('Original file size.')\n                                  .min(1)\n                                  .max(1000)\n                                  .optional()\n                                  .nullable(),\n                                fileType: z\n                                  .enum([\n                                    'UNSPECIFIED',\n                                    'SECURE_PICTURE',\n                                    'SECURE_VIDEO',\n                                    'SECURE_DOCUMENT',\n                                    'SECURE_MUSIC',\n                                    'SECURE_ARCHIVE',\n                                    'SECURE_RAW',\n                                  ])\n                                  .describe('File type.')\n                                  .optional(),\n                              })\n                              .describe(\n                                'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                              )\n                              .optional(),\n                          })\n                          .describe(\n                            'Digital properties. Must be passed when `productType: DIGITAL`'\n                          ),\n                      }),\n                    ])\n                  )\n                )\n                .min(1)\n                .max(1000)\n                .optional(),\n            })\n            .describe(\n              'Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nYou must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).'\n            )\n            .optional(),\n          purchaseEligibility: z\n            .object({ userCriteria: z.enum(['MEMBERS_ONLY']).optional() })\n            .describe('Purchase eligibility settings for the product.')\n            .optional(),\n          additionalRibbons: z\n            .array(\n              z.object({\n                _id: z\n                  .string()\n                  .describe('Ribbon ID.')\n                  .min(1)\n                  .max(36)\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Ribbon name.')\n                  .max(30)\n                  .optional()\n                  .nullable(),\n              })\n            )\n            .max(4)\n            .optional(),\n          extendedFields: z\n            .object({\n              namespaces: z\n                .record(z.string(), z.record(z.string(), z.any()))\n                .describe(\n                  'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                )\n                .optional(),\n            })\n            .describe(\n              'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n            )\n            .optional(),\n          tags: z\n            .object({\n              privateTags: z\n                .object({ tagIds: z.array(z.string()).max(100).optional() })\n                .describe(\n                  'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n                )\n                .optional(),\n              publicTags: z\n                .object({ tagIds: z.array(z.string()).max(100).optional() })\n                .describe(\n                  'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n                )\n                .optional(),\n            })\n            .describe('Tags')\n            .optional(),\n          subscriptionDetails: z\n            .object({\n              subscriptions: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe('Subscription ID.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional()\n                        .nullable(),\n                      title: z\n                        .string()\n                        .describe('Subscription title.')\n                        .min(1)\n                        .max(20)\n                        .optional(),\n                      description: z\n                        .string()\n                        .describe('Subscription description.')\n                        .max(60)\n                        .optional()\n                        .nullable(),\n                      visible: z\n                        .boolean()\n                        .describe(\n                          'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                        )\n                        .optional()\n                        .nullable(),\n                      frequency: z\n                        .enum(['UNDEFINED', 'DAY', 'WEEK', 'MONTH', 'YEAR'])\n                        .describe(\n                          'Frequency of recurring payment.\\nFor example, if `frequency: MONTH` and `billingCycles: 6`; payment will be made monthly for 6 months.'\n                        )\n                        .optional(),\n                      interval: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                        )\n                        .min(1)\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                      discount: z\n                        .intersection(\n                          z.object({\n                            type: z\n                              .enum(['AMOUNT', 'PERCENT'])\n                              .describe('Discount type.')\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              amountOff: z.never().optional(),\n                              percentOff: z.never().optional(),\n                            }),\n                            z.object({\n                              percentOff: z.never().optional(),\n                              amountOff: z\n                                .string()\n                                .describe(\n                                  'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                                ),\n                            }),\n                            z.object({\n                              amountOff: z.never().optional(),\n                              percentOff: z\n                                .number()\n                                .describe(\n                                  'Percentage subtracted from the variant price when calculating subscription prices.'\n                                )\n                                .min(0.1)\n                                .max(99.9),\n                            }),\n                          ])\n                        )\n                        .describe(\n                          'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                        )\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({\n                        autoRenewal: z.never().optional(),\n                        billingCycles: z.never().optional(),\n                      }),\n                      z.object({\n                        billingCycles: z.never().optional(),\n                        autoRenewal: z\n                          .boolean()\n                          .describe(\n                            'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                          ),\n                      }),\n                      z.object({\n                        autoRenewal: z.never().optional(),\n                        billingCycles: z\n                          .number()\n                          .int()\n                          .describe(\n                            'Number of billing cycles before subscription ends.'\n                          )\n                          .min(2)\n                          .max(999),\n                      }),\n                    ])\n                  )\n                )\n                .min(1)\n                .max(6)\n                .optional(),\n              allowOneTimePurchases: z\n                .boolean()\n                .describe(\n                  'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n                )\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n            )\n            .optional(),\n          variantSummary: z\n            .object({\n              variantCount: z\n                .number()\n                .int()\n                .describe('The total number of variants for the product.')\n                .optional(),\n              minPriceVariant: z\n                .intersection(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Variant ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    visible: z\n                      .boolean()\n                      .describe(\n                        \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                      )\n                      .optional()\n                      .nullable(),\n                    sku: z\n                      .string()\n                      .describe('Variant SKU (stock keeping unit).')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    barcode: z\n                      .string()\n                      .describe('Variant barcode.')\n                      .min(1)\n                      .max(40)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.object({\n                          optionChoiceIds: z\n                            .object({\n                              optionId: z\n                                .string()\n                                .describe('Option ID.')\n                                .min(1)\n                                .max(36)\n                                .optional(),\n                              choiceId: z\n                                .string()\n                                .describe('Choice ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                            )\n                            .optional(),\n                          optionChoiceNames: z\n                            .object({\n                              optionName: z\n                                .string()\n                                .describe('Option name.')\n                                .min(1)\n                                .optional(),\n                              choiceName: z\n                                .string()\n                                .describe('Choice name.')\n                                .min(1)\n                                .optional(),\n                              renderType: z\n                                .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                .describe(\n                                  'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .min(0)\n                      .max(6)\n                      .optional(),\n                    price: z\n                      .object({\n                        actualPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            \"Variant's current selling price. Must be greater than or equal to 0.\"\n                          )\n                          .optional(),\n                        compareAtPrice: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                          )\n                          .optional(),\n                        priceAfterDiscount: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                          )\n                          .optional(),\n                      })\n                      .describe('Variant price.')\n                      .optional(),\n                    revenueDetails: z\n                      .object({\n                        cost: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe('Item cost.')\n                          .optional(),\n                        profit: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                          )\n                          .optional(),\n                        profitMargin: z\n                          .number()\n                          .describe(\n                            'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                          )\n                          .min(0)\n                          .max(1)\n                          .optional(),\n                      })\n                      .describe(\n                        'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                      )\n                      .optional(),\n                    media: z\n                      .intersection(\n                        z.object({\n                          altText: z\n                            .string()\n                            .describe('Image alt text.')\n                            .min(1)\n                            .max(1000)\n                            .optional()\n                            .nullable(),\n                          displayName: z\n                            .string()\n                            .describe(\n                              \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                            )\n                            .max(80)\n                            .optional()\n                            .nullable(),\n                          mediaType: z\n                            .enum(['IMAGE', 'VIDEO'])\n                            .describe('Media type.')\n                            .optional(),\n                          thumbnail: z\n                            .object({\n                              url: z\n                                .string()\n                                .describe('Thumbnail url.')\n                                .url()\n                                .optional(),\n                              height: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail height.')\n                                .optional(),\n                              width: z\n                                .number()\n                                .int()\n                                .describe('Thumbnail width.')\n                                .optional(),\n                              altText: z\n                                .string()\n                                .describe('Thumbnail alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                          uploadId: z\n                            .string()\n                            .describe(\n                              'ID used to upload media to Wix Media Manager.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                        }),\n                        z.intersection(\n                          z.xor([\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z.never().optional(),\n                            }),\n                            z.object({\n                              url: z.never().optional(),\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Set media by ID of an existing file in Wix Media Manager.'\n                                )\n                                .min(1)\n                                .max(200),\n                            }),\n                            z.object({\n                              _id: z.never().optional(),\n                              url: z\n                                .string()\n                                .describe(\n                                  'Set media using an external media URL.'\n                                )\n                                .url(),\n                            }),\n                          ]),\n                          z.xor([\n                            z.object({\n                              image: z.never().optional(),\n                              video: z.never().optional(),\n                            }),\n                            z.object({\n                              video: z.never().optional(),\n                              image: z\n                                .string()\n                                .describe(\n                                  \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                ),\n                            }),\n                            z.object({\n                              image: z.never().optional(),\n                              video: z\n                                .string()\n                                .describe(\n                                  \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                ),\n                            }),\n                          ])\n                        )\n                      )\n                      .describe('Variant media.')\n                      .optional(),\n                    subscriptionPricesInfo: z\n                      .object({\n                        subscriptionPrices: z\n                          .array(\n                            z.object({\n                              subscriptionId: z\n                                .string()\n                                .describe('Subscription ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                              price: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                )\n                                .optional(),\n                              pricePerUnit: z\n                                .object({\n                                  value: z\n                                    .string()\n                                    .describe(\n                                      'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                    )\n                                    .optional(),\n                                  description: z\n                                    .string()\n                                    .describe(\n                                      'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                  priceAfterDiscount: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe('Price per unit info.')\n                                .optional(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                          )\n                          .max(6)\n                          .optional(),\n                      })\n                      .describe(\n                        'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    inventoryStatus: z\n                      .object({\n                        inStock: z\n                          .boolean()\n                          .describe('Whether the variant is in stock.')\n                          .optional(),\n                        preorderEnabled: z\n                          .boolean()\n                          .describe(\n                            'Whether preorder is enabled for this variant.'\n                          )\n                          .optional(),\n                      })\n                      .describe('Variant inventory status.')\n                      .optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z.never().optional(),\n                    }),\n                    z.object({\n                      digitalProperties: z.never().optional(),\n                      physicalProperties: z\n                        .object({\n                          weight: z\n                            .number()\n                            .describe(\n                              'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                            )\n                            .min(0)\n                            .max(999999999.99)\n                            .optional()\n                            .nullable(),\n                          pricePerUnit: z\n                            .object({\n                              settings: z\n                                .object({\n                                  quantity: z\n                                    .number()\n                                    .describe(\n                                      'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                    )\n                                    .min(0.01)\n                                    .max(999999999.99)\n                                    .optional(),\n                                  measurementUnit: z\n                                    .enum([\n                                      'UNSPECIFIED',\n                                      'ML',\n                                      'CL',\n                                      'L',\n                                      'CBM',\n                                      'MG',\n                                      'G',\n                                      'KG',\n                                      'MM',\n                                      'CM',\n                                      'M',\n                                      'SQM',\n                                      'OZ',\n                                      'LB',\n                                      'FLOZ',\n                                      'PT',\n                                      'QT',\n                                      'GAL',\n                                      'IN',\n                                      'FT',\n                                      'YD',\n                                      'SQFT',\n                                    ])\n                                    .describe(\n                                      'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                )\n                                .optional(),\n                              value: z\n                                .string()\n                                .describe(\n                                  \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                )\n                                .optional(),\n                              description: z\n                                .string()\n                                .describe(\n                                  'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                )\n                                .max(100)\n                                .optional()\n                                .nullable(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                            )\n                            .optional(),\n                          productDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Product dimensions (length, width, height of the physical product).'\n                            )\n                            .optional(),\n                          packageDimensions: z\n                            .object({\n                              length: z\n                                .string()\n                                .describe(\n                                  'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              width: z\n                                .string()\n                                .describe(\n                                  'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              height: z\n                                .string()\n                                .describe(\n                                  'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                )\n                                .optional()\n                                .nullable(),\n                              unit: z\n                                .enum([\n                                  'UNKNOWN_DIMENSIONS_UNIT',\n                                  'MM',\n                                  'CM',\n                                  'M',\n                                  'IN',\n                                  'FT',\n                                  'YD',\n                                ])\n                                .describe(\n                                  'Unit of measurement for dimensions (length, width, height).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Package dimensions (length, width, height of the shipping package).'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Physical properties. Must be passed when `productType: PHYSICAL`'\n                        ),\n                    }),\n                    z.object({\n                      physicalProperties: z.never().optional(),\n                      digitalProperties: z\n                        .object({\n                          digitalFile: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe('Media ID in media manager.')\n                                .min(1)\n                                .max(100)\n                                .optional(),\n                              fileName: z\n                                .string()\n                                .describe('Original file name.')\n                                .min(1)\n                                .max(1000)\n                                .optional(),\n                              fileSize: z\n                                .string()\n                                .describe('Original file size.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              fileType: z\n                                .enum([\n                                  'UNSPECIFIED',\n                                  'SECURE_PICTURE',\n                                  'SECURE_VIDEO',\n                                  'SECURE_DOCUMENT',\n                                  'SECURE_MUSIC',\n                                  'SECURE_ARCHIVE',\n                                  'SECURE_RAW',\n                                ])\n                                .describe('File type.')\n                                .optional(),\n                            })\n                            .describe(\n                              'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                            )\n                            .optional(),\n                        })\n                        .describe(\n                          'Digital properties. Must be passed when `productType: DIGITAL`'\n                        ),\n                    }),\n                  ])\n                )\n                .describe(\n                  'The variant with the lowest `actualPrice` among visible variants for this product.\\n\\nHidden variants are excluded; ties are broken by variant order. Empty if the product has no visible variants.\\n> **Note:** Returned only when you pass `\"MIN_PRICE_VARIANT\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n            })\n            .describe('The total number of variants for the product.')\n            .optional(),\n        }),\n        z.xor([\n          z.object({ physicalProperties: z.never().optional() }),\n          z.object({\n            physicalProperties: z\n              .object({\n                pricePerUnit: z\n                  .object({\n                    quantity: z\n                      .number()\n                      .describe(\n                        'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                      )\n                      .min(0.01)\n                      .max(999999999.99)\n                      .optional(),\n                    measurementUnit: z\n                      .enum([\n                        'UNSPECIFIED',\n                        'ML',\n                        'CL',\n                        'L',\n                        'CBM',\n                        'MG',\n                        'G',\n                        'KG',\n                        'MM',\n                        'CM',\n                        'M',\n                        'SQM',\n                        'OZ',\n                        'LB',\n                        'FLOZ',\n                        'PT',\n                        'QT',\n                        'GAL',\n                        'IN',\n                        'FT',\n                        'YD',\n                        'SQFT',\n                      ])\n                      .describe(\n                        'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                      )\n                      .optional(),\n                  })\n                  .describe(\n                    'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n                  )\n                  .optional(),\n                fulfillerId: z\n                  .string()\n                  .describe('Fulfiller ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                shippingWeightRange: z\n                  .object({\n                    minValue: z\n                      .number()\n                      .describe(\n                        'Minimum weight across all variants associated with this product.'\n                      )\n                      .min(0)\n                      .max(999999999.99)\n                      .optional(),\n                    maxValue: z\n                      .number()\n                      .describe(\n                        'Maximum weight across all variants associated with this product.'\n                      )\n                      .min(0)\n                      .max(999999999.99)\n                      .optional(),\n                  })\n                  .describe(\n                    'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n                  )\n                  .optional(),\n                pricePerUnitRange: z\n                  .object({\n                    minValue: z\n                      .object({\n                        value: z\n                          .string()\n                          .describe(\n                            \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                          )\n                          .optional(),\n                        description: z\n                          .string()\n                          .describe(\n                            'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                          )\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe('Minimum price per unit across all variants.')\n                      .optional(),\n                    maxValue: z\n                      .object({\n                        value: z\n                          .string()\n                          .describe(\n                            \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                          )\n                          .optional(),\n                        description: z\n                          .string()\n                          .describe(\n                            'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                          )\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe('Maximum price per unit across all variants.')\n                      .optional(),\n                  })\n                  .describe(\n                    'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n                  )\n                  .optional(),\n                weightMeasurementUnitInfo: z\n                  .object({\n                    weightMeasurementUnit: z\n                      .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                      .describe('Weight measurement unit.')\n                      .optional(),\n                  })\n                  .describe(\n                    'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n                  )\n                  .optional(),\n                deliveryProfileId: z\n                  .string()\n                  .describe('Delivery profile ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n              })\n              .describe(\n                'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n              ),\n          }),\n        ])\n      )\n    )\n    .optional(),\n  pagingMetadata: z\n    .object({\n      count: z\n        .number()\n        .int()\n        .describe('Number of items returned in the response.')\n        .optional()\n        .nullable(),\n      cursors: z\n        .object({\n          next: z\n            .string()\n            .describe(\n              'Cursor string pointing to the next page in the list of results.'\n            )\n            .max(16000)\n            .optional()\n            .nullable(),\n          prev: z\n            .string()\n            .describe(\n              'Cursor pointing to the previous page in the list of results.'\n            )\n            .max(16000)\n            .optional()\n            .nullable(),\n        })\n        .describe(\n          'Cursor strings that point to the next page, previous page, or both.'\n        )\n        .optional(),\n      hasNext: z\n        .boolean()\n        .describe(\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        .optional()\n        .nullable(),\n    })\n    .describe('Paging metadata.')\n    .optional(),\n});\nexport const CountProductsRequest = z.object({\n  options: z\n    .object({\n      filter: z\n        .record(z.string(), z.any())\n        .describe('Filter object.')\n        .optional()\n        .nullable(),\n      search: z\n        .object({\n          mode: z.enum(['OR', 'AND']).optional(),\n          expression: z\n            .string()\n            .describe('Search term or expression')\n            .max(100)\n            .optional()\n            .nullable(),\n          fields: z.array(z.string()).max(20).optional(),\n          fuzzy: z\n            .boolean()\n            .describe(\n              'Whether to enable the search function to use an algorithm to automatically find results that are close to the search expression, such as typos and declensions.'\n            )\n            .optional(),\n        })\n        .describe('Free text to match in searchable fields.')\n        .optional(),\n      returnNonVisibleProducts: z\n        .boolean()\n        .describe(\n          \"Whether to return non-visible products (`visible:false`). Your app must have the 'Product v3 read admin' (`SCOPE.STORES.PRODUCT_READ_ADMIN`) permission scope.\\n\\nDefault: `false`\"\n        )\n        .optional(),\n    })\n    .optional(),\n});\nexport const CountProductsResponse = z.object({\n  count: z.number().int().describe('Total number of products.').optional(),\n});\nexport const BulkUpdateProductVariantsByFilterRequest = z.object({\n  filter: z.record(z.string(), z.any()).describe('Filter object.'),\n  options: z.object({\n    variant: z\n      .intersection(\n        z.object({\n          _id: z\n            .string()\n            .describe('Variant ID.')\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          visible: z\n            .boolean()\n            .describe(\n              \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n            )\n            .optional()\n            .nullable(),\n          sku: z\n            .string()\n            .describe('Variant SKU (stock keeping unit).')\n            .min(1)\n            .max(40)\n            .optional()\n            .nullable(),\n          barcode: z\n            .string()\n            .describe('Variant barcode.')\n            .min(1)\n            .max(40)\n            .optional()\n            .nullable(),\n          choices: z\n            .array(\n              z.object({\n                optionChoiceIds: z\n                  .object({\n                    optionId: z\n                      .string()\n                      .describe('Option ID.')\n                      .min(1)\n                      .max(36)\n                      .optional(),\n                    choiceId: z\n                      .string()\n                      .describe('Choice ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                  })\n                  .describe(\n                    \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                  )\n                  .optional(),\n                optionChoiceNames: z\n                  .object({\n                    optionName: z\n                      .string()\n                      .describe('Option name.')\n                      .min(1)\n                      .optional(),\n                    choiceName: z\n                      .string()\n                      .describe('Choice name.')\n                      .min(1)\n                      .optional(),\n                    renderType: z\n                      .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                      .optional(),\n                  })\n                  .describe(\n                    'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                  )\n                  .optional(),\n              })\n            )\n            .min(0)\n            .max(6)\n            .optional(),\n          price: z\n            .object({\n              actualPrice: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  \"Variant's current selling price. Must be greater than or equal to 0.\"\n                )\n                .optional(),\n              compareAtPrice: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                )\n                .optional(),\n              priceAfterDiscount: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                )\n                .optional(),\n            })\n            .describe('Variant price.')\n            .optional(),\n          revenueDetails: z\n            .object({\n              cost: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe('Item cost.')\n                .optional(),\n              profit: z\n                .object({\n                  amount: z\n                    .string()\n                    .describe(\n                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                    )\n                    .optional(),\n                  formattedAmount: z\n                    .string()\n                    .describe(\n                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                    )\n                    .max(20)\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                )\n                .optional(),\n              profitMargin: z\n                .number()\n                .describe(\n                  'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                )\n                .min(0)\n                .max(1)\n                .optional(),\n            })\n            .describe(\n              'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n            )\n            .optional(),\n          media: z\n            .intersection(\n              z.object({\n                altText: z\n                  .string()\n                  .describe('Image alt text.')\n                  .min(1)\n                  .max(1000)\n                  .optional()\n                  .nullable(),\n                displayName: z\n                  .string()\n                  .describe(\n                    \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                  )\n                  .max(80)\n                  .optional()\n                  .nullable(),\n                mediaType: z.enum(['IMAGE', 'VIDEO']).optional(),\n                thumbnail: z\n                  .object({\n                    url: z.string().describe('Thumbnail url.').url().optional(),\n                    height: z\n                      .number()\n                      .int()\n                      .describe('Thumbnail height.')\n                      .optional(),\n                    width: z\n                      .number()\n                      .int()\n                      .describe('Thumbnail width.')\n                      .optional(),\n                    altText: z\n                      .string()\n                      .describe('Thumbnail alt text.')\n                      .min(1)\n                      .max(1000)\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe(\n                    'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                  )\n                  .optional(),\n                uploadId: z\n                  .string()\n                  .describe('ID used to upload media to Wix Media Manager.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional(),\n              }),\n              z.intersection(\n                z.xor([\n                  z.object({\n                    _id: z.never().optional(),\n                    url: z.never().optional(),\n                  }),\n                  z.object({\n                    url: z.never().optional(),\n                    _id: z\n                      .string()\n                      .describe(\n                        'Set media by ID of an existing file in Wix Media Manager.'\n                      )\n                      .min(1)\n                      .max(200),\n                  }),\n                  z.object({\n                    _id: z.never().optional(),\n                    url: z\n                      .string()\n                      .describe('Set media using an external media URL.')\n                      .url(),\n                  }),\n                ]),\n                z.xor([\n                  z.object({\n                    image: z.never().optional(),\n                    video: z.never().optional(),\n                  }),\n                  z.object({\n                    video: z.never().optional(),\n                    image: z\n                      .string()\n                      .describe(\n                        \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                      ),\n                  }),\n                  z.object({\n                    image: z.never().optional(),\n                    video: z\n                      .string()\n                      .describe(\n                        \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                      ),\n                  }),\n                ])\n              )\n            )\n            .describe('Variant media.')\n            .optional(),\n          subscriptionPricesInfo: z\n            .object({\n              subscriptionPrices: z\n                .array(\n                  z.object({\n                    subscriptionId: z\n                      .string()\n                      .describe('Subscription ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    price: z\n                      .object({\n                        amount: z\n                          .string()\n                          .describe(\n                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                          )\n                          .optional(),\n                        formattedAmount: z\n                          .string()\n                          .describe(\n                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(20)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                      )\n                      .optional(),\n                    pricePerUnit: z\n                      .object({\n                        value: z\n                          .string()\n                          .describe(\n                            'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                          )\n                          .optional(),\n                        description: z\n                          .string()\n                          .describe(\n                            'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(20)\n                          .optional()\n                          .nullable(),\n                        priceAfterDiscount: z\n                          .object({\n                            amount: z\n                              .string()\n                              .describe(\n                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                              )\n                              .optional(),\n                            formattedAmount: z\n                              .string()\n                              .describe(\n                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                              )\n                              .max(20)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                          )\n                          .optional(),\n                      })\n                      .describe('Price per unit info.')\n                      .optional(),\n                    priceAfterDiscount: z\n                      .object({\n                        amount: z\n                          .string()\n                          .describe(\n                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                          )\n                          .optional(),\n                        formattedAmount: z\n                          .string()\n                          .describe(\n                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(20)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                      )\n                      .optional(),\n                  })\n                )\n                .max(6)\n                .optional(),\n            })\n            .describe(\n              'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n            )\n            .optional(),\n          inventoryStatus: z\n            .object({\n              inStock: z\n                .boolean()\n                .describe('Whether the variant is in stock.')\n                .optional(),\n              preorderEnabled: z\n                .boolean()\n                .describe('Whether preorder is enabled for this variant.')\n                .optional(),\n            })\n            .describe('Variant inventory status.')\n            .optional(),\n        }),\n        z.xor([\n          z.object({\n            physicalProperties: z.never().optional(),\n            digitalProperties: z.never().optional(),\n          }),\n          z.object({\n            digitalProperties: z.never().optional(),\n            physicalProperties: z\n              .object({\n                weight: z\n                  .number()\n                  .describe(\n                    'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                  )\n                  .min(0)\n                  .max(999999999.99)\n                  .optional()\n                  .nullable(),\n                pricePerUnit: z\n                  .object({\n                    settings: z\n                      .object({\n                        quantity: z\n                          .number()\n                          .describe(\n                            'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                          )\n                          .min(0.01)\n                          .max(999999999.99)\n                          .optional(),\n                        measurementUnit: z\n                          .enum([\n                            'UNSPECIFIED',\n                            'ML',\n                            'CL',\n                            'L',\n                            'CBM',\n                            'MG',\n                            'G',\n                            'KG',\n                            'MM',\n                            'CM',\n                            'M',\n                            'SQM',\n                            'OZ',\n                            'LB',\n                            'FLOZ',\n                            'PT',\n                            'QT',\n                            'GAL',\n                            'IN',\n                            'FT',\n                            'YD',\n                            'SQFT',\n                          ])\n                          .describe(\n                            'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                      )\n                      .optional(),\n                    value: z\n                      .string()\n                      .describe(\n                        \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                      )\n                      .optional(),\n                    description: z\n                      .string()\n                      .describe(\n                        'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                      )\n                      .max(100)\n                      .optional()\n                      .nullable(),\n                    priceAfterDiscount: z\n                      .object({\n                        amount: z\n                          .string()\n                          .describe(\n                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                          )\n                          .optional(),\n                        formattedAmount: z\n                          .string()\n                          .describe(\n                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                          )\n                          .max(20)\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                      )\n                      .optional(),\n                  })\n                  .describe(\n                    \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                  )\n                  .optional(),\n                productDimensions: z\n                  .object({\n                    length: z\n                      .string()\n                      .describe(\n                        'Length. Measurement unit is handled at the system level (metric/imperial).'\n                      )\n                      .optional()\n                      .nullable(),\n                    width: z\n                      .string()\n                      .describe(\n                        'Width. Measurement unit is handled at the system level (metric/imperial).'\n                      )\n                      .optional()\n                      .nullable(),\n                    height: z\n                      .string()\n                      .describe(\n                        'Height. Measurement unit is handled at the system level (metric/imperial).'\n                      )\n                      .optional()\n                      .nullable(),\n                    unit: z\n                      .enum([\n                        'UNKNOWN_DIMENSIONS_UNIT',\n                        'MM',\n                        'CM',\n                        'M',\n                        'IN',\n                        'FT',\n                        'YD',\n                      ])\n                      .describe(\n                        'Unit of measurement for dimensions (length, width, height).'\n                      )\n                      .optional(),\n                  })\n                  .describe(\n                    'Product dimensions (length, width, height of the physical product).'\n                  )\n                  .optional(),\n                packageDimensions: z\n                  .object({\n                    length: z\n                      .string()\n                      .describe(\n                        'Length. Measurement unit is handled at the system level (metric/imperial).'\n                      )\n                      .optional()\n                      .nullable(),\n                    width: z\n                      .string()\n                      .describe(\n                        'Width. Measurement unit is handled at the system level (metric/imperial).'\n                      )\n                      .optional()\n                      .nullable(),\n                    height: z\n                      .string()\n                      .describe(\n                        'Height. Measurement unit is handled at the system level (metric/imperial).'\n                      )\n                      .optional()\n                      .nullable(),\n                    unit: z\n                      .enum([\n                        'UNKNOWN_DIMENSIONS_UNIT',\n                        'MM',\n                        'CM',\n                        'M',\n                        'IN',\n                        'FT',\n                        'YD',\n                      ])\n                      .describe(\n                        'Unit of measurement for dimensions (length, width, height).'\n                      )\n                      .optional(),\n                  })\n                  .describe(\n                    'Package dimensions (length, width, height of the shipping package).'\n                  )\n                  .optional(),\n              })\n              .describe(\n                'Physical properties. Must be passed when `productType: PHYSICAL`'\n              ),\n          }),\n          z.object({\n            physicalProperties: z.never().optional(),\n            digitalProperties: z\n              .object({\n                digitalFile: z\n                  .object({\n                    _id: z\n                      .string()\n                      .describe('Media ID in media manager.')\n                      .min(1)\n                      .max(100)\n                      .optional(),\n                    fileName: z\n                      .string()\n                      .describe('Original file name.')\n                      .min(1)\n                      .max(1000)\n                      .optional(),\n                    fileSize: z\n                      .string()\n                      .describe('Original file size.')\n                      .min(1)\n                      .max(1000)\n                      .optional()\n                      .nullable(),\n                    fileType: z\n                      .enum([\n                        'UNSPECIFIED',\n                        'SECURE_PICTURE',\n                        'SECURE_VIDEO',\n                        'SECURE_DOCUMENT',\n                        'SECURE_MUSIC',\n                        'SECURE_ARCHIVE',\n                        'SECURE_RAW',\n                      ])\n                      .describe('File type.')\n                      .optional(),\n                  })\n                  .describe(\n                    'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                  )\n                  .optional(),\n              })\n              .describe(\n                'Digital properties. Must be passed when `productType: DIGITAL`'\n              ),\n          }),\n        ])\n      )\n      .describe('Variant to update.'),\n    search: z\n      .object({\n        mode: z.enum(['OR', 'AND']).optional(),\n        expression: z\n          .string()\n          .describe('Search term or expression')\n          .max(100)\n          .optional()\n          .nullable(),\n        fields: z.array(z.string()).max(20).optional(),\n        fuzzy: z\n          .boolean()\n          .describe(\n            'Whether to enable the search function to use an algorithm to automatically find results that are close to the search expression, such as typos and declensions.'\n          )\n          .optional(),\n      })\n      .describe('Free text to match in searchable fields.')\n      .optional(),\n  }),\n});\nexport const BulkUpdateProductVariantsByFilterResponse = z.object({\n  jobId: z\n    .string()\n    .describe(\n      'Job ID.\\n\\nPass this ID to [Get Async Job](https://dev.wix.com/docs/api-reference/business-management/async-job/introduction) to retrieve job details and metadata..'\n    )\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    )\n    .optional(),\n});\nexport const BulkAdjustProductVariantsByFilterRequest = z.object({\n  filter: z.record(z.string(), z.any()).describe('Filter object.'),\n  options: z\n    .object({\n      cost: z\n        .intersection(\n          z.object({}),\n          z.xor([\n            z.object({\n              amount: z.never().optional(),\n              percentage: z.never().optional(),\n            }),\n            z.object({\n              percentage: z.never().optional(),\n              amount: z\n                .string()\n                .describe(\n                  'A decimal value to increase or reduce from the original value, can be negative.'\n                ),\n            }),\n            z.object({\n              amount: z.never().optional(),\n              percentage: z\n                .number()\n                .int()\n                .describe(\n                  'The percentage value to increase or reduce from the current value, can be negative.'\n                )\n                .min(-100)\n                .max(1000),\n            }),\n          ])\n        )\n        .describe('Cost adjustment.')\n        .optional(),\n      rounding: z\n        .enum(['NO_ROUNDING', 'CURRENCY_PRECISION', 'NEAREST_WHOLE_NUMBER'])\n        .optional(),\n      search: z\n        .object({\n          mode: z.enum(['OR', 'AND']).optional(),\n          expression: z\n            .string()\n            .describe('Search term or expression')\n            .max(100)\n            .optional()\n            .nullable(),\n          fields: z.array(z.string()).max(20).optional(),\n          fuzzy: z\n            .boolean()\n            .describe(\n              'Whether to enable the search function to use an algorithm to automatically find results that are close to the search expression, such as typos and declensions.'\n            )\n            .optional(),\n        })\n        .describe('Free text to match in searchable fields.')\n        .optional(),\n      actualPrice: z\n        .intersection(\n          z.object({}),\n          z.xor([\n            z.object({\n              amount: z.never().optional(),\n              percentage: z.never().optional(),\n            }),\n            z.object({\n              percentage: z.never().optional(),\n              amount: z\n                .string()\n                .describe(\n                  'A decimal value to increase or reduce from the original value, can be negative.'\n                ),\n            }),\n            z.object({\n              amount: z.never().optional(),\n              percentage: z\n                .number()\n                .int()\n                .describe(\n                  'The percentage value to increase or reduce from the current value, can be negative.'\n                )\n                .min(-100)\n                .max(1000),\n            }),\n          ])\n        )\n        .describe('Actual price adjustment.')\n        .optional(),\n      compareAtPrice: z\n        .intersection(\n          z.object({}),\n          z.xor([\n            z.object({\n              amount: z.never().optional(),\n              percentage: z.never().optional(),\n            }),\n            z.object({\n              percentage: z.never().optional(),\n              amount: z\n                .string()\n                .describe(\n                  'A decimal value to increase or reduce from the original value, can be negative.'\n                ),\n            }),\n            z.object({\n              amount: z.never().optional(),\n              percentage: z\n                .number()\n                .int()\n                .describe(\n                  'The percentage value to increase or reduce from the current value, can be negative.'\n                )\n                .min(-100)\n                .max(1000),\n            }),\n          ])\n        )\n        .describe('Compare at price adjustment.')\n        .optional(),\n      compareAtPriceDiscount: z\n        .intersection(\n          z.object({}),\n          z.xor([\n            z.object({\n              amount: z.never().optional(),\n              percentage: z.never().optional(),\n            }),\n            z.object({\n              percentage: z.never().optional(),\n              amount: z\n                .string()\n                .describe('A decimal value to reduce from the original value.'),\n            }),\n            z.object({\n              amount: z.never().optional(),\n              percentage: z\n                .number()\n                .int()\n                .describe(\n                  'The percentage value to reduce from the original value.'\n                )\n                .min(0)\n                .max(100),\n            }),\n          ])\n        )\n        .describe(\n          \"Set variant actualPrice from compareAtPrice by applying provided discount to it.\\nif compare-at-price doesn't exist, actualPrice will be set to compareAtPrice and the discount will be calculated from it.\\nFor example variant compareAtPrice 100$, variant actualPrice is 95$, requested `compareAtPriceDiscount.percentage` is 10, then old actual price ignored and new actual price set to 90 (100$ - 10%).\"\n        )\n        .optional(),\n    })\n    .optional(),\n});\nexport const BulkAdjustProductVariantsByFilterResponse = z.object({\n  jobId: z\n    .string()\n    .describe(\n      'Job ID.\\n\\nPass this ID to [Get Async Job](https://dev.wix.com/docs/api-reference/business-management/async-job/introduction) to retrieve job details and metadata..'\n    )\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    )\n    .optional(),\n});\nexport const BulkAddInfoSectionsToProductsByFilterRequest = z.object({\n  filter: z.record(z.string(), z.any()).describe('Filter object.'),\n  options: z.object({\n    infoSectionIds: z.array(z.string()).min(1).max(10),\n    search: z\n      .object({\n        mode: z.enum(['OR', 'AND']).optional(),\n        expression: z\n          .string()\n          .describe('Search term or expression')\n          .max(100)\n          .optional()\n          .nullable(),\n        fields: z.array(z.string()).max(20).optional(),\n        fuzzy: z\n          .boolean()\n          .describe(\n            'Whether to enable the search function to use an algorithm to automatically find results that are close to the search expression, such as typos and declensions.'\n          )\n          .optional(),\n      })\n      .describe('Free text to match in searchable fields.')\n      .optional(),\n  }),\n});\nexport const BulkAddInfoSectionsToProductsByFilterResponse = z.object({\n  jobId: z\n    .string()\n    .describe(\n      'Job ID.\\n\\nPass this ID to [Get Async Job](https://dev.wix.com/docs/api-reference/business-management/async-job/introduction) to retrieve job details and metadata..'\n    )\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    )\n    .optional(),\n});\nexport const BulkAddInfoSectionsToProductsRequest = z.object({\n  products: z\n    .array(\n      z.object({\n        productId: z.string().describe('Product ID.').min(1).max(36).optional(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.'\n          )\n          .optional(),\n      })\n    )\n    .min(1)\n    .max(100),\n  options: z.object({\n    infoSectionIds: z.array(z.string()).min(1).max(10),\n    returnEntity: z\n      .boolean()\n      .describe(\n        'Whether to return the full updated product entities in the response.\\n\\nDefault: `false`'\n      )\n      .optional(),\n    fields: z\n      .array(\n        z.enum([\n          'URL',\n          'CURRENCY',\n          'INFO_SECTION',\n          'MERCHANT_DATA',\n          'PLAIN_DESCRIPTION',\n          'INFO_SECTION_PLAIN_DESCRIPTION',\n          'SUBSCRIPTION_PRICES_INFO',\n          'BREADCRUMBS_INFO',\n          'WEIGHT_MEASUREMENT_UNIT_INFO',\n          'VARIANT_OPTION_CHOICE_NAMES',\n          'MEDIA_ITEMS_INFO',\n          'DESCRIPTION',\n          'DIRECT_CATEGORIES_INFO',\n          'ALL_CATEGORIES_INFO',\n          'INFO_SECTION_DESCRIPTION',\n          'THUMBNAIL',\n          'PRODUCT_CHOICES_MEDIA_REFERENCES',\n          'PRODUCT_CHOICES_DISPLAY_IMAGE',\n          'MIN_PRICE_VARIANT',\n          'DISCOUNT_INFO',\n        ])\n      )\n      .max(100)\n      .optional(),\n  }),\n});\nexport const BulkAddInfoSectionsToProductsResponse = z.object({\n  results: z\n    .array(\n      z.object({\n        itemMetadata: z\n          .object({\n            _id: z\n              .string()\n              .describe(\n                \"Item ID. Should always be available, unless it's impossible (for example, when failing to create an item).\"\n              )\n              .min(1)\n              .max(36)\n              .optional()\n              .nullable(),\n            originalIndex: z\n              .number()\n              .int()\n              .describe(\n                'Index of the item within the request array. Allows for correlation between request and response items.'\n              )\n              .optional(),\n            success: z\n              .boolean()\n              .describe(\n                'Whether the requested action was successful for this item. When `false`, the `error` field is populated.'\n              )\n              .optional(),\n            error: z\n              .object({\n                code: z.string().describe('Error code.').optional(),\n                description: z\n                  .string()\n                  .describe('Description of the error.')\n                  .optional(),\n                data: z\n                  .record(z.string(), z.any())\n                  .describe('Data related to the error.')\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Details about the error in case of failure.')\n              .optional(),\n          })\n          .describe('Information about successful action or error for failure.')\n          .optional(),\n        item: z\n          .intersection(\n            z.object({\n              _id: z\n                .string()\n                .describe('Product ID.')\n                .min(1)\n                .max(36)\n                .optional()\n                .nullable(),\n              revision: z\n                .string()\n                .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                .describe(\n                  'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product.'\n                )\n                .optional()\n                .nullable(),\n              _createdDate: z\n                .date()\n                .describe('Date and time the product was created.')\n                .optional()\n                .nullable(),\n              _updatedDate: z\n                .date()\n                .describe('Date and time the product was updated.')\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Product name. Translatable.')\n                .min(1)\n                .max(80)\n                .optional()\n                .nullable(),\n              slug: z\n                .string()\n                .describe(\n                  'Product slug. A URL-friendly identifier used in the product page address.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n                )\n                .min(1)\n                .max(300)\n                .optional()\n                .nullable(),\n              url: z\n                .string()\n                .describe(\n                  'URL to the site\\'s product page.\\n\\n> **Note:** Returned only when you pass `\"URL\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              description: z\n                .any()\n                .describe(\n                  'Product description using rich content.\\n> **Note:** Returned only when you pass `\"DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                )\n                .optional(),\n              plainDescription: z\n                .string()\n                .describe(\n                  'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                )\n                .max(16000)\n                .optional()\n                .nullable(),\n              visible: z\n                .boolean()\n                .describe(\n                  \"Whether the product is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the default variant's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                )\n                .optional()\n                .nullable(),\n              visibleInPos: z\n                .boolean()\n                .describe(\n                  'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n                )\n                .optional()\n                .nullable(),\n              media: z\n                .object({\n                  main: z\n                    .intersection(\n                      z.object({\n                        altText: z\n                          .string()\n                          .describe('Image alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        displayName: z\n                          .string()\n                          .describe(\n                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                          )\n                          .max(80)\n                          .optional()\n                          .nullable(),\n                        mediaType: z\n                          .enum(['IMAGE', 'VIDEO'])\n                          .describe('Media type.')\n                          .optional(),\n                        thumbnail: z\n                          .object({\n                            url: z\n                              .string()\n                              .describe('Thumbnail url.')\n                              .url()\n                              .optional(),\n                            height: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail height.')\n                              .optional(),\n                            width: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail width.')\n                              .optional(),\n                            altText: z\n                              .string()\n                              .describe('Thumbnail alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        uploadId: z\n                          .string()\n                          .describe(\n                            'ID used to upload media to Wix Media Manager.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                      }),\n                      z.intersection(\n                        z.xor([\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z.never().optional(),\n                          }),\n                          z.object({\n                            url: z.never().optional(),\n                            _id: z\n                              .string()\n                              .describe(\n                                'Set media by ID of an existing file in Wix Media Manager.'\n                              )\n                              .min(1)\n                              .max(200),\n                          }),\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z\n                              .string()\n                              .describe(\n                                'Set media using an external media URL.'\n                              )\n                              .url(),\n                          }),\n                        ]),\n                        z.xor([\n                          z.object({\n                            image: z.never().optional(),\n                            video: z.never().optional(),\n                          }),\n                          z.object({\n                            video: z.never().optional(),\n                            image: z\n                              .string()\n                              .describe(\n                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                              ),\n                          }),\n                          z.object({\n                            image: z.never().optional(),\n                            video: z\n                              .string()\n                              .describe(\n                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                    .describe(\n                      'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n                    )\n                    .optional(),\n                  itemsInfo: z\n                    .object({\n                      items: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              altText: z\n                                .string()\n                                .describe('Image alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              displayName: z\n                                .string()\n                                .describe(\n                                  \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                )\n                                .max(80)\n                                .optional()\n                                .nullable(),\n                              mediaType: z\n                                .enum(['IMAGE', 'VIDEO'])\n                                .describe('Media type.')\n                                .optional(),\n                              thumbnail: z\n                                .object({\n                                  url: z\n                                    .string()\n                                    .describe('Thumbnail url.')\n                                    .url()\n                                    .optional(),\n                                  height: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail height.')\n                                    .optional(),\n                                  width: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail width.')\n                                    .optional(),\n                                  altText: z\n                                    .string()\n                                    .describe('Thumbnail alt text.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                )\n                                .optional(),\n                              uploadId: z\n                                .string()\n                                .describe(\n                                  'ID used to upload media to Wix Media Manager.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                            }),\n                            z.intersection(\n                              z.xor([\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z.never().optional(),\n                                }),\n                                z.object({\n                                  url: z.never().optional(),\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Set media by ID of an existing file in Wix Media Manager.'\n                                    )\n                                    .min(1)\n                                    .max(200),\n                                }),\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z\n                                    .string()\n                                    .describe(\n                                      'Set media using an external media URL.'\n                                    )\n                                    .url(),\n                                }),\n                              ]),\n                              z.xor([\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z.never().optional(),\n                                }),\n                                z.object({\n                                  video: z.never().optional(),\n                                  image: z\n                                    .string()\n                                    .describe(\n                                      \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                    ),\n                                }),\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z\n                                    .string()\n                                    .describe(\n                                      \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                    ),\n                                }),\n                              ])\n                            )\n                          )\n                        )\n                        .max(50)\n                        .optional(),\n                    })\n                    .describe(\n                      'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Product media items. For a detailed explanation of product media, see [About Product Media](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/about-product-media).'\n                )\n                .optional(),\n              seoData: z\n                .object({\n                  tags: z\n                    .array(\n                      z.object({\n                        type: z\n                          .string()\n                          .describe(\n                            'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                          )\n                          .optional(),\n                        props: z\n                          .record(z.string(), z.any())\n                          .describe(\n                            'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                          )\n                          .optional()\n                          .nullable(),\n                        meta: z\n                          .record(z.string(), z.any())\n                          .describe(\n                            'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                          )\n                          .optional()\n                          .nullable(),\n                        children: z\n                          .string()\n                          .describe(\n                            'SEO tag inner content. For example, `<title> inner content </title>`.'\n                          )\n                          .optional(),\n                        custom: z\n                          .boolean()\n                          .describe(\n                            'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                          )\n                          .optional(),\n                        disabled: z\n                          .boolean()\n                          .describe(\n                            \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                          )\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                  settings: z\n                    .object({\n                      preventAutoRedirect: z\n                        .boolean()\n                        .describe(\n                          'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n                        )\n                        .optional(),\n                      keywords: z\n                        .array(\n                          z.object({\n                            term: z\n                              .string()\n                              .describe('Keyword value.')\n                              .optional(),\n                            isMain: z\n                              .boolean()\n                              .describe(\n                                'Whether the keyword is the main focus keyword.'\n                              )\n                              .optional(),\n                            origin: z\n                              .string()\n                              .describe(\n                                'The source that added the keyword terms to the SEO settings.'\n                              )\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                        )\n                        .max(5)\n                        .optional(),\n                    })\n                    .describe('SEO general settings.')\n                    .optional(),\n                })\n                .describe('Product SEO data.')\n                .optional(),\n              taxGroupId: z\n                .string()\n                .describe(\n                  '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              options: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe(\n                          'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n                        )\n                        .min(1)\n                        .max(36)\n                        .optional()\n                        .nullable(),\n                      name: z\n                        .string()\n                        .describe('Option name.')\n                        .min(1)\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                      optionRenderType: z\n                        .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                        .describe('Option render type.')\n                        .optional(),\n                      key: z\n                        .string()\n                        .describe(\n                          'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                        )\n                        .min(1)\n                        .max(50)\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({ choicesSettings: z.never().optional() }),\n                      z.object({\n                        choicesSettings: z\n                          .object({\n                            choices: z\n                              .array(\n                                z.intersection(\n                                  z.object({\n                                    choiceId: z\n                                      .string()\n                                      .describe('Choice ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    linkedMedia: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({\n                                            altText: z\n                                              .string()\n                                              .describe('Image alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                            displayName: z\n                                              .string()\n                                              .describe(\n                                                \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                              )\n                                              .max(80)\n                                              .optional()\n                                              .nullable(),\n                                            mediaType: z\n                                              .enum(['IMAGE', 'VIDEO'])\n                                              .describe('Media type.')\n                                              .optional(),\n                                            thumbnail: z\n                                              .object({\n                                                url: z\n                                                  .string()\n                                                  .describe('Thumbnail url.')\n                                                  .url()\n                                                  .optional(),\n                                                height: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail height.')\n                                                  .optional(),\n                                                width: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail width.')\n                                                  .optional(),\n                                                altText: z\n                                                  .string()\n                                                  .describe(\n                                                    'Thumbnail alt text.'\n                                                  )\n                                                  .min(1)\n                                                  .max(1000)\n                                                  .optional()\n                                                  .nullable(),\n                                              })\n                                              .describe(\n                                                'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .optional(),\n                                            uploadId: z\n                                              .string()\n                                              .describe(\n                                                'ID used to upload media to Wix Media Manager.'\n                                              )\n                                              .regex(\n                                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                                'Must be a valid GUID'\n                                              )\n                                              .optional(),\n                                          }),\n                                          z.intersection(\n                                            z.xor([\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                url: z.never().optional(),\n                                                _id: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media by ID of an existing file in Wix Media Manager.'\n                                                  )\n                                                  .min(1)\n                                                  .max(200),\n                                              }),\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media using an external media URL.'\n                                                  )\n                                                  .url(),\n                                              }),\n                                            ]),\n                                            z.xor([\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                video: z.never().optional(),\n                                                image: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                                  ),\n                                              }),\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                                  ),\n                                              }),\n                                            ])\n                                          )\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                    choiceType: z\n                                      .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                      .describe('Choice type.')\n                                      .optional(),\n                                    key: z\n                                      .string()\n                                      .describe(\n                                        'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                      )\n                                      .min(1)\n                                      .max(50)\n                                      .optional(),\n                                    name: z\n                                      .string()\n                                      .describe(\n                                        'Choice name. For text choices, this field also contains the choice value.'\n                                      )\n                                      .min(1)\n                                      .max(50)\n                                      .optional()\n                                      .nullable(),\n                                    inStock: z\n                                      .boolean()\n                                      .describe(\n                                        'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                                      )\n                                      .optional(),\n                                    visible: z\n                                      .boolean()\n                                      .describe(\n                                        'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                                      )\n                                      .optional(),\n                                    displayImage: z\n                                      .string()\n                                      .describe(\n                                        'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                      )\n                                      .optional(),\n                                    media: z\n                                      .object({\n                                        items: z\n                                          .array(\n                                            z.intersection(\n                                              z.object({}),\n                                              z.xor([\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z.never().optional(),\n                                                }),\n                                                z.object({\n                                                  url: z.never().optional(),\n                                                  mediaId: z\n                                                    .string()\n                                                    .describe(\n                                                      'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                    )\n                                                    .min(1)\n                                                    .max(200),\n                                                }),\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z\n                                                    .string()\n                                                    .describe(\n                                                      'External media URL. Can be used only on write.'\n                                                    )\n                                                    .url(),\n                                                }),\n                                              ])\n                                            )\n                                          )\n                                          .max(15)\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                      )\n                                      .optional(),\n                                  }),\n                                  z.xor([\n                                    z.object({\n                                      colorCode: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      colorCode: z\n                                        .string()\n                                        .describe(\n                                          'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                                        )\n                                        .min(3)\n                                        .max(20),\n                                    }),\n                                  ])\n                                )\n                              )\n                              .min(1)\n                              .max(100)\n                              .optional(),\n                          })\n                          .describe('Choices settings.'),\n                      }),\n                    ])\n                  )\n                )\n                .max(6)\n                .optional(),\n              modifiers: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe(\n                          'ID of a customization with `customizationType: MODIFIER`.'\n                        )\n                        .min(1)\n                        .max(36)\n                        .optional()\n                        .nullable(),\n                      name: z\n                        .string()\n                        .describe('Modifier title.')\n                        .min(1)\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                      modifierRenderType: z\n                        .enum(['FREE_TEXT', 'TEXT_CHOICES', 'SWATCH_CHOICES'])\n                        .describe('Modifier render type.')\n                        .optional(),\n                      mandatory: z\n                        .boolean()\n                        .describe(\n                          'Whether customer input is required for this modifier.'\n                        )\n                        .optional(),\n                      key: z\n                        .string()\n                        .describe(\n                          'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                        )\n                        .min(1)\n                        .max(50)\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({\n                        freeTextSettings: z.never().optional(),\n                        choicesSettings: z.never().optional(),\n                      }),\n                      z.object({\n                        choicesSettings: z.never().optional(),\n                        freeTextSettings: z\n                          .object({\n                            minCharCount: z\n                              .number()\n                              .int()\n                              .describe('Minimum number of characters.')\n                              .optional(),\n                            maxCharCount: z\n                              .number()\n                              .int()\n                              .describe('Maximum number of characters.')\n                              .max(500)\n                              .optional(),\n                            defaultAddedPrice: z\n                              .string()\n                              .describe(\n                                \"Default amount to be added to the product's price.\"\n                              )\n                              .optional()\n                              .nullable(),\n                            title: z\n                              .string()\n                              .describe(\n                                'Title of the text to be input by the customer.'\n                              )\n                              .min(1)\n                              .max(150)\n                              .optional(),\n                            key: z\n                              .string()\n                              .describe(\n                                'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                              )\n                              .min(1)\n                              .max(150)\n                              .optional(),\n                          })\n                          .describe('Free text modifier settings.'),\n                      }),\n                      z.object({\n                        freeTextSettings: z.never().optional(),\n                        choicesSettings: z\n                          .object({\n                            choices: z\n                              .array(\n                                z.intersection(\n                                  z.object({\n                                    choiceId: z\n                                      .string()\n                                      .describe('Choice ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    linkedMedia: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({\n                                            altText: z\n                                              .string()\n                                              .describe('Image alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                            displayName: z\n                                              .string()\n                                              .describe(\n                                                \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                              )\n                                              .max(80)\n                                              .optional()\n                                              .nullable(),\n                                            mediaType: z\n                                              .enum(['IMAGE', 'VIDEO'])\n                                              .describe('Media type.')\n                                              .optional(),\n                                            thumbnail: z\n                                              .object({\n                                                url: z\n                                                  .string()\n                                                  .describe('Thumbnail url.')\n                                                  .url()\n                                                  .optional(),\n                                                height: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail height.')\n                                                  .optional(),\n                                                width: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail width.')\n                                                  .optional(),\n                                                altText: z\n                                                  .string()\n                                                  .describe(\n                                                    'Thumbnail alt text.'\n                                                  )\n                                                  .min(1)\n                                                  .max(1000)\n                                                  .optional()\n                                                  .nullable(),\n                                              })\n                                              .describe(\n                                                'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .optional(),\n                                            uploadId: z\n                                              .string()\n                                              .describe(\n                                                'ID used to upload media to Wix Media Manager.'\n                                              )\n                                              .regex(\n                                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                                'Must be a valid GUID'\n                                              )\n                                              .optional(),\n                                          }),\n                                          z.intersection(\n                                            z.xor([\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                url: z.never().optional(),\n                                                _id: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media by ID of an existing file in Wix Media Manager.'\n                                                  )\n                                                  .min(1)\n                                                  .max(200),\n                                              }),\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media using an external media URL.'\n                                                  )\n                                                  .url(),\n                                              }),\n                                            ]),\n                                            z.xor([\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                video: z.never().optional(),\n                                                image: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                                  ),\n                                              }),\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                                  ),\n                                              }),\n                                            ])\n                                          )\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                    choiceType: z\n                                      .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                      .describe('Choice type.')\n                                      .optional(),\n                                    key: z\n                                      .string()\n                                      .describe(\n                                        'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                      )\n                                      .min(1)\n                                      .max(50)\n                                      .optional(),\n                                    name: z\n                                      .string()\n                                      .describe('Choice name.')\n                                      .min(1)\n                                      .max(50)\n                                      .optional()\n                                      .nullable(),\n                                    addedPrice: z\n                                      .string()\n                                      .describe('Added price.')\n                                      .optional()\n                                      .nullable(),\n                                    displayImage: z\n                                      .string()\n                                      .describe(\n                                        'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                      )\n                                      .optional(),\n                                    media: z\n                                      .object({\n                                        items: z\n                                          .array(\n                                            z.intersection(\n                                              z.object({}),\n                                              z.xor([\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z.never().optional(),\n                                                }),\n                                                z.object({\n                                                  url: z.never().optional(),\n                                                  mediaId: z\n                                                    .string()\n                                                    .describe(\n                                                      'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                    )\n                                                    .min(1)\n                                                    .max(200),\n                                                }),\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z\n                                                    .string()\n                                                    .describe(\n                                                      'External media URL. Can be used only on write.'\n                                                    )\n                                                    .url(),\n                                                }),\n                                              ])\n                                            )\n                                          )\n                                          .max(15)\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                      )\n                                      .optional(),\n                                  }),\n                                  z.xor([\n                                    z.object({\n                                      colorCode: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      colorCode: z\n                                        .string()\n                                        .describe(\n                                          'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                                        )\n                                        .min(3)\n                                        .max(20),\n                                    }),\n                                  ])\n                                )\n                              )\n                              .min(1)\n                              .max(100)\n                              .optional(),\n                          })\n                          .describe('Choice settings.'),\n                      }),\n                    ])\n                  )\n                )\n                .max(10)\n                .optional(),\n              brand: z\n                .object({\n                  _id: z\n                    .string()\n                    .describe('Brand ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Brand name.')\n                    .max(50)\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  \"Product [brand](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/brands-v3/introduction).\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n                )\n                .optional(),\n              infoSections: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Info section ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    uniqueName: z\n                      .string()\n                      .describe(\n                        'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                      )\n                      .max(100)\n                      .optional()\n                      .nullable(),\n                    title: z\n                      .string()\n                      .describe(\n                        'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                      )\n                      .min(1)\n                      .max(50)\n                      .optional()\n                      .nullable(),\n                    description: z\n                      .any()\n                      .describe(\n                        'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                      )\n                      .optional(),\n                    plainDescription: z\n                      .string()\n                      .describe(\n                        'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                      )\n                      .max(16000)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(10)\n                .optional(),\n              ribbon: z\n                .object({\n                  _id: z\n                    .string()\n                    .describe('Ribbon ID.')\n                    .min(1)\n                    .max(36)\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Ribbon name.')\n                    .max(30)\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  \"Primary [ribbon](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/ribbons-v3/introduction) displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n                )\n                .optional(),\n              directCategoriesInfo: z\n                .object({\n                  categories: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('Category ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        index: z\n                          .number()\n                          .int()\n                          .describe(\n                            'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                          )\n                          .min(0)\n                          .max(200)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(2000)\n                    .optional(),\n                })\n                .describe(\n                  'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product.\\n\\nUpdated automatically when a product is added/removed from a category, when an item is moved within a category, or when a category is deleted.\\n> **Note:** Returned only when you pass `\"DIRECT_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              allCategoriesInfo: z\n                .object({\n                  categories: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('Category ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        index: z\n                          .number()\n                          .int()\n                          .describe(\n                            'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                          )\n                          .min(0)\n                          .max(200)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(2000)\n                    .optional(),\n                })\n                .describe(\n                  'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product, as well as their parent categories.\\n> **Note:** Returned only when you pass `\"ALL_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              mainCategoryId: z\n                .string()\n                .describe(\n                  'The ID of the product\\'s primary direct [category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction), which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              costRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum value.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum value.')\n                    .optional(),\n                })\n                .describe(\n                  'Product cost range - minimum and maximum costs of all product variants.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                )\n                .optional(),\n              inventory: z\n                .object({\n                  availabilityStatus: z\n                    .enum([\n                      'IN_STOCK',\n                      'OUT_OF_STOCK',\n                      'PARTIALLY_OUT_OF_STOCK',\n                    ])\n                    .describe('Current availability status.')\n                    .optional(),\n                  preorderStatus: z\n                    .enum(['ENABLED', 'DISABLED', 'PARTIALLY_ENABLED'])\n                    .describe('Current preorder status.')\n                    .optional(),\n                  preorderAvailability: z\n                    .enum(['ALL_VARIANTS', 'NO_VARIANTS', 'SOME_VARIANTS'])\n                    .describe('Preorder availability status.')\n                    .optional(),\n                })\n                .describe(\n                  'Product inventory info.\\n\\n> **Note:** This field reflects the aggregated inventory status from the default location only. Use the [Inventory Items API](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/inventory-items-v3/introduction) to manage inventory for specific locations. Learn more about [inventory management](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-inventory-management).'\n                )\n                .optional(),\n              productType: z\n                .enum(['PHYSICAL', 'DIGITAL'])\n                .describe(\n                  'Product type: `PHYSICAL` for tangible goods that require shipping, or `DIGITAL` for downloadable content.\\n\\nWhen passing `productType: PHYSICAL`, you must also pass `physicalProperties`. When passing `productType: DIGITAL`, you can optionally pass `digitalProperties` in each variant.'\n                )\n                .optional(),\n              handle: z\n                .string()\n                .describe(\n                  \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n                )\n                .min(1)\n                .max(100)\n                .optional()\n                .nullable(),\n              currency: z\n                .string()\n                .describe(\n                  'Currency used for the pricing of this product, in [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes) format.\\n\\nDefaults to the currency defined in the site settings, unless specified in the request\\'s `x-wix-currency` header.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                )\n                .optional()\n                .nullable(),\n              breadcrumbsInfo: z\n                .object({\n                  breadcrumbs: z\n                    .array(\n                      z.object({\n                        categoryId: z\n                          .string()\n                          .describe('Category ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        categoryName: z\n                          .string()\n                          .describe('Category name.')\n                          .min(1)\n                          .max(80)\n                          .optional(),\n                        categorySlug: z\n                          .string()\n                          .describe('Category slug.')\n                          .min(1)\n                          .max(100)\n                          .optional(),\n                      })\n                    )\n                    .max(5)\n                    .optional(),\n                })\n                .describe(\n                  'Breadcrumbs of the `mainCategoryId`. Used to navigate to parent [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction). Useful for building navigation UI and for SEO purposes.\\n> **Note:** Returned only when you pass `\"BREADCRUMBS_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              actualPriceRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum value.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum value.')\n                    .optional(),\n                })\n                .describe(\n                  'Minimum and maximum current selling prices across all product variants.'\n                )\n                .optional(),\n              compareAtPriceRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum value.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum value.')\n                    .optional(),\n                })\n                .describe(\n                  'Minimum and maximum compare-at prices (original prices before discounts) across all product variants. Used to show savings to customers.'\n                )\n                .optional(),\n              variantsInfo: z\n                .object({\n                  variants: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          _id: z\n                            .string()\n                            .describe('Variant ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          visible: z\n                            .boolean()\n                            .describe(\n                              \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                            )\n                            .optional()\n                            .nullable(),\n                          sku: z\n                            .string()\n                            .describe('Variant SKU (stock keeping unit).')\n                            .min(1)\n                            .max(40)\n                            .optional()\n                            .nullable(),\n                          barcode: z\n                            .string()\n                            .describe('Variant barcode.')\n                            .min(1)\n                            .max(40)\n                            .optional()\n                            .nullable(),\n                          choices: z\n                            .array(\n                              z.object({\n                                optionChoiceIds: z\n                                  .object({\n                                    optionId: z\n                                      .string()\n                                      .describe('Option ID.')\n                                      .min(1)\n                                      .max(36)\n                                      .optional(),\n                                    choiceId: z\n                                      .string()\n                                      .describe('Choice ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                                  )\n                                  .optional(),\n                                optionChoiceNames: z\n                                  .object({\n                                    optionName: z\n                                      .string()\n                                      .describe('Option name.')\n                                      .min(1)\n                                      .optional(),\n                                    choiceName: z\n                                      .string()\n                                      .describe('Choice name.')\n                                      .min(1)\n                                      .optional(),\n                                    renderType: z\n                                      .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                      .describe(\n                                        'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .optional(),\n                              })\n                            )\n                            .min(0)\n                            .max(6)\n                            .optional(),\n                          price: z\n                            .object({\n                              actualPrice: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  \"Variant's current selling price. Must be greater than or equal to 0.\"\n                                )\n                                .optional(),\n                              compareAtPrice: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                                )\n                                .optional(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                            .describe('Variant price.')\n                            .optional(),\n                          revenueDetails: z\n                            .object({\n                              cost: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe('Item cost.')\n                                .optional(),\n                              profit: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                                )\n                                .optional(),\n                              profitMargin: z\n                                .number()\n                                .describe(\n                                  'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                                )\n                                .min(0)\n                                .max(1)\n                                .optional(),\n                            })\n                            .describe(\n                              'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                            )\n                            .optional(),\n                          media: z\n                            .intersection(\n                              z.object({\n                                altText: z\n                                  .string()\n                                  .describe('Image alt text.')\n                                  .min(1)\n                                  .max(1000)\n                                  .optional()\n                                  .nullable(),\n                                displayName: z\n                                  .string()\n                                  .describe(\n                                    \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                  )\n                                  .max(80)\n                                  .optional()\n                                  .nullable(),\n                                mediaType: z\n                                  .enum(['IMAGE', 'VIDEO'])\n                                  .describe('Media type.')\n                                  .optional(),\n                                thumbnail: z\n                                  .object({\n                                    url: z\n                                      .string()\n                                      .describe('Thumbnail url.')\n                                      .url()\n                                      .optional(),\n                                    height: z\n                                      .number()\n                                      .int()\n                                      .describe('Thumbnail height.')\n                                      .optional(),\n                                    width: z\n                                      .number()\n                                      .int()\n                                      .describe('Thumbnail width.')\n                                      .optional(),\n                                    altText: z\n                                      .string()\n                                      .describe('Thumbnail alt text.')\n                                      .min(1)\n                                      .max(1000)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .optional(),\n                                uploadId: z\n                                  .string()\n                                  .describe(\n                                    'ID used to upload media to Wix Media Manager.'\n                                  )\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional(),\n                              }),\n                              z.intersection(\n                                z.xor([\n                                  z.object({\n                                    _id: z.never().optional(),\n                                    url: z.never().optional(),\n                                  }),\n                                  z.object({\n                                    url: z.never().optional(),\n                                    _id: z\n                                      .string()\n                                      .describe(\n                                        'Set media by ID of an existing file in Wix Media Manager.'\n                                      )\n                                      .min(1)\n                                      .max(200),\n                                  }),\n                                  z.object({\n                                    _id: z.never().optional(),\n                                    url: z\n                                      .string()\n                                      .describe(\n                                        'Set media using an external media URL.'\n                                      )\n                                      .url(),\n                                  }),\n                                ]),\n                                z.xor([\n                                  z.object({\n                                    image: z.never().optional(),\n                                    video: z.never().optional(),\n                                  }),\n                                  z.object({\n                                    video: z.never().optional(),\n                                    image: z\n                                      .string()\n                                      .describe(\n                                        \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                      ),\n                                  }),\n                                  z.object({\n                                    image: z.never().optional(),\n                                    video: z\n                                      .string()\n                                      .describe(\n                                        \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                      ),\n                                  }),\n                                ])\n                              )\n                            )\n                            .describe('Variant media.')\n                            .optional(),\n                          subscriptionPricesInfo: z\n                            .object({\n                              subscriptionPrices: z\n                                .array(\n                                  z.object({\n                                    subscriptionId: z\n                                      .string()\n                                      .describe('Subscription ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional(),\n                                    price: z\n                                      .object({\n                                        amount: z\n                                          .string()\n                                          .describe(\n                                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                          )\n                                          .optional(),\n                                        formattedAmount: z\n                                          .string()\n                                          .describe(\n                                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                      )\n                                      .optional(),\n                                    pricePerUnit: z\n                                      .object({\n                                        value: z\n                                          .string()\n                                          .describe(\n                                            'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                          )\n                                          .optional(),\n                                        description: z\n                                          .string()\n                                          .describe(\n                                            'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                        priceAfterDiscount: z\n                                          .object({\n                                            amount: z\n                                              .string()\n                                              .describe(\n                                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                              )\n                                              .optional(),\n                                            formattedAmount: z\n                                              .string()\n                                              .describe(\n                                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .max(20)\n                                              .optional()\n                                              .nullable(),\n                                          })\n                                          .describe(\n                                            'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe('Price per unit info.')\n                                      .optional(),\n                                    priceAfterDiscount: z\n                                      .object({\n                                        amount: z\n                                          .string()\n                                          .describe(\n                                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                          )\n                                          .optional(),\n                                        formattedAmount: z\n                                          .string()\n                                          .describe(\n                                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                      )\n                                      .optional(),\n                                  })\n                                )\n                                .max(6)\n                                .optional(),\n                            })\n                            .describe(\n                              'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                          inventoryStatus: z\n                            .object({\n                              inStock: z\n                                .boolean()\n                                .describe('Whether the variant is in stock.')\n                                .optional(),\n                              preorderEnabled: z\n                                .boolean()\n                                .describe(\n                                  'Whether preorder is enabled for this variant.'\n                                )\n                                .optional(),\n                            })\n                            .describe('Variant inventory status.')\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({\n                            physicalProperties: z.never().optional(),\n                            digitalProperties: z.never().optional(),\n                          }),\n                          z.object({\n                            digitalProperties: z.never().optional(),\n                            physicalProperties: z\n                              .object({\n                                weight: z\n                                  .number()\n                                  .describe(\n                                    'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                                  )\n                                  .min(0)\n                                  .max(999999999.99)\n                                  .optional()\n                                  .nullable(),\n                                pricePerUnit: z\n                                  .object({\n                                    settings: z\n                                      .object({\n                                        quantity: z\n                                          .number()\n                                          .describe(\n                                            'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                          )\n                                          .min(0.01)\n                                          .max(999999999.99)\n                                          .optional(),\n                                        measurementUnit: z\n                                          .enum([\n                                            'UNSPECIFIED',\n                                            'ML',\n                                            'CL',\n                                            'L',\n                                            'CBM',\n                                            'MG',\n                                            'G',\n                                            'KG',\n                                            'MM',\n                                            'CM',\n                                            'M',\n                                            'SQM',\n                                            'OZ',\n                                            'LB',\n                                            'FLOZ',\n                                            'PT',\n                                            'QT',\n                                            'GAL',\n                                            'IN',\n                                            'FT',\n                                            'YD',\n                                            'SQFT',\n                                          ])\n                                          .describe(\n                                            'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                      )\n                                      .optional(),\n                                    value: z\n                                      .string()\n                                      .describe(\n                                        \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                      )\n                                      .optional(),\n                                    description: z\n                                      .string()\n                                      .describe(\n                                        'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(100)\n                                      .optional()\n                                      .nullable(),\n                                    priceAfterDiscount: z\n                                      .object({\n                                        amount: z\n                                          .string()\n                                          .describe(\n                                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                          )\n                                          .optional(),\n                                        formattedAmount: z\n                                          .string()\n                                          .describe(\n                                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                                  )\n                                  .optional(),\n                                productDimensions: z\n                                  .object({\n                                    length: z\n                                      .string()\n                                      .describe(\n                                        'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    width: z\n                                      .string()\n                                      .describe(\n                                        'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    height: z\n                                      .string()\n                                      .describe(\n                                        'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    unit: z\n                                      .enum([\n                                        'UNKNOWN_DIMENSIONS_UNIT',\n                                        'MM',\n                                        'CM',\n                                        'M',\n                                        'IN',\n                                        'FT',\n                                        'YD',\n                                      ])\n                                      .describe(\n                                        'Unit of measurement for dimensions (length, width, height).'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Product dimensions (length, width, height of the physical product).'\n                                  )\n                                  .optional(),\n                                packageDimensions: z\n                                  .object({\n                                    length: z\n                                      .string()\n                                      .describe(\n                                        'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    width: z\n                                      .string()\n                                      .describe(\n                                        'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    height: z\n                                      .string()\n                                      .describe(\n                                        'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    unit: z\n                                      .enum([\n                                        'UNKNOWN_DIMENSIONS_UNIT',\n                                        'MM',\n                                        'CM',\n                                        'M',\n                                        'IN',\n                                        'FT',\n                                        'YD',\n                                      ])\n                                      .describe(\n                                        'Unit of measurement for dimensions (length, width, height).'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Package dimensions (length, width, height of the shipping package).'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Physical properties. Must be passed when `productType: PHYSICAL`'\n                              ),\n                          }),\n                          z.object({\n                            physicalProperties: z.never().optional(),\n                            digitalProperties: z\n                              .object({\n                                digitalFile: z\n                                  .object({\n                                    _id: z\n                                      .string()\n                                      .describe('Media ID in media manager.')\n                                      .min(1)\n                                      .max(100)\n                                      .optional(),\n                                    fileName: z\n                                      .string()\n                                      .describe('Original file name.')\n                                      .min(1)\n                                      .max(1000)\n                                      .optional(),\n                                    fileSize: z\n                                      .string()\n                                      .describe('Original file size.')\n                                      .min(1)\n                                      .max(1000)\n                                      .optional()\n                                      .nullable(),\n                                    fileType: z\n                                      .enum([\n                                        'UNSPECIFIED',\n                                        'SECURE_PICTURE',\n                                        'SECURE_VIDEO',\n                                        'SECURE_DOCUMENT',\n                                        'SECURE_MUSIC',\n                                        'SECURE_ARCHIVE',\n                                        'SECURE_RAW',\n                                      ])\n                                      .describe('File type.')\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Digital properties. Must be passed when `productType: DIGITAL`'\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                    .min(1)\n                    .max(1000)\n                    .optional(),\n                })\n                .describe(\n                  'Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nYou must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).'\n                )\n                .optional(),\n              purchaseEligibility: z\n                .object({ userCriteria: z.enum(['MEMBERS_ONLY']).optional() })\n                .describe('Purchase eligibility settings for the product.')\n                .optional(),\n              additionalRibbons: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Ribbon ID.')\n                      .min(1)\n                      .max(36)\n                      .optional()\n                      .nullable(),\n                    name: z\n                      .string()\n                      .describe('Ribbon name.')\n                      .max(30)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(4)\n                .optional(),\n              extendedFields: z\n                .object({\n                  namespaces: z\n                    .record(z.string(), z.record(z.string(), z.any()))\n                    .describe(\n                      'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n                )\n                .optional(),\n              tags: z\n                .object({\n                  privateTags: z\n                    .object({ tagIds: z.array(z.string()).max(100).optional() })\n                    .describe(\n                      'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n                    )\n                    .optional(),\n                  publicTags: z\n                    .object({ tagIds: z.array(z.string()).max(100).optional() })\n                    .describe(\n                      'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n                    )\n                    .optional(),\n                })\n                .describe('Tags')\n                .optional(),\n              subscriptionDetails: z\n                .object({\n                  subscriptions: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          _id: z\n                            .string()\n                            .describe('Subscription ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          title: z\n                            .string()\n                            .describe('Subscription title.')\n                            .min(1)\n                            .max(20)\n                            .optional(),\n                          description: z\n                            .string()\n                            .describe('Subscription description.')\n                            .max(60)\n                            .optional()\n                            .nullable(),\n                          visible: z\n                            .boolean()\n                            .describe(\n                              'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                            )\n                            .optional()\n                            .nullable(),\n                          frequency: z\n                            .enum(['UNDEFINED', 'DAY', 'WEEK', 'MONTH', 'YEAR'])\n                            .describe(\n                              'Frequency of recurring payment.\\nFor example, if `frequency: MONTH` and `billingCycles: 6`; payment will be made monthly for 6 months.'\n                            )\n                            .optional(),\n                          interval: z\n                            .number()\n                            .int()\n                            .describe(\n                              'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                            )\n                            .min(1)\n                            .max(50)\n                            .optional()\n                            .nullable(),\n                          discount: z\n                            .intersection(\n                              z.object({\n                                type: z\n                                  .enum(['AMOUNT', 'PERCENT'])\n                                  .describe('Discount type.')\n                                  .optional(),\n                              }),\n                              z.xor([\n                                z.object({\n                                  amountOff: z.never().optional(),\n                                  percentOff: z.never().optional(),\n                                }),\n                                z.object({\n                                  percentOff: z.never().optional(),\n                                  amountOff: z\n                                    .string()\n                                    .describe(\n                                      'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                                    ),\n                                }),\n                                z.object({\n                                  amountOff: z.never().optional(),\n                                  percentOff: z\n                                    .number()\n                                    .describe(\n                                      'Percentage subtracted from the variant price when calculating subscription prices.'\n                                    )\n                                    .min(0.1)\n                                    .max(99.9),\n                                }),\n                              ])\n                            )\n                            .describe(\n                              'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                            )\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({\n                            autoRenewal: z.never().optional(),\n                            billingCycles: z.never().optional(),\n                          }),\n                          z.object({\n                            billingCycles: z.never().optional(),\n                            autoRenewal: z\n                              .boolean()\n                              .describe(\n                                'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                              ),\n                          }),\n                          z.object({\n                            autoRenewal: z.never().optional(),\n                            billingCycles: z\n                              .number()\n                              .int()\n                              .describe(\n                                'Number of billing cycles before subscription ends.'\n                              )\n                              .min(2)\n                              .max(999),\n                          }),\n                        ])\n                      )\n                    )\n                    .min(1)\n                    .max(6)\n                    .optional(),\n                  allowOneTimePurchases: z\n                    .boolean()\n                    .describe(\n                      'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n                    )\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n                )\n                .optional(),\n              variantSummary: z\n                .object({\n                  variantCount: z\n                    .number()\n                    .int()\n                    .describe('The total number of variants for the product.')\n                    .optional(),\n                  minPriceVariant: z\n                    .intersection(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('Variant ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        visible: z\n                          .boolean()\n                          .describe(\n                            \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                          )\n                          .optional()\n                          .nullable(),\n                        sku: z\n                          .string()\n                          .describe('Variant SKU (stock keeping unit).')\n                          .min(1)\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        barcode: z\n                          .string()\n                          .describe('Variant barcode.')\n                          .min(1)\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        choices: z\n                          .array(\n                            z.object({\n                              optionChoiceIds: z\n                                .object({\n                                  optionId: z\n                                    .string()\n                                    .describe('Option ID.')\n                                    .min(1)\n                                    .max(36)\n                                    .optional(),\n                                  choiceId: z\n                                    .string()\n                                    .describe('Choice ID.')\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                                )\n                                .optional(),\n                              optionChoiceNames: z\n                                .object({\n                                  optionName: z\n                                    .string()\n                                    .describe('Option name.')\n                                    .min(1)\n                                    .optional(),\n                                  choiceName: z\n                                    .string()\n                                    .describe('Choice name.')\n                                    .min(1)\n                                    .optional(),\n                                  renderType: z\n                                    .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                    .describe(\n                                      'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                                )\n                                .optional(),\n                            })\n                          )\n                          .min(0)\n                          .max(6)\n                          .optional(),\n                        price: z\n                          .object({\n                            actualPrice: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                \"Variant's current selling price. Must be greater than or equal to 0.\"\n                              )\n                              .optional(),\n                            compareAtPrice: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                              )\n                              .optional(),\n                            priceAfterDiscount: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                              )\n                              .optional(),\n                          })\n                          .describe('Variant price.')\n                          .optional(),\n                        revenueDetails: z\n                          .object({\n                            cost: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe('Item cost.')\n                              .optional(),\n                            profit: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                              )\n                              .optional(),\n                            profitMargin: z\n                              .number()\n                              .describe(\n                                'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                              )\n                              .min(0)\n                              .max(1)\n                              .optional(),\n                          })\n                          .describe(\n                            'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                          )\n                          .optional(),\n                        media: z\n                          .intersection(\n                            z.object({\n                              altText: z\n                                .string()\n                                .describe('Image alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              displayName: z\n                                .string()\n                                .describe(\n                                  \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                )\n                                .max(80)\n                                .optional()\n                                .nullable(),\n                              mediaType: z\n                                .enum(['IMAGE', 'VIDEO'])\n                                .describe('Media type.')\n                                .optional(),\n                              thumbnail: z\n                                .object({\n                                  url: z\n                                    .string()\n                                    .describe('Thumbnail url.')\n                                    .url()\n                                    .optional(),\n                                  height: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail height.')\n                                    .optional(),\n                                  width: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail width.')\n                                    .optional(),\n                                  altText: z\n                                    .string()\n                                    .describe('Thumbnail alt text.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                )\n                                .optional(),\n                              uploadId: z\n                                .string()\n                                .describe(\n                                  'ID used to upload media to Wix Media Manager.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                            }),\n                            z.intersection(\n                              z.xor([\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z.never().optional(),\n                                }),\n                                z.object({\n                                  url: z.never().optional(),\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Set media by ID of an existing file in Wix Media Manager.'\n                                    )\n                                    .min(1)\n                                    .max(200),\n                                }),\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z\n                                    .string()\n                                    .describe(\n                                      'Set media using an external media URL.'\n                                    )\n                                    .url(),\n                                }),\n                              ]),\n                              z.xor([\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z.never().optional(),\n                                }),\n                                z.object({\n                                  video: z.never().optional(),\n                                  image: z\n                                    .string()\n                                    .describe(\n                                      \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                    ),\n                                }),\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z\n                                    .string()\n                                    .describe(\n                                      \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                    ),\n                                }),\n                              ])\n                            )\n                          )\n                          .describe('Variant media.')\n                          .optional(),\n                        subscriptionPricesInfo: z\n                          .object({\n                            subscriptionPrices: z\n                              .array(\n                                z.object({\n                                  subscriptionId: z\n                                    .string()\n                                    .describe('Subscription ID.')\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                  price: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                    )\n                                    .optional(),\n                                  pricePerUnit: z\n                                    .object({\n                                      value: z\n                                        .string()\n                                        .describe(\n                                          'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                        )\n                                        .optional(),\n                                      description: z\n                                        .string()\n                                        .describe(\n                                          'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                      priceAfterDiscount: z\n                                        .object({\n                                          amount: z\n                                            .string()\n                                            .describe(\n                                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                            )\n                                            .optional(),\n                                          formattedAmount: z\n                                            .string()\n                                            .describe(\n                                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                            )\n                                            .max(20)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                        )\n                                        .optional(),\n                                    })\n                                    .describe('Price per unit info.')\n                                    .optional(),\n                                  priceAfterDiscount: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                    )\n                                    .optional(),\n                                })\n                              )\n                              .max(6)\n                              .optional(),\n                          })\n                          .describe(\n                            'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        inventoryStatus: z\n                          .object({\n                            inStock: z\n                              .boolean()\n                              .describe('Whether the variant is in stock.')\n                              .optional(),\n                            preorderEnabled: z\n                              .boolean()\n                              .describe(\n                                'Whether preorder is enabled for this variant.'\n                              )\n                              .optional(),\n                          })\n                          .describe('Variant inventory status.')\n                          .optional(),\n                      }),\n                      z.xor([\n                        z.object({\n                          physicalProperties: z.never().optional(),\n                          digitalProperties: z.never().optional(),\n                        }),\n                        z.object({\n                          digitalProperties: z.never().optional(),\n                          physicalProperties: z\n                            .object({\n                              weight: z\n                                .number()\n                                .describe(\n                                  'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                                )\n                                .min(0)\n                                .max(999999999.99)\n                                .optional()\n                                .nullable(),\n                              pricePerUnit: z\n                                .object({\n                                  settings: z\n                                    .object({\n                                      quantity: z\n                                        .number()\n                                        .describe(\n                                          'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                        )\n                                        .min(0.01)\n                                        .max(999999999.99)\n                                        .optional(),\n                                      measurementUnit: z\n                                        .enum([\n                                          'UNSPECIFIED',\n                                          'ML',\n                                          'CL',\n                                          'L',\n                                          'CBM',\n                                          'MG',\n                                          'G',\n                                          'KG',\n                                          'MM',\n                                          'CM',\n                                          'M',\n                                          'SQM',\n                                          'OZ',\n                                          'LB',\n                                          'FLOZ',\n                                          'PT',\n                                          'QT',\n                                          'GAL',\n                                          'IN',\n                                          'FT',\n                                          'YD',\n                                          'SQFT',\n                                        ])\n                                        .describe(\n                                          'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                        )\n                                        .optional(),\n                                    })\n                                    .describe(\n                                      'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                    )\n                                    .optional(),\n                                  value: z\n                                    .string()\n                                    .describe(\n                                      \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                    )\n                                    .optional(),\n                                  description: z\n                                    .string()\n                                    .describe(\n                                      'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(100)\n                                    .optional()\n                                    .nullable(),\n                                  priceAfterDiscount: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                                )\n                                .optional(),\n                              productDimensions: z\n                                .object({\n                                  length: z\n                                    .string()\n                                    .describe(\n                                      'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  width: z\n                                    .string()\n                                    .describe(\n                                      'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  height: z\n                                    .string()\n                                    .describe(\n                                      'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  unit: z\n                                    .enum([\n                                      'UNKNOWN_DIMENSIONS_UNIT',\n                                      'MM',\n                                      'CM',\n                                      'M',\n                                      'IN',\n                                      'FT',\n                                      'YD',\n                                    ])\n                                    .describe(\n                                      'Unit of measurement for dimensions (length, width, height).'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Product dimensions (length, width, height of the physical product).'\n                                )\n                                .optional(),\n                              packageDimensions: z\n                                .object({\n                                  length: z\n                                    .string()\n                                    .describe(\n                                      'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  width: z\n                                    .string()\n                                    .describe(\n                                      'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  height: z\n                                    .string()\n                                    .describe(\n                                      'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  unit: z\n                                    .enum([\n                                      'UNKNOWN_DIMENSIONS_UNIT',\n                                      'MM',\n                                      'CM',\n                                      'M',\n                                      'IN',\n                                      'FT',\n                                      'YD',\n                                    ])\n                                    .describe(\n                                      'Unit of measurement for dimensions (length, width, height).'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Package dimensions (length, width, height of the shipping package).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Physical properties. Must be passed when `productType: PHYSICAL`'\n                            ),\n                        }),\n                        z.object({\n                          physicalProperties: z.never().optional(),\n                          digitalProperties: z\n                            .object({\n                              digitalFile: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe('Media ID in media manager.')\n                                    .min(1)\n                                    .max(100)\n                                    .optional(),\n                                  fileName: z\n                                    .string()\n                                    .describe('Original file name.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional(),\n                                  fileSize: z\n                                    .string()\n                                    .describe('Original file size.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                  fileType: z\n                                    .enum([\n                                      'UNSPECIFIED',\n                                      'SECURE_PICTURE',\n                                      'SECURE_VIDEO',\n                                      'SECURE_DOCUMENT',\n                                      'SECURE_MUSIC',\n                                      'SECURE_ARCHIVE',\n                                      'SECURE_RAW',\n                                    ])\n                                    .describe('File type.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Digital properties. Must be passed when `productType: DIGITAL`'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\n                      'The variant with the lowest `actualPrice` among visible variants for this product.\\n\\nHidden variants are excluded; ties are broken by variant order. Empty if the product has no visible variants.\\n> **Note:** Returned only when you pass `\"MIN_PRICE_VARIANT\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                })\n                .describe('The total number of variants for the product.')\n                .optional(),\n            }),\n            z.xor([\n              z.object({ physicalProperties: z.never().optional() }),\n              z.object({\n                physicalProperties: z\n                  .object({\n                    pricePerUnit: z\n                      .object({\n                        quantity: z\n                          .number()\n                          .describe(\n                            'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                          )\n                          .min(0.01)\n                          .max(999999999.99)\n                          .optional(),\n                        measurementUnit: z\n                          .enum([\n                            'UNSPECIFIED',\n                            'ML',\n                            'CL',\n                            'L',\n                            'CBM',\n                            'MG',\n                            'G',\n                            'KG',\n                            'MM',\n                            'CM',\n                            'M',\n                            'SQM',\n                            'OZ',\n                            'LB',\n                            'FLOZ',\n                            'PT',\n                            'QT',\n                            'GAL',\n                            'IN',\n                            'FT',\n                            'YD',\n                            'SQFT',\n                          ])\n                          .describe(\n                            'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n                      )\n                      .optional(),\n                    fulfillerId: z\n                      .string()\n                      .describe('Fulfiller ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    shippingWeightRange: z\n                      .object({\n                        minValue: z\n                          .number()\n                          .describe(\n                            'Minimum weight across all variants associated with this product.'\n                          )\n                          .min(0)\n                          .max(999999999.99)\n                          .optional(),\n                        maxValue: z\n                          .number()\n                          .describe(\n                            'Maximum weight across all variants associated with this product.'\n                          )\n                          .min(0)\n                          .max(999999999.99)\n                          .optional(),\n                      })\n                      .describe(\n                        'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n                      )\n                      .optional(),\n                    pricePerUnitRange: z\n                      .object({\n                        minValue: z\n                          .object({\n                            value: z\n                              .string()\n                              .describe(\n                                \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                              )\n                              .optional(),\n                            description: z\n                              .string()\n                              .describe(\n                                'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                              )\n                              .max(100)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Minimum price per unit across all variants.'\n                          )\n                          .optional(),\n                        maxValue: z\n                          .object({\n                            value: z\n                              .string()\n                              .describe(\n                                \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                              )\n                              .optional(),\n                            description: z\n                              .string()\n                              .describe(\n                                'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                              )\n                              .max(100)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Maximum price per unit across all variants.'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n                      )\n                      .optional(),\n                    weightMeasurementUnitInfo: z\n                      .object({\n                        weightMeasurementUnit: z\n                          .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                          .describe('Weight measurement unit.')\n                          .optional(),\n                      })\n                      .describe(\n                        'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    deliveryProfileId: z\n                      .string()\n                      .describe('Delivery profile ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe(\n                    'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'Full product entity.\\n\\nReturned only if `returnEntity: true` is passed in the request.'\n          )\n          .optional(),\n      })\n    )\n    .min(1)\n    .max(100)\n    .optional(),\n  bulkActionMetadata: z\n    .object({\n      totalSuccesses: z\n        .number()\n        .int()\n        .describe('Number of items that were successfully processed.')\n        .optional(),\n      totalFailures: z\n        .number()\n        .int()\n        .describe(\"Number of items that couldn't be processed.\")\n        .optional(),\n      undetailedFailures: z\n        .number()\n        .int()\n        .describe(\n          'Number of failures without details because detailed failure threshold was exceeded.'\n        )\n        .optional(),\n    })\n    .describe('Bulk action metadata.')\n    .optional(),\n});\nexport const BulkRemoveInfoSectionsFromProductsByFilterRequest = z.object({\n  filter: z.record(z.string(), z.any()).describe('Filter object.'),\n  options: z.object({\n    infoSectionIds: z.array(z.string()).min(1).max(100),\n    search: z\n      .object({\n        mode: z.enum(['OR', 'AND']).optional(),\n        expression: z\n          .string()\n          .describe('Search term or expression')\n          .max(100)\n          .optional()\n          .nullable(),\n        fields: z.array(z.string()).max(20).optional(),\n        fuzzy: z\n          .boolean()\n          .describe(\n            'Whether to enable the search function to use an algorithm to automatically find results that are close to the search expression, such as typos and declensions.'\n          )\n          .optional(),\n      })\n      .describe('Free text to match in searchable fields.')\n      .optional(),\n  }),\n});\nexport const BulkRemoveInfoSectionsFromProductsByFilterResponse = z.object({\n  jobId: z\n    .string()\n    .describe(\n      'Job ID.\\n\\nPass this ID to [Get Async Job](https://dev.wix.com/docs/api-reference/business-management/async-job/introduction) to retrieve job details and metadata..'\n    )\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    )\n    .optional(),\n});\nexport const BulkRemoveInfoSectionsFromProductsRequest = z.object({\n  products: z\n    .array(\n      z.object({\n        productId: z.string().describe('Product ID.').min(1).max(36).optional(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.'\n          )\n          .optional(),\n      })\n    )\n    .min(1)\n    .max(100),\n  options: z.object({\n    infoSectionIds: z.array(z.string()).min(1).max(100),\n    returnEntity: z\n      .boolean()\n      .describe(\n        'Whether to return the full updated product entities in the response.\\n\\nDefault: `false`'\n      )\n      .optional(),\n    fields: z\n      .array(\n        z.enum([\n          'URL',\n          'CURRENCY',\n          'INFO_SECTION',\n          'MERCHANT_DATA',\n          'PLAIN_DESCRIPTION',\n          'INFO_SECTION_PLAIN_DESCRIPTION',\n          'SUBSCRIPTION_PRICES_INFO',\n          'BREADCRUMBS_INFO',\n          'WEIGHT_MEASUREMENT_UNIT_INFO',\n          'VARIANT_OPTION_CHOICE_NAMES',\n          'MEDIA_ITEMS_INFO',\n          'DESCRIPTION',\n          'DIRECT_CATEGORIES_INFO',\n          'ALL_CATEGORIES_INFO',\n          'INFO_SECTION_DESCRIPTION',\n          'THUMBNAIL',\n          'PRODUCT_CHOICES_MEDIA_REFERENCES',\n          'PRODUCT_CHOICES_DISPLAY_IMAGE',\n          'MIN_PRICE_VARIANT',\n          'DISCOUNT_INFO',\n        ])\n      )\n      .max(100)\n      .optional(),\n  }),\n});\nexport const BulkRemoveInfoSectionsFromProductsResponse = z.object({\n  results: z\n    .array(\n      z.object({\n        itemMetadata: z\n          .object({\n            _id: z\n              .string()\n              .describe(\n                \"Item ID. Should always be available, unless it's impossible (for example, when failing to create an item).\"\n              )\n              .min(1)\n              .max(36)\n              .optional()\n              .nullable(),\n            originalIndex: z\n              .number()\n              .int()\n              .describe(\n                'Index of the item within the request array. Allows for correlation between request and response items.'\n              )\n              .optional(),\n            success: z\n              .boolean()\n              .describe(\n                'Whether the requested action was successful for this item. When `false`, the `error` field is populated.'\n              )\n              .optional(),\n            error: z\n              .object({\n                code: z.string().describe('Error code.').optional(),\n                description: z\n                  .string()\n                  .describe('Description of the error.')\n                  .optional(),\n                data: z\n                  .record(z.string(), z.any())\n                  .describe('Data related to the error.')\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Details about the error in case of failure.')\n              .optional(),\n          })\n          .describe('Information about successful action or error for failure.')\n          .optional(),\n        item: z\n          .intersection(\n            z.object({\n              _id: z\n                .string()\n                .describe('Product ID.')\n                .min(1)\n                .max(36)\n                .optional()\n                .nullable(),\n              revision: z\n                .string()\n                .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                .describe(\n                  'Revision number, which increments by 1 each time the product is updated.\\nTo prevent conflicting changes,\\nthe current revision must be passed when updating the product.\\n\\nIgnored when creating a product.'\n                )\n                .optional()\n                .nullable(),\n              _createdDate: z\n                .date()\n                .describe('Date and time the product was created.')\n                .optional()\n                .nullable(),\n              _updatedDate: z\n                .date()\n                .describe('Date and time the product was updated.')\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Product name. Translatable.')\n                .min(1)\n                .max(80)\n                .optional()\n                .nullable(),\n              slug: z\n                .string()\n                .describe(\n                  'Product slug. A URL-friendly identifier used in the product page address.\\n\\nIf not provided, the slug is autogenerated based on the product name.'\n                )\n                .min(1)\n                .max(300)\n                .optional()\n                .nullable(),\n              url: z\n                .string()\n                .describe(\n                  'URL to the site\\'s product page.\\n\\n> **Note:** Returned only when you pass `\"URL\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              description: z\n                .any()\n                .describe(\n                  'Product description using rich content.\\n> **Note:** Returned only when you pass `\"DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                )\n                .optional(),\n              plainDescription: z\n                .string()\n                .describe(\n                  'Product description in HTML.\\n\\n+ When provided on create/update, this string must be valid HTML. It\\'s then converted to rich content.\\n+ `plainDescription` is ignored when a value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                )\n                .max(16000)\n                .optional()\n                .nullable(),\n              visible: z\n                .boolean()\n                .describe(\n                  \"Whether the product is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the default variant's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                )\n                .optional()\n                .nullable(),\n              visibleInPos: z\n                .boolean()\n                .describe(\n                  'Whether the product is visible in POS (point of sale).\\n\\nDefault: `true`\\n> **Note:** Always `false` for `productType: DIGITAL`.'\n                )\n                .optional()\n                .nullable(),\n              media: z\n                .object({\n                  main: z\n                    .intersection(\n                      z.object({\n                        altText: z\n                          .string()\n                          .describe('Image alt text.')\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        displayName: z\n                          .string()\n                          .describe(\n                            \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                          )\n                          .max(80)\n                          .optional()\n                          .nullable(),\n                        mediaType: z\n                          .enum(['IMAGE', 'VIDEO'])\n                          .describe('Media type.')\n                          .optional(),\n                        thumbnail: z\n                          .object({\n                            url: z\n                              .string()\n                              .describe('Thumbnail url.')\n                              .url()\n                              .optional(),\n                            height: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail height.')\n                              .optional(),\n                            width: z\n                              .number()\n                              .int()\n                              .describe('Thumbnail width.')\n                              .optional(),\n                            altText: z\n                              .string()\n                              .describe('Thumbnail alt text.')\n                              .min(1)\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        uploadId: z\n                          .string()\n                          .describe(\n                            'ID used to upload media to Wix Media Manager.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                      }),\n                      z.intersection(\n                        z.xor([\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z.never().optional(),\n                          }),\n                          z.object({\n                            url: z.never().optional(),\n                            _id: z\n                              .string()\n                              .describe(\n                                'Set media by ID of an existing file in Wix Media Manager.'\n                              )\n                              .min(1)\n                              .max(200),\n                          }),\n                          z.object({\n                            _id: z.never().optional(),\n                            url: z\n                              .string()\n                              .describe(\n                                'Set media using an external media URL.'\n                              )\n                              .url(),\n                          }),\n                        ]),\n                        z.xor([\n                          z.object({\n                            image: z.never().optional(),\n                            video: z.never().optional(),\n                          }),\n                          z.object({\n                            video: z.never().optional(),\n                            image: z\n                              .string()\n                              .describe(\n                                \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                              ),\n                          }),\n                          z.object({\n                            image: z.never().optional(),\n                            video: z\n                              .string()\n                              .describe(\n                                \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                    .describe(\n                      'Main media (image, video, etc.) associated with this product.\\nAutomatically set to the first item in the media list.'\n                    )\n                    .optional(),\n                  itemsInfo: z\n                    .object({\n                      items: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              altText: z\n                                .string()\n                                .describe('Image alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              displayName: z\n                                .string()\n                                .describe(\n                                  \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                )\n                                .max(80)\n                                .optional()\n                                .nullable(),\n                              mediaType: z\n                                .enum(['IMAGE', 'VIDEO'])\n                                .describe('Media type.')\n                                .optional(),\n                              thumbnail: z\n                                .object({\n                                  url: z\n                                    .string()\n                                    .describe('Thumbnail url.')\n                                    .url()\n                                    .optional(),\n                                  height: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail height.')\n                                    .optional(),\n                                  width: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail width.')\n                                    .optional(),\n                                  altText: z\n                                    .string()\n                                    .describe('Thumbnail alt text.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                )\n                                .optional(),\n                              uploadId: z\n                                .string()\n                                .describe(\n                                  'ID used to upload media to Wix Media Manager.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                            }),\n                            z.intersection(\n                              z.xor([\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z.never().optional(),\n                                }),\n                                z.object({\n                                  url: z.never().optional(),\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Set media by ID of an existing file in Wix Media Manager.'\n                                    )\n                                    .min(1)\n                                    .max(200),\n                                }),\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z\n                                    .string()\n                                    .describe(\n                                      'Set media using an external media URL.'\n                                    )\n                                    .url(),\n                                }),\n                              ]),\n                              z.xor([\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z.never().optional(),\n                                }),\n                                z.object({\n                                  video: z.never().optional(),\n                                  image: z\n                                    .string()\n                                    .describe(\n                                      \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                    ),\n                                }),\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z\n                                    .string()\n                                    .describe(\n                                      \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                    ),\n                                }),\n                              ])\n                            )\n                          )\n                        )\n                        .max(50)\n                        .optional(),\n                    })\n                    .describe(\n                      'All media items.\\n> **Note:** Returned only when you pass `\"MEDIA_ITEMS_INFO\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Product media items. For a detailed explanation of product media, see [About Product Media](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/about-product-media).'\n                )\n                .optional(),\n              seoData: z\n                .object({\n                  tags: z\n                    .array(\n                      z.object({\n                        type: z\n                          .string()\n                          .describe(\n                            'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                          )\n                          .optional(),\n                        props: z\n                          .record(z.string(), z.any())\n                          .describe(\n                            'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                          )\n                          .optional()\n                          .nullable(),\n                        meta: z\n                          .record(z.string(), z.any())\n                          .describe(\n                            'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                          )\n                          .optional()\n                          .nullable(),\n                        children: z\n                          .string()\n                          .describe(\n                            'SEO tag inner content. For example, `<title> inner content </title>`.'\n                          )\n                          .optional(),\n                        custom: z\n                          .boolean()\n                          .describe(\n                            'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                          )\n                          .optional(),\n                        disabled: z\n                          .boolean()\n                          .describe(\n                            \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                          )\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                  settings: z\n                    .object({\n                      preventAutoRedirect: z\n                        .boolean()\n                        .describe(\n                          'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n                        )\n                        .optional(),\n                      keywords: z\n                        .array(\n                          z.object({\n                            term: z\n                              .string()\n                              .describe('Keyword value.')\n                              .optional(),\n                            isMain: z\n                              .boolean()\n                              .describe(\n                                'Whether the keyword is the main focus keyword.'\n                              )\n                              .optional(),\n                            origin: z\n                              .string()\n                              .describe(\n                                'The source that added the keyword terms to the SEO settings.'\n                              )\n                              .max(1000)\n                              .optional()\n                              .nullable(),\n                          })\n                        )\n                        .max(5)\n                        .optional(),\n                    })\n                    .describe('SEO general settings.')\n                    .optional(),\n                })\n                .describe('Product SEO data.')\n                .optional(),\n              taxGroupId: z\n                .string()\n                .describe(\n                  '[Tax group ID](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/tax-groups/introduction). Used to apply specific tax rates to products.'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              options: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe(\n                          'ID of a customization with `customizationType: PRODUCT_OPTION`.'\n                        )\n                        .min(1)\n                        .max(36)\n                        .optional()\n                        .nullable(),\n                      name: z\n                        .string()\n                        .describe('Option name.')\n                        .min(1)\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                      optionRenderType: z\n                        .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                        .describe('Option render type.')\n                        .optional(),\n                      key: z\n                        .string()\n                        .describe(\n                          'A read-only identifier generated from the option name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                        )\n                        .min(1)\n                        .max(50)\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({ choicesSettings: z.never().optional() }),\n                      z.object({\n                        choicesSettings: z\n                          .object({\n                            choices: z\n                              .array(\n                                z.intersection(\n                                  z.object({\n                                    choiceId: z\n                                      .string()\n                                      .describe('Choice ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    linkedMedia: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({\n                                            altText: z\n                                              .string()\n                                              .describe('Image alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                            displayName: z\n                                              .string()\n                                              .describe(\n                                                \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                              )\n                                              .max(80)\n                                              .optional()\n                                              .nullable(),\n                                            mediaType: z\n                                              .enum(['IMAGE', 'VIDEO'])\n                                              .describe('Media type.')\n                                              .optional(),\n                                            thumbnail: z\n                                              .object({\n                                                url: z\n                                                  .string()\n                                                  .describe('Thumbnail url.')\n                                                  .url()\n                                                  .optional(),\n                                                height: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail height.')\n                                                  .optional(),\n                                                width: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail width.')\n                                                  .optional(),\n                                                altText: z\n                                                  .string()\n                                                  .describe(\n                                                    'Thumbnail alt text.'\n                                                  )\n                                                  .min(1)\n                                                  .max(1000)\n                                                  .optional()\n                                                  .nullable(),\n                                              })\n                                              .describe(\n                                                'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .optional(),\n                                            uploadId: z\n                                              .string()\n                                              .describe(\n                                                'ID used to upload media to Wix Media Manager.'\n                                              )\n                                              .regex(\n                                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                                'Must be a valid GUID'\n                                              )\n                                              .optional(),\n                                          }),\n                                          z.intersection(\n                                            z.xor([\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                url: z.never().optional(),\n                                                _id: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media by ID of an existing file in Wix Media Manager.'\n                                                  )\n                                                  .min(1)\n                                                  .max(200),\n                                              }),\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media using an external media URL.'\n                                                  )\n                                                  .url(),\n                                              }),\n                                            ]),\n                                            z.xor([\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                video: z.never().optional(),\n                                                image: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                                  ),\n                                              }),\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                                  ),\n                                              }),\n                                            ])\n                                          )\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                    choiceType: z\n                                      .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                      .describe('Choice type.')\n                                      .optional(),\n                                    key: z\n                                      .string()\n                                      .describe(\n                                        'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                      )\n                                      .min(1)\n                                      .max(50)\n                                      .optional(),\n                                    name: z\n                                      .string()\n                                      .describe(\n                                        'Choice name. For text choices, this field also contains the choice value.'\n                                      )\n                                      .min(1)\n                                      .max(50)\n                                      .optional()\n                                      .nullable(),\n                                    inStock: z\n                                      .boolean()\n                                      .describe(\n                                        'Whether at least one variant with this choice is in stock in the default location of the store.\\n\\nFor example, a product with Color and Size options has these variants: [Blue, Small] which is out of stock and [Red, Large] which is in stock. For choice Blue, this field is `false`. For choice Red, this field is `true`.'\n                                      )\n                                      .optional(),\n                                    visible: z\n                                      .boolean()\n                                      .describe(\n                                        'Whether at least one variant with this choice is visible.\\n\\nDefault: `false`'\n                                      )\n                                      .optional(),\n                                    displayImage: z\n                                      .string()\n                                      .describe(\n                                        'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                      )\n                                      .optional(),\n                                    media: z\n                                      .object({\n                                        items: z\n                                          .array(\n                                            z.intersection(\n                                              z.object({}),\n                                              z.xor([\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z.never().optional(),\n                                                }),\n                                                z.object({\n                                                  url: z.never().optional(),\n                                                  mediaId: z\n                                                    .string()\n                                                    .describe(\n                                                      'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                    )\n                                                    .min(1)\n                                                    .max(200),\n                                                }),\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z\n                                                    .string()\n                                                    .describe(\n                                                      'External media URL. Can be used only on write.'\n                                                    )\n                                                    .url(),\n                                                }),\n                                              ])\n                                            )\n                                          )\n                                          .max(15)\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                      )\n                                      .optional(),\n                                  }),\n                                  z.xor([\n                                    z.object({\n                                      colorCode: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      colorCode: z\n                                        .string()\n                                        .describe(\n                                          'Single color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color). For example, `#FF0000` for red.'\n                                        )\n                                        .min(3)\n                                        .max(20),\n                                    }),\n                                  ])\n                                )\n                              )\n                              .min(1)\n                              .max(100)\n                              .optional(),\n                          })\n                          .describe('Choices settings.'),\n                      }),\n                    ])\n                  )\n                )\n                .max(6)\n                .optional(),\n              modifiers: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      _id: z\n                        .string()\n                        .describe(\n                          'ID of a customization with `customizationType: MODIFIER`.'\n                        )\n                        .min(1)\n                        .max(36)\n                        .optional()\n                        .nullable(),\n                      name: z\n                        .string()\n                        .describe('Modifier title.')\n                        .min(1)\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                      modifierRenderType: z\n                        .enum(['FREE_TEXT', 'TEXT_CHOICES', 'SWATCH_CHOICES'])\n                        .describe('Modifier render type.')\n                        .optional(),\n                      mandatory: z\n                        .boolean()\n                        .describe(\n                          'Whether customer input is required for this modifier.'\n                        )\n                        .optional(),\n                      key: z\n                        .string()\n                        .describe(\n                          'A read-only identifier generated from the modifier name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                        )\n                        .min(1)\n                        .max(50)\n                        .optional(),\n                    }),\n                    z.xor([\n                      z.object({\n                        freeTextSettings: z.never().optional(),\n                        choicesSettings: z.never().optional(),\n                      }),\n                      z.object({\n                        choicesSettings: z.never().optional(),\n                        freeTextSettings: z\n                          .object({\n                            minCharCount: z\n                              .number()\n                              .int()\n                              .describe('Minimum number of characters.')\n                              .optional(),\n                            maxCharCount: z\n                              .number()\n                              .int()\n                              .describe('Maximum number of characters.')\n                              .max(500)\n                              .optional(),\n                            defaultAddedPrice: z\n                              .string()\n                              .describe(\n                                \"Default amount to be added to the product's price.\"\n                              )\n                              .optional()\n                              .nullable(),\n                            title: z\n                              .string()\n                              .describe(\n                                'Title of the text to be input by the customer.'\n                              )\n                              .min(1)\n                              .max(150)\n                              .optional(),\n                            key: z\n                              .string()\n                              .describe(\n                                'A read-only identifier generated from the title.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                              )\n                              .min(1)\n                              .max(150)\n                              .optional(),\n                          })\n                          .describe('Free text modifier settings.'),\n                      }),\n                      z.object({\n                        freeTextSettings: z.never().optional(),\n                        choicesSettings: z\n                          .object({\n                            choices: z\n                              .array(\n                                z.intersection(\n                                  z.object({\n                                    choiceId: z\n                                      .string()\n                                      .describe('Choice ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    linkedMedia: z\n                                      .array(\n                                        z.intersection(\n                                          z.object({\n                                            altText: z\n                                              .string()\n                                              .describe('Image alt text.')\n                                              .min(1)\n                                              .max(1000)\n                                              .optional()\n                                              .nullable(),\n                                            displayName: z\n                                              .string()\n                                              .describe(\n                                                \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                              )\n                                              .max(80)\n                                              .optional()\n                                              .nullable(),\n                                            mediaType: z\n                                              .enum(['IMAGE', 'VIDEO'])\n                                              .describe('Media type.')\n                                              .optional(),\n                                            thumbnail: z\n                                              .object({\n                                                url: z\n                                                  .string()\n                                                  .describe('Thumbnail url.')\n                                                  .url()\n                                                  .optional(),\n                                                height: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail height.')\n                                                  .optional(),\n                                                width: z\n                                                  .number()\n                                                  .int()\n                                                  .describe('Thumbnail width.')\n                                                  .optional(),\n                                                altText: z\n                                                  .string()\n                                                  .describe(\n                                                    'Thumbnail alt text.'\n                                                  )\n                                                  .min(1)\n                                                  .max(1000)\n                                                  .optional()\n                                                  .nullable(),\n                                              })\n                                              .describe(\n                                                'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .optional(),\n                                            uploadId: z\n                                              .string()\n                                              .describe(\n                                                'ID used to upload media to Wix Media Manager.'\n                                              )\n                                              .regex(\n                                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                                'Must be a valid GUID'\n                                              )\n                                              .optional(),\n                                          }),\n                                          z.intersection(\n                                            z.xor([\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                url: z.never().optional(),\n                                                _id: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media by ID of an existing file in Wix Media Manager.'\n                                                  )\n                                                  .min(1)\n                                                  .max(200),\n                                              }),\n                                              z.object({\n                                                _id: z.never().optional(),\n                                                url: z\n                                                  .string()\n                                                  .describe(\n                                                    'Set media using an external media URL.'\n                                                  )\n                                                  .url(),\n                                              }),\n                                            ]),\n                                            z.xor([\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z.never().optional(),\n                                              }),\n                                              z.object({\n                                                video: z.never().optional(),\n                                                image: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                                  ),\n                                              }),\n                                              z.object({\n                                                image: z.never().optional(),\n                                                video: z\n                                                  .string()\n                                                  .describe(\n                                                    \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                                  ),\n                                              }),\n                                            ])\n                                          )\n                                        )\n                                      )\n                                      .max(15)\n                                      .optional(),\n                                    choiceType: z\n                                      .enum(['CHOICE_TEXT', 'ONE_COLOR'])\n                                      .describe('Choice type.')\n                                      .optional(),\n                                    key: z\n                                      .string()\n                                      .describe(\n                                        'A read-only identifier generated from the choice name.\\n\\nUse `key` in the `catalogReference.options` object when [integrating Catalog V3 with eCommerce APIs](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/e-commerce-integration).'\n                                      )\n                                      .min(1)\n                                      .max(50)\n                                      .optional(),\n                                    name: z\n                                      .string()\n                                      .describe('Choice name.')\n                                      .min(1)\n                                      .max(50)\n                                      .optional()\n                                      .nullable(),\n                                    addedPrice: z\n                                      .string()\n                                      .describe('Added price.')\n                                      .optional()\n                                      .nullable(),\n                                    displayImage: z\n                                      .string()\n                                      .describe(\n                                        'Image to display alongside the choice.\\n\\nThis field is returned only when the `PRODUCT_CHOICES_DISPLAY_IMAGE` requested field is included in the `fields` request parameter.\\nThe returned image contains only its ID, URL, and alt text.'\n                                      )\n                                      .optional(),\n                                    media: z\n                                      .object({\n                                        items: z\n                                          .array(\n                                            z.intersection(\n                                              z.object({}),\n                                              z.xor([\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z.never().optional(),\n                                                }),\n                                                z.object({\n                                                  url: z.never().optional(),\n                                                  mediaId: z\n                                                    .string()\n                                                    .describe(\n                                                      'Media ID from the Wix Media Manager. Will always be returned on read.'\n                                                    )\n                                                    .min(1)\n                                                    .max(200),\n                                                }),\n                                                z.object({\n                                                  mediaId: z.never().optional(),\n                                                  url: z\n                                                    .string()\n                                                    .describe(\n                                                      'External media URL. Can be used only on write.'\n                                                    )\n                                                    .url(),\n                                                }),\n                                              ])\n                                            )\n                                          )\n                                          .max(15)\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Media references for this choice.\\n\\nOn *write*, you can use either `media_id` or `url` to assign a media to this choice from the product\\'s media.\\nOn *read*, this field will return the media IDs of the associated media items.\\nWhen this field is requested via the `PRODUCT_CHOICES_MEDIA_REFERENCES` field, the `linked_media` field will be returned empty to avoid duplication.\\n\\n> **Note:** Use this field instead of `linked_media`. To use it in your read flow, pass `\"PRODUCT_CHOICES_MEDIA_REFERENCES\"` to the `fields` array in your request.'\n                                      )\n                                      .optional(),\n                                  }),\n                                  z.xor([\n                                    z.object({\n                                      colorCode: z.never().optional(),\n                                    }),\n                                    z.object({\n                                      colorCode: z\n                                        .string()\n                                        .describe(\n                                          'Color code in HEX format, [as described by MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color).'\n                                        )\n                                        .min(3)\n                                        .max(20),\n                                    }),\n                                  ])\n                                )\n                              )\n                              .min(1)\n                              .max(100)\n                              .optional(),\n                          })\n                          .describe('Choice settings.'),\n                      }),\n                    ])\n                  )\n                )\n                .max(10)\n                .optional(),\n              brand: z\n                .object({\n                  _id: z\n                    .string()\n                    .describe('Brand ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Brand name.')\n                    .max(50)\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  \"Product [brand](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/brands-v3/introduction).\\n\\n+ Pass `brand.name` to add a new brand while creating a product.\\n+ Pass an existing brand's `id` to assign that brand to the product.\"\n                )\n                .optional(),\n              infoSections: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Info section ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    uniqueName: z\n                      .string()\n                      .describe(\n                        'Info section unique name.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                      )\n                      .max(100)\n                      .optional()\n                      .nullable(),\n                    title: z\n                      .string()\n                      .describe(\n                        'Info section title.\\n> **Note:** Returned only when you pass `\"INFO_SECTION\"` to the `fields` array in Products API requests.'\n                      )\n                      .min(1)\n                      .max(50)\n                      .optional()\n                      .nullable(),\n                    description: z\n                      .any()\n                      .describe(\n                        'Info section description using rich content.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_DESCRIPTION\"` to the `fields` array in Products API requests.\\n\\n<widget src=\"https://apps.wix.com/_serverless/ricos-playground-services/goto/api-component\" plugins=\"indent.emoji.divider.codeBlock.file.gallery.giphy.image.table.link.textHighlight.textColor\" exampleid=\"7dc9240e-d548-417a-abcf-0291b68b4303\">\\n<a href=\"https://dev.wix.com/docs/ricos/api-reference/ricos-document\">See Ricos document reference</a>\\n</widget>'\n                      )\n                      .optional(),\n                    plainDescription: z\n                      .string()\n                      .describe(\n                        'Info section description in HTML.\\n\\nWhen provided on create/update, this string must be a valid HTML. It will then be converted to rich content.\\n`plainDescription` is ignored when value is also passed to the `description` field.\\n> **Note:** Returned only when you pass `\"INFO_SECTION_PLAIN_DESCRIPTION\"` to the `fields` array in Products API requests.'\n                      )\n                      .max(16000)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(10)\n                .optional(),\n              ribbon: z\n                .object({\n                  _id: z\n                    .string()\n                    .describe('Ribbon ID.')\n                    .min(1)\n                    .max(36)\n                    .optional()\n                    .nullable(),\n                  name: z\n                    .string()\n                    .describe('Ribbon name.')\n                    .max(30)\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  \"Primary [ribbon](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/ribbons-v3/introduction) displayed on the product. Use `additionalRibbons` to assign further ribbons beyond the primary one.\\n\\n+ Pass `ribbon.name` to add a new ribbon while creating a product.\\n+ Pass an existing ribbon's `id` or `name` to assign that ribbon to the product.\"\n                )\n                .optional(),\n              directCategoriesInfo: z\n                .object({\n                  categories: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('Category ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        index: z\n                          .number()\n                          .int()\n                          .describe(\n                            'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                          )\n                          .min(0)\n                          .max(200)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(2000)\n                    .optional(),\n                })\n                .describe(\n                  'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product.\\n\\nUpdated automatically when a product is added/removed from a category, when an item is moved within a category, or when a category is deleted.\\n> **Note:** Returned only when you pass `\"DIRECT_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              allCategoriesInfo: z\n                .object({\n                  categories: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('Category ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        index: z\n                          .number()\n                          .int()\n                          .describe(\n                            'Index location of the product within the category, used for sorting products in a specific category. You can manually arrange up to 100 products per category. For detailed instructions, refer to the [Add and arrange products in a category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/products-v3/sample-use-cases-and-flows#add-and-arrange-products-in-a-category) sample flow.'\n                          )\n                          .min(0)\n                          .max(200)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(2000)\n                    .optional(),\n                })\n                .describe(\n                  'List of [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction) that directly contain this product, as well as their parent categories.\\n> **Note:** Returned only when you pass `\"ALL_CATEGORIES_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              mainCategoryId: z\n                .string()\n                .describe(\n                  'The ID of the product\\'s primary direct [category](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction), which defines the product\\'s breadcrumbs path. For example, if the product\\'s main category is \"T-Shirts\" (which is a subcategory of \"Clothing\"), the breadcrumbs path will be \"Clothing > T-Shirts\".'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              costRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum value.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum value.')\n                    .optional(),\n                })\n                .describe(\n                  'Product cost range - minimum and maximum costs of all product variants.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                )\n                .optional(),\n              inventory: z\n                .object({\n                  availabilityStatus: z\n                    .enum([\n                      'IN_STOCK',\n                      'OUT_OF_STOCK',\n                      'PARTIALLY_OUT_OF_STOCK',\n                    ])\n                    .describe('Current availability status.')\n                    .optional(),\n                  preorderStatus: z\n                    .enum(['ENABLED', 'DISABLED', 'PARTIALLY_ENABLED'])\n                    .describe('Current preorder status.')\n                    .optional(),\n                  preorderAvailability: z\n                    .enum(['ALL_VARIANTS', 'NO_VARIANTS', 'SOME_VARIANTS'])\n                    .describe('Preorder availability status.')\n                    .optional(),\n                })\n                .describe(\n                  'Product inventory info.\\n\\n> **Note:** This field reflects the aggregated inventory status from the default location only. Use the [Inventory Items API](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/inventory-items-v3/introduction) to manage inventory for specific locations. Learn more about [inventory management](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-inventory-management).'\n                )\n                .optional(),\n              productType: z\n                .enum(['PHYSICAL', 'DIGITAL'])\n                .describe(\n                  'Product type: `PHYSICAL` for tangible goods that require shipping, or `DIGITAL` for downloadable content.\\n\\nWhen passing `productType: PHYSICAL`, you must also pass `physicalProperties`. When passing `productType: DIGITAL`, you can optionally pass `digitalProperties` in each variant.'\n                )\n                .optional(),\n              handle: z\n                .string()\n                .describe(\n                  \"A unique human-friendly identifier for the product.\\n\\nUnlike the auto-generated `id`, the handle can be set when creating a product. This is useful when re-importing products from other systems, as it provides a stable identifier across platforms. If not provided during creation, one is automatically generated. Can't be changed after creation.\"\n                )\n                .min(1)\n                .max(100)\n                .optional()\n                .nullable(),\n              currency: z\n                .string()\n                .describe(\n                  'Currency used for the pricing of this product, in [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes) format.\\n\\nDefaults to the currency defined in the site settings, unless specified in the request\\'s `x-wix-currency` header.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                )\n                .optional()\n                .nullable(),\n              breadcrumbsInfo: z\n                .object({\n                  breadcrumbs: z\n                    .array(\n                      z.object({\n                        categoryId: z\n                          .string()\n                          .describe('Category ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        categoryName: z\n                          .string()\n                          .describe('Category name.')\n                          .min(1)\n                          .max(80)\n                          .optional(),\n                        categorySlug: z\n                          .string()\n                          .describe('Category slug.')\n                          .min(1)\n                          .max(100)\n                          .optional(),\n                      })\n                    )\n                    .max(5)\n                    .optional(),\n                })\n                .describe(\n                  'Breadcrumbs of the `mainCategoryId`. Used to navigate to parent [categories](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/categories/introduction). Useful for building navigation UI and for SEO purposes.\\n> **Note:** Returned only when you pass `\"BREADCRUMBS_INFO\"` to the `fields` array in Products API requests.'\n                )\n                .optional(),\n              actualPriceRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum value.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum value.')\n                    .optional(),\n                })\n                .describe(\n                  'Minimum and maximum current selling prices across all product variants.'\n                )\n                .optional(),\n              compareAtPriceRange: z\n                .object({\n                  minValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Minimum value.')\n                    .optional(),\n                  maxValue: z\n                    .object({\n                      amount: z\n                        .string()\n                        .describe(\n                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                        )\n                        .optional(),\n                      formattedAmount: z\n                        .string()\n                        .describe(\n                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                        )\n                        .max(20)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Maximum value.')\n                    .optional(),\n                })\n                .describe(\n                  'Minimum and maximum compare-at prices (original prices before discounts) across all product variants. Used to show savings to customers.'\n                )\n                .optional(),\n              variantsInfo: z\n                .object({\n                  variants: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          _id: z\n                            .string()\n                            .describe('Variant ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          visible: z\n                            .boolean()\n                            .describe(\n                              \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                            )\n                            .optional()\n                            .nullable(),\n                          sku: z\n                            .string()\n                            .describe('Variant SKU (stock keeping unit).')\n                            .min(1)\n                            .max(40)\n                            .optional()\n                            .nullable(),\n                          barcode: z\n                            .string()\n                            .describe('Variant barcode.')\n                            .min(1)\n                            .max(40)\n                            .optional()\n                            .nullable(),\n                          choices: z\n                            .array(\n                              z.object({\n                                optionChoiceIds: z\n                                  .object({\n                                    optionId: z\n                                      .string()\n                                      .describe('Option ID.')\n                                      .min(1)\n                                      .max(36)\n                                      .optional(),\n                                    choiceId: z\n                                      .string()\n                                      .describe('Choice ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                                  )\n                                  .optional(),\n                                optionChoiceNames: z\n                                  .object({\n                                    optionName: z\n                                      .string()\n                                      .describe('Option name.')\n                                      .min(1)\n                                      .optional(),\n                                    choiceName: z\n                                      .string()\n                                      .describe('Choice name.')\n                                      .min(1)\n                                      .optional(),\n                                    renderType: z\n                                      .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                      .describe(\n                                        'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .optional(),\n                              })\n                            )\n                            .min(0)\n                            .max(6)\n                            .optional(),\n                          price: z\n                            .object({\n                              actualPrice: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  \"Variant's current selling price. Must be greater than or equal to 0.\"\n                                )\n                                .optional(),\n                              compareAtPrice: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                                )\n                                .optional(),\n                              priceAfterDiscount: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                )\n                                .optional(),\n                            })\n                            .describe('Variant price.')\n                            .optional(),\n                          revenueDetails: z\n                            .object({\n                              cost: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe('Item cost.')\n                                .optional(),\n                              profit: z\n                                .object({\n                                  amount: z\n                                    .string()\n                                    .describe(\n                                      'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                    )\n                                    .optional(),\n                                  formattedAmount: z\n                                    .string()\n                                    .describe(\n                                      'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(20)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                                )\n                                .optional(),\n                              profitMargin: z\n                                .number()\n                                .describe(\n                                  'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                                )\n                                .min(0)\n                                .max(1)\n                                .optional(),\n                            })\n                            .describe(\n                              'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                            )\n                            .optional(),\n                          media: z\n                            .intersection(\n                              z.object({\n                                altText: z\n                                  .string()\n                                  .describe('Image alt text.')\n                                  .min(1)\n                                  .max(1000)\n                                  .optional()\n                                  .nullable(),\n                                displayName: z\n                                  .string()\n                                  .describe(\n                                    \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                  )\n                                  .max(80)\n                                  .optional()\n                                  .nullable(),\n                                mediaType: z\n                                  .enum(['IMAGE', 'VIDEO'])\n                                  .describe('Media type.')\n                                  .optional(),\n                                thumbnail: z\n                                  .object({\n                                    url: z\n                                      .string()\n                                      .describe('Thumbnail url.')\n                                      .url()\n                                      .optional(),\n                                    height: z\n                                      .number()\n                                      .int()\n                                      .describe('Thumbnail height.')\n                                      .optional(),\n                                    width: z\n                                      .number()\n                                      .int()\n                                      .describe('Thumbnail width.')\n                                      .optional(),\n                                    altText: z\n                                      .string()\n                                      .describe('Thumbnail alt text.')\n                                      .min(1)\n                                      .max(1000)\n                                      .optional()\n                                      .nullable(),\n                                  })\n                                  .describe(\n                                    'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .optional(),\n                                uploadId: z\n                                  .string()\n                                  .describe(\n                                    'ID used to upload media to Wix Media Manager.'\n                                  )\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional(),\n                              }),\n                              z.intersection(\n                                z.xor([\n                                  z.object({\n                                    _id: z.never().optional(),\n                                    url: z.never().optional(),\n                                  }),\n                                  z.object({\n                                    url: z.never().optional(),\n                                    _id: z\n                                      .string()\n                                      .describe(\n                                        'Set media by ID of an existing file in Wix Media Manager.'\n                                      )\n                                      .min(1)\n                                      .max(200),\n                                  }),\n                                  z.object({\n                                    _id: z.never().optional(),\n                                    url: z\n                                      .string()\n                                      .describe(\n                                        'Set media using an external media URL.'\n                                      )\n                                      .url(),\n                                  }),\n                                ]),\n                                z.xor([\n                                  z.object({\n                                    image: z.never().optional(),\n                                    video: z.never().optional(),\n                                  }),\n                                  z.object({\n                                    video: z.never().optional(),\n                                    image: z\n                                      .string()\n                                      .describe(\n                                        \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                      ),\n                                  }),\n                                  z.object({\n                                    image: z.never().optional(),\n                                    video: z\n                                      .string()\n                                      .describe(\n                                        \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                      ),\n                                  }),\n                                ])\n                              )\n                            )\n                            .describe('Variant media.')\n                            .optional(),\n                          subscriptionPricesInfo: z\n                            .object({\n                              subscriptionPrices: z\n                                .array(\n                                  z.object({\n                                    subscriptionId: z\n                                      .string()\n                                      .describe('Subscription ID.')\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional(),\n                                    price: z\n                                      .object({\n                                        amount: z\n                                          .string()\n                                          .describe(\n                                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                          )\n                                          .optional(),\n                                        formattedAmount: z\n                                          .string()\n                                          .describe(\n                                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                      )\n                                      .optional(),\n                                    pricePerUnit: z\n                                      .object({\n                                        value: z\n                                          .string()\n                                          .describe(\n                                            'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                          )\n                                          .optional(),\n                                        description: z\n                                          .string()\n                                          .describe(\n                                            'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                        priceAfterDiscount: z\n                                          .object({\n                                            amount: z\n                                              .string()\n                                              .describe(\n                                                'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                              )\n                                              .optional(),\n                                            formattedAmount: z\n                                              .string()\n                                              .describe(\n                                                'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                              )\n                                              .max(20)\n                                              .optional()\n                                              .nullable(),\n                                          })\n                                          .describe(\n                                            'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe('Price per unit info.')\n                                      .optional(),\n                                    priceAfterDiscount: z\n                                      .object({\n                                        amount: z\n                                          .string()\n                                          .describe(\n                                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                          )\n                                          .optional(),\n                                        formattedAmount: z\n                                          .string()\n                                          .describe(\n                                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                      )\n                                      .optional(),\n                                  })\n                                )\n                                .max(6)\n                                .optional(),\n                            })\n                            .describe(\n                              'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                            )\n                            .optional(),\n                          inventoryStatus: z\n                            .object({\n                              inStock: z\n                                .boolean()\n                                .describe('Whether the variant is in stock.')\n                                .optional(),\n                              preorderEnabled: z\n                                .boolean()\n                                .describe(\n                                  'Whether preorder is enabled for this variant.'\n                                )\n                                .optional(),\n                            })\n                            .describe('Variant inventory status.')\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({\n                            physicalProperties: z.never().optional(),\n                            digitalProperties: z.never().optional(),\n                          }),\n                          z.object({\n                            digitalProperties: z.never().optional(),\n                            physicalProperties: z\n                              .object({\n                                weight: z\n                                  .number()\n                                  .describe(\n                                    'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                                  )\n                                  .min(0)\n                                  .max(999999999.99)\n                                  .optional()\n                                  .nullable(),\n                                pricePerUnit: z\n                                  .object({\n                                    settings: z\n                                      .object({\n                                        quantity: z\n                                          .number()\n                                          .describe(\n                                            'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                          )\n                                          .min(0.01)\n                                          .max(999999999.99)\n                                          .optional(),\n                                        measurementUnit: z\n                                          .enum([\n                                            'UNSPECIFIED',\n                                            'ML',\n                                            'CL',\n                                            'L',\n                                            'CBM',\n                                            'MG',\n                                            'G',\n                                            'KG',\n                                            'MM',\n                                            'CM',\n                                            'M',\n                                            'SQM',\n                                            'OZ',\n                                            'LB',\n                                            'FLOZ',\n                                            'PT',\n                                            'QT',\n                                            'GAL',\n                                            'IN',\n                                            'FT',\n                                            'YD',\n                                            'SQFT',\n                                          ])\n                                          .describe(\n                                            'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                          )\n                                          .optional(),\n                                      })\n                                      .describe(\n                                        'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                      )\n                                      .optional(),\n                                    value: z\n                                      .string()\n                                      .describe(\n                                        \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                      )\n                                      .optional(),\n                                    description: z\n                                      .string()\n                                      .describe(\n                                        'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                      )\n                                      .max(100)\n                                      .optional()\n                                      .nullable(),\n                                    priceAfterDiscount: z\n                                      .object({\n                                        amount: z\n                                          .string()\n                                          .describe(\n                                            'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                          )\n                                          .optional(),\n                                        formattedAmount: z\n                                          .string()\n                                          .describe(\n                                            'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                          )\n                                          .max(20)\n                                          .optional()\n                                          .nullable(),\n                                      })\n                                      .describe(\n                                        'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                                  )\n                                  .optional(),\n                                productDimensions: z\n                                  .object({\n                                    length: z\n                                      .string()\n                                      .describe(\n                                        'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    width: z\n                                      .string()\n                                      .describe(\n                                        'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    height: z\n                                      .string()\n                                      .describe(\n                                        'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    unit: z\n                                      .enum([\n                                        'UNKNOWN_DIMENSIONS_UNIT',\n                                        'MM',\n                                        'CM',\n                                        'M',\n                                        'IN',\n                                        'FT',\n                                        'YD',\n                                      ])\n                                      .describe(\n                                        'Unit of measurement for dimensions (length, width, height).'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Product dimensions (length, width, height of the physical product).'\n                                  )\n                                  .optional(),\n                                packageDimensions: z\n                                  .object({\n                                    length: z\n                                      .string()\n                                      .describe(\n                                        'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    width: z\n                                      .string()\n                                      .describe(\n                                        'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    height: z\n                                      .string()\n                                      .describe(\n                                        'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    unit: z\n                                      .enum([\n                                        'UNKNOWN_DIMENSIONS_UNIT',\n                                        'MM',\n                                        'CM',\n                                        'M',\n                                        'IN',\n                                        'FT',\n                                        'YD',\n                                      ])\n                                      .describe(\n                                        'Unit of measurement for dimensions (length, width, height).'\n                                      )\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Package dimensions (length, width, height of the shipping package).'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Physical properties. Must be passed when `productType: PHYSICAL`'\n                              ),\n                          }),\n                          z.object({\n                            physicalProperties: z.never().optional(),\n                            digitalProperties: z\n                              .object({\n                                digitalFile: z\n                                  .object({\n                                    _id: z\n                                      .string()\n                                      .describe('Media ID in media manager.')\n                                      .min(1)\n                                      .max(100)\n                                      .optional(),\n                                    fileName: z\n                                      .string()\n                                      .describe('Original file name.')\n                                      .min(1)\n                                      .max(1000)\n                                      .optional(),\n                                    fileSize: z\n                                      .string()\n                                      .describe('Original file size.')\n                                      .min(1)\n                                      .max(1000)\n                                      .optional()\n                                      .nullable(),\n                                    fileType: z\n                                      .enum([\n                                        'UNSPECIFIED',\n                                        'SECURE_PICTURE',\n                                        'SECURE_VIDEO',\n                                        'SECURE_DOCUMENT',\n                                        'SECURE_MUSIC',\n                                        'SECURE_ARCHIVE',\n                                        'SECURE_RAW',\n                                      ])\n                                      .describe('File type.')\n                                      .optional(),\n                                  })\n                                  .describe(\n                                    'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                                  )\n                                  .optional(),\n                              })\n                              .describe(\n                                'Digital properties. Must be passed when `productType: DIGITAL`'\n                              ),\n                          }),\n                        ])\n                      )\n                    )\n                    .min(1)\n                    .max(1000)\n                    .optional(),\n                })\n                .describe(\n                  'Product variants. Each variant represents a specific purchasable version of a product defined by option choices.\\n\\nEach variant must reference all product options via its `choices` array, using `optionChoiceNames` in requests.\\nYou must explicitly provide each variant when creating products with options.\\n\\nFor more information, see [About Product Options and Variants](https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/about-product-options-and-variants).'\n                )\n                .optional(),\n              purchaseEligibility: z\n                .object({ userCriteria: z.enum(['MEMBERS_ONLY']).optional() })\n                .describe('Purchase eligibility settings for the product.')\n                .optional(),\n              additionalRibbons: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('Ribbon ID.')\n                      .min(1)\n                      .max(36)\n                      .optional()\n                      .nullable(),\n                    name: z\n                      .string()\n                      .describe('Ribbon name.')\n                      .max(30)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(4)\n                .optional(),\n              extendedFields: z\n                .object({\n                  namespaces: z\n                    .record(z.string(), z.record(z.string(), z.any()))\n                    .describe(\n                      'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Custom extended fields for the product object.\\n\\n[Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions) must be configured in the app dashboard before they can be accessed with API calls.'\n                )\n                .optional(),\n              tags: z\n                .object({\n                  privateTags: z\n                    .object({ tagIds: z.array(z.string()).max(100).optional() })\n                    .describe(\n                      'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n                    )\n                    .optional(),\n                  publicTags: z\n                    .object({ tagIds: z.array(z.string()).max(100).optional() })\n                    .describe(\n                      'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n                    )\n                    .optional(),\n                })\n                .describe('Tags')\n                .optional(),\n              subscriptionDetails: z\n                .object({\n                  subscriptions: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          _id: z\n                            .string()\n                            .describe('Subscription ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          title: z\n                            .string()\n                            .describe('Subscription title.')\n                            .min(1)\n                            .max(20)\n                            .optional(),\n                          description: z\n                            .string()\n                            .describe('Subscription description.')\n                            .max(60)\n                            .optional()\n                            .nullable(),\n                          visible: z\n                            .boolean()\n                            .describe(\n                              'Whether the subscription is visible to site visitors.\\n\\nDefault: `true`'\n                            )\n                            .optional()\n                            .nullable(),\n                          frequency: z\n                            .enum(['UNDEFINED', 'DAY', 'WEEK', 'MONTH', 'YEAR'])\n                            .describe(\n                              'Frequency of recurring payment.\\nFor example, if `frequency: MONTH` and `billingCycles: 6`; payment will be made monthly for 6 months.'\n                            )\n                            .optional(),\n                          interval: z\n                            .number()\n                            .int()\n                            .describe(\n                              'Interval of recurring payment. Default: `1`. For example, if `frequency: MONTH`, `billingCycles: 3` and `interval: 2`; payment will be made every 2 months for a total of 6 months.'\n                            )\n                            .min(1)\n                            .max(50)\n                            .optional()\n                            .nullable(),\n                          discount: z\n                            .intersection(\n                              z.object({\n                                type: z\n                                  .enum(['AMOUNT', 'PERCENT'])\n                                  .describe('Discount type.')\n                                  .optional(),\n                              }),\n                              z.xor([\n                                z.object({\n                                  amountOff: z.never().optional(),\n                                  percentOff: z.never().optional(),\n                                }),\n                                z.object({\n                                  percentOff: z.never().optional(),\n                                  amountOff: z\n                                    .string()\n                                    .describe(\n                                      'Fixed amount subtracted from the variant price when calculating subscription prices.'\n                                    ),\n                                }),\n                                z.object({\n                                  amountOff: z.never().optional(),\n                                  percentOff: z\n                                    .number()\n                                    .describe(\n                                      'Percentage subtracted from the variant price when calculating subscription prices.'\n                                    )\n                                    .min(0.1)\n                                    .max(99.9),\n                                }),\n                              ])\n                            )\n                            .describe(\n                              'Discount info (optional).\\nFor example, a $20 discount would be `amount: 20`, `type: AMOUNT`.'\n                            )\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({\n                            autoRenewal: z.never().optional(),\n                            billingCycles: z.never().optional(),\n                          }),\n                          z.object({\n                            billingCycles: z.never().optional(),\n                            autoRenewal: z\n                              .boolean()\n                              .describe(\n                                'Whether subscription is renewed automatically at the end of each period. Cannot be `false`, instead set `billingCycles`.'\n                              ),\n                          }),\n                          z.object({\n                            autoRenewal: z.never().optional(),\n                            billingCycles: z\n                              .number()\n                              .int()\n                              .describe(\n                                'Number of billing cycles before subscription ends.'\n                              )\n                              .min(2)\n                              .max(999),\n                          }),\n                        ])\n                      )\n                    )\n                    .min(1)\n                    .max(6)\n                    .optional(),\n                  allowOneTimePurchases: z\n                    .boolean()\n                    .describe(\n                      'Whether to allow one-time purchases in addition to subscription-based purchases.\\n\\nDefault: `false`'\n                    )\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  \"Product subscriptions.\\n\\nSubscription discounts are defined at the product level but apply to each variant's `actualPrice`. This means the final subscription price varies per variant based on the variant's base price.\"\n                )\n                .optional(),\n              variantSummary: z\n                .object({\n                  variantCount: z\n                    .number()\n                    .int()\n                    .describe('The total number of variants for the product.')\n                    .optional(),\n                  minPriceVariant: z\n                    .intersection(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('Variant ID.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        visible: z\n                          .boolean()\n                          .describe(\n                            \"Whether the variant is visible to site visitors.\\n\\nDefault: `true`\\n\\n> **Note:** For products without options, updating this field automatically\\n> updates the product's visibility to match.\\n> For products with options, the product and variant visibility values are independent.\"\n                          )\n                          .optional()\n                          .nullable(),\n                        sku: z\n                          .string()\n                          .describe('Variant SKU (stock keeping unit).')\n                          .min(1)\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        barcode: z\n                          .string()\n                          .describe('Variant barcode.')\n                          .min(1)\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        choices: z\n                          .array(\n                            z.object({\n                              optionChoiceIds: z\n                                .object({\n                                  optionId: z\n                                    .string()\n                                    .describe('Option ID.')\n                                    .min(1)\n                                    .max(36)\n                                    .optional(),\n                                  choiceId: z\n                                    .string()\n                                    .describe('Choice ID.')\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  \"Option and choice IDs. These match the IDs of the option and choice from the product's options field.\"\n                                )\n                                .optional(),\n                              optionChoiceNames: z\n                                .object({\n                                  optionName: z\n                                    .string()\n                                    .describe('Option name.')\n                                    .min(1)\n                                    .optional(),\n                                  choiceName: z\n                                    .string()\n                                    .describe('Choice name.')\n                                    .min(1)\n                                    .optional(),\n                                  renderType: z\n                                    .enum(['TEXT_CHOICES', 'SWATCH_CHOICES'])\n                                    .describe(\n                                      'Render type of the option. Required when using `optionChoiceNames`. Must match the `optionRenderType` of the referenced option.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Option and choice names.\\n> **Note:** Returned only when you pass `\"VARIANT_OPTION_CHOICE_NAMES\"` to the `fields` array in Products API requests.'\n                                )\n                                .optional(),\n                            })\n                          )\n                          .min(0)\n                          .max(6)\n                          .optional(),\n                        price: z\n                          .object({\n                            actualPrice: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                \"Variant's current selling price. Must be greater than or equal to 0.\"\n                              )\n                              .optional(),\n                            compareAtPrice: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Original price before any discount, shown with a strikethrough in the UI of Wix sites. Only set this if a discount applies. When set, it should be higher than `actualPrice` to reflect savings.'\n                              )\n                              .optional(),\n                            priceAfterDiscount: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Variant selling price after automatic discounts are applied to `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + On Query Products and Search Products, returned only on `variantSummary.minPriceVariant` when `MIN_PRICE_VARIANT` is also requested.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                              )\n                              .optional(),\n                          })\n                          .describe('Variant price.')\n                          .optional(),\n                        revenueDetails: z\n                          .object({\n                            cost: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe('Item cost.')\n                              .optional(),\n                            profit: z\n                              .object({\n                                amount: z\n                                  .string()\n                                  .describe(\n                                    'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                  )\n                                  .optional(),\n                                formattedAmount: z\n                                  .string()\n                                  .describe(\n                                    'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                  )\n                                  .max(20)\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe(\n                                'Profit. Calculated by reducing `cost` from `discountedPrice`.'\n                              )\n                              .optional(),\n                            profitMargin: z\n                              .number()\n                              .describe(\n                                'Profit Margin. Calculated by dividing `profit` by `discountedPrice`.\\nThe result is rounded to 4 decimal places.'\n                              )\n                              .min(0)\n                              .max(1)\n                              .optional(),\n                          })\n                          .describe(\n                            'Variant revenue details.\\n\\n> **Note:** Returned only when the following conditions are met:\\n> + You pass `\"MERCHANT_DATA\"` to the `fields` array in Products API requests.\\n> + Your app has the required `SCOPE.STORES.PRODUCT_READ_ADMIN` permission scope.'\n                          )\n                          .optional(),\n                        media: z\n                          .intersection(\n                            z.object({\n                              altText: z\n                                .string()\n                                .describe('Image alt text.')\n                                .min(1)\n                                .max(1000)\n                                .optional()\n                                .nullable(),\n                              displayName: z\n                                .string()\n                                .describe(\n                                  \"Media display name.\\n\\nOverrides the default media name. Can be passed only when the media is set by a URL in this item's `url` field.\"\n                                )\n                                .max(80)\n                                .optional()\n                                .nullable(),\n                              mediaType: z\n                                .enum(['IMAGE', 'VIDEO'])\n                                .describe('Media type.')\n                                .optional(),\n                              thumbnail: z\n                                .object({\n                                  url: z\n                                    .string()\n                                    .describe('Thumbnail url.')\n                                    .url()\n                                    .optional(),\n                                  height: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail height.')\n                                    .optional(),\n                                  width: z\n                                    .number()\n                                    .int()\n                                    .describe('Thumbnail width.')\n                                    .optional(),\n                                  altText: z\n                                    .string()\n                                    .describe('Thumbnail alt text.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  'Media thumbnail.\\n> **Note:** Returned only when you pass `\"THUMBNAIL\"` to the `fields` array in Products API requests.'\n                                )\n                                .optional(),\n                              uploadId: z\n                                .string()\n                                .describe(\n                                  'ID used to upload media to Wix Media Manager.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                            }),\n                            z.intersection(\n                              z.xor([\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z.never().optional(),\n                                }),\n                                z.object({\n                                  url: z.never().optional(),\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Set media by ID of an existing file in Wix Media Manager.'\n                                    )\n                                    .min(1)\n                                    .max(200),\n                                }),\n                                z.object({\n                                  _id: z.never().optional(),\n                                  url: z\n                                    .string()\n                                    .describe(\n                                      'Set media using an external media URL.'\n                                    )\n                                    .url(),\n                                }),\n                              ]),\n                              z.xor([\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z.never().optional(),\n                                }),\n                                z.object({\n                                  video: z.never().optional(),\n                                  image: z\n                                    .string()\n                                    .describe(\n                                      \"Image details. Populated when you provide a [Wix Media Manager](https://support.wix.com/en/article/wix-media-about-the-media-manager) file ID in this item's `id` field.\"\n                                    ),\n                                }),\n                                z.object({\n                                  image: z.never().optional(),\n                                  video: z\n                                    .string()\n                                    .describe(\n                                      \"Video details. Populated when you provide a Wix Media Manager file ID in this istem's `id` field.\"\n                                    ),\n                                }),\n                              ])\n                            )\n                          )\n                          .describe('Variant media.')\n                          .optional(),\n                        subscriptionPricesInfo: z\n                          .object({\n                            subscriptionPrices: z\n                              .array(\n                                z.object({\n                                  subscriptionId: z\n                                    .string()\n                                    .describe('Subscription ID.')\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                  price: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Subscription price calculated by applying subscription discount to the variant `price.actual_price`'\n                                    )\n                                    .optional(),\n                                  pricePerUnit: z\n                                    .object({\n                                      value: z\n                                        .string()\n                                        .describe(\n                                          'Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, `pricePerUnit` settings of this variant, and the variant subscription price.'\n                                        )\n                                        .optional(),\n                                      description: z\n                                        .string()\n                                        .describe(\n                                          'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                      priceAfterDiscount: z\n                                        .object({\n                                          amount: z\n                                            .string()\n                                            .describe(\n                                              'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                            )\n                                            .optional(),\n                                          formattedAmount: z\n                                            .string()\n                                            .describe(\n                                              'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                            )\n                                            .max(20)\n                                            .optional()\n                                            .nullable(),\n                                        })\n                                        .describe(\n                                          'Subscription price per unit after automatic discounts are applied.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                        )\n                                        .optional(),\n                                    })\n                                    .describe('Price per unit info.')\n                                    .optional(),\n                                  priceAfterDiscount: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Subscription price after automatic discounts are applied.\\nUses the variant automatic discount price as the base, not `actualPrice`.\\n\\n> **Notes:**\\n> + Returned only when you pass both `\"SUBSCRIPTION_PRICES_INFO\"` and `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                    )\n                                    .optional(),\n                                })\n                              )\n                              .max(6)\n                              .optional(),\n                          })\n                          .describe(\n                            'Subscription prices calculated by applying subscription discount to the variant `price.actual_price`.\\n> **Note:** Returned only when you pass `\"SUBSCRIPTION_PRICES_INFO\"` to the `fields` array in Products API requests.'\n                          )\n                          .optional(),\n                        inventoryStatus: z\n                          .object({\n                            inStock: z\n                              .boolean()\n                              .describe('Whether the variant is in stock.')\n                              .optional(),\n                            preorderEnabled: z\n                              .boolean()\n                              .describe(\n                                'Whether preorder is enabled for this variant.'\n                              )\n                              .optional(),\n                          })\n                          .describe('Variant inventory status.')\n                          .optional(),\n                      }),\n                      z.xor([\n                        z.object({\n                          physicalProperties: z.never().optional(),\n                          digitalProperties: z.never().optional(),\n                        }),\n                        z.object({\n                          digitalProperties: z.never().optional(),\n                          physicalProperties: z\n                            .object({\n                              weight: z\n                                .number()\n                                .describe(\n                                  'Variant shipping weight.\\nproduct.physicalProperties.shipping_weight_range values are taken from here.'\n                                )\n                                .min(0)\n                                .max(999999999.99)\n                                .optional()\n                                .nullable(),\n                              pricePerUnit: z\n                                .object({\n                                  settings: z\n                                    .object({\n                                      quantity: z\n                                        .number()\n                                        .describe(\n                                          'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                                        )\n                                        .min(0.01)\n                                        .max(999999999.99)\n                                        .optional(),\n                                      measurementUnit: z\n                                        .enum([\n                                          'UNSPECIFIED',\n                                          'ML',\n                                          'CL',\n                                          'L',\n                                          'CBM',\n                                          'MG',\n                                          'G',\n                                          'KG',\n                                          'MM',\n                                          'CM',\n                                          'M',\n                                          'SQM',\n                                          'OZ',\n                                          'LB',\n                                          'FLOZ',\n                                          'PT',\n                                          'QT',\n                                          'GAL',\n                                          'IN',\n                                          'FT',\n                                          'YD',\n                                          'SQFT',\n                                        ])\n                                        .describe(\n                                          'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                                        )\n                                        .optional(),\n                                    })\n                                    .describe(\n                                      'Price per unit data for this variant.\\n`measurementUnit` value must correspond to the measurement unit set on the product.'\n                                    )\n                                    .optional(),\n                                  value: z\n                                    .string()\n                                    .describe(\n                                      \"Calculated value of price per unit. Takes into account `pricePerUnit` settings of parent product, of this variant, and discounted price of variant.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                                    )\n                                    .optional(),\n                                  description: z\n                                    .string()\n                                    .describe(\n                                      'Price per unit description.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                    )\n                                    .max(100)\n                                    .optional()\n                                    .nullable(),\n                                  priceAfterDiscount: z\n                                    .object({\n                                      amount: z\n                                        .string()\n                                        .describe(\n                                          'Monetary amount. For example, `\"3.99\"`, or `\"-4.99\"` for a negative amount.'\n                                        )\n                                        .optional(),\n                                      formattedAmount: z\n                                        .string()\n                                        .describe(\n                                          'Formatted monetary amount. For example, `\"$3.99\"`.\\n> **Note:** Returned only when you pass `\"CURRENCY\"` to the `fields` array in Products API requests.'\n                                        )\n                                        .max(20)\n                                        .optional()\n                                        .nullable(),\n                                    })\n                                    .describe(\n                                      'Price per unit calculated from the variant automatic discount price.\\n\\n> **Notes:**\\n> + Returned only when you pass `\"DISCOUNT_INFO\"` in Products API requests.\\n> + `formattedAmount` is returned only when you also pass `\"CURRENCY\"`.'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  \"Price per unit info, in order to show price per unit on the product page.\\nFor example if one sells cheese and defines 100g here then we know that buying this variant buyer receives 100g of cheese.\\nBut on product page price will be displayed for units defined on product level. See `pricePerUnit.value` to understand how it's calculated.\"\n                                )\n                                .optional(),\n                              productDimensions: z\n                                .object({\n                                  length: z\n                                    .string()\n                                    .describe(\n                                      'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  width: z\n                                    .string()\n                                    .describe(\n                                      'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  height: z\n                                    .string()\n                                    .describe(\n                                      'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  unit: z\n                                    .enum([\n                                      'UNKNOWN_DIMENSIONS_UNIT',\n                                      'MM',\n                                      'CM',\n                                      'M',\n                                      'IN',\n                                      'FT',\n                                      'YD',\n                                    ])\n                                    .describe(\n                                      'Unit of measurement for dimensions (length, width, height).'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Product dimensions (length, width, height of the physical product).'\n                                )\n                                .optional(),\n                              packageDimensions: z\n                                .object({\n                                  length: z\n                                    .string()\n                                    .describe(\n                                      'Length. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  width: z\n                                    .string()\n                                    .describe(\n                                      'Width. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  height: z\n                                    .string()\n                                    .describe(\n                                      'Height. Measurement unit is handled at the system level (metric/imperial).'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  unit: z\n                                    .enum([\n                                      'UNKNOWN_DIMENSIONS_UNIT',\n                                      'MM',\n                                      'CM',\n                                      'M',\n                                      'IN',\n                                      'FT',\n                                      'YD',\n                                    ])\n                                    .describe(\n                                      'Unit of measurement for dimensions (length, width, height).'\n                                    )\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Package dimensions (length, width, height of the shipping package).'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Physical properties. Must be passed when `productType: PHYSICAL`'\n                            ),\n                        }),\n                        z.object({\n                          physicalProperties: z.never().optional(),\n                          digitalProperties: z\n                            .object({\n                              digitalFile: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe('Media ID in media manager.')\n                                    .min(1)\n                                    .max(100)\n                                    .optional(),\n                                  fileName: z\n                                    .string()\n                                    .describe('Original file name.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional(),\n                                  fileSize: z\n                                    .string()\n                                    .describe('Original file size.')\n                                    .min(1)\n                                    .max(1000)\n                                    .optional()\n                                    .nullable(),\n                                  fileType: z\n                                    .enum([\n                                      'UNSPECIFIED',\n                                      'SECURE_PICTURE',\n                                      'SECURE_VIDEO',\n                                      'SECURE_DOCUMENT',\n                                      'SECURE_MUSIC',\n                                      'SECURE_ARCHIVE',\n                                      'SECURE_RAW',\n                                    ])\n                                    .describe('File type.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Digital file which will be downloaded by the buyer after successful purchase.\\nEach variant can have a different digital file, allowing you to offer different content per variant.'\n                                )\n                                .optional(),\n                            })\n                            .describe(\n                              'Digital properties. Must be passed when `productType: DIGITAL`'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\n                      'The variant with the lowest `actualPrice` among visible variants for this product.\\n\\nHidden variants are excluded; ties are broken by variant order. Empty if the product has no visible variants.\\n> **Note:** Returned only when you pass `\"MIN_PRICE_VARIANT\"` to the `fields` array in Products API requests.'\n                    )\n                    .optional(),\n                })\n                .describe('The total number of variants for the product.')\n                .optional(),\n            }),\n            z.xor([\n              z.object({ physicalProperties: z.never().optional() }),\n              z.object({\n                physicalProperties: z\n                  .object({\n                    pricePerUnit: z\n                      .object({\n                        quantity: z\n                          .number()\n                          .describe(\n                            'Quantity.\\nFor example, to define price per per 100 grams, set this field to `100`.'\n                          )\n                          .min(0.01)\n                          .max(999999999.99)\n                          .optional(),\n                        measurementUnit: z\n                          .enum([\n                            'UNSPECIFIED',\n                            'ML',\n                            'CL',\n                            'L',\n                            'CBM',\n                            'MG',\n                            'G',\n                            'KG',\n                            'MM',\n                            'CM',\n                            'M',\n                            'SQM',\n                            'OZ',\n                            'LB',\n                            'FLOZ',\n                            'PT',\n                            'QT',\n                            'GAL',\n                            'IN',\n                            'FT',\n                            'YD',\n                            'SQFT',\n                          ])\n                          .describe(\n                            'Measurement unit.\\nFor example, to define price per 100 grams, set this field to \"G\".'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Price per unit settings.\\n> **Note:** Use this field only when relevant. For example, for products that are sold by weight, volume, or length.'\n                      )\n                      .optional(),\n                    fulfillerId: z\n                      .string()\n                      .describe('Fulfiller ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    shippingWeightRange: z\n                      .object({\n                        minValue: z\n                          .number()\n                          .describe(\n                            'Minimum weight across all variants associated with this product.'\n                          )\n                          .min(0)\n                          .max(999999999.99)\n                          .optional(),\n                        maxValue: z\n                          .number()\n                          .describe(\n                            'Maximum weight across all variants associated with this product.'\n                          )\n                          .min(0)\n                          .max(999999999.99)\n                          .optional(),\n                      })\n                      .describe(\n                        'Product shipping weight range - Calculated from the lightest and heaviest variant shipping weights.'\n                      )\n                      .optional(),\n                    pricePerUnitRange: z\n                      .object({\n                        minValue: z\n                          .object({\n                            value: z\n                              .string()\n                              .describe(\n                                \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                              )\n                              .optional(),\n                            description: z\n                              .string()\n                              .describe(\n                                'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                              )\n                              .max(100)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Minimum price per unit across all variants.'\n                          )\n                          .optional(),\n                        maxValue: z\n                          .object({\n                            value: z\n                              .string()\n                              .describe(\n                                \"Calculated value of price per unit. Takes into account pricePerUnit settings of product and variants and price of variants.\\nFor example if discounted price is 2$, product's price per unit setting is 1 Kg, variant price per unit setting is 0.5 Kg then this value is 4$ (means variant weight is 0.5 Kg and it costs 2$ but we want to show price per 1 Kg so we show 4$).\"\n                              )\n                              .optional(),\n                            description: z\n                              .string()\n                              .describe(\n                                'Price per unit info in the format of variant specific data / product setting, for example €4.00 / 1 Kg.\\n> **Note:** This field is returned by the API only when you pass `fields: \"CURRENCY\"` in a request.'\n                              )\n                              .max(100)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Maximum price per unit across all variants.'\n                          )\n                          .optional(),\n                      })\n                      .describe(\n                        'Product price per unit range. The minimum and maximum price per unit of all the variants.'\n                      )\n                      .optional(),\n                    weightMeasurementUnitInfo: z\n                      .object({\n                        weightMeasurementUnit: z\n                          .enum(['UNSPECIFIED_WEIGHT_UNIT', 'KG', 'LB'])\n                          .describe('Weight measurement unit.')\n                          .optional(),\n                      })\n                      .describe(\n                        'Weight measurement unit.\\n> **Note:** Returned only when you pass `\"WEIGHT_MEASUREMENT_UNIT_INFO\"` to the `fields` array in Products API requests.'\n                      )\n                      .optional(),\n                    deliveryProfileId: z\n                      .string()\n                      .describe('Delivery profile ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe(\n                    'Physical properties.\\n\\nRequired when `productType: PHYSICAL`.'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'Full product entity.\\n\\nReturned only if `returnEntity: true` is passed in the request.'\n          )\n          .optional(),\n      })\n    )\n    .min(1)\n    .max(100)\n    .optional(),\n  bulkActionMetadata: z\n    .object({\n      totalSuccesses: z\n        .number()\n        .int()\n        .describe('Number of items that were successfully processed.')\n        .optional(),\n      totalFailures: z\n        .number()\n        .int()\n        .describe(\"Number of items that couldn't be processed.\")\n        .optional(),\n      undetailedFailures: z\n        .number()\n        .int()\n        .describe(\n          'Number of failures without details because detailed failure threshold was exceeded.'\n        )\n        .optional(),\n    })\n    .describe('Bulk action metadata.')\n    .optional(),\n});\nexport const BulkAddProductsToCategoriesByFilterRequest = z.object({\n  options: z.object({\n    filter: z\n      .record(z.string(), z.any())\n      .describe('Filter object.')\n      .optional()\n      .nullable(),\n    categoryIds: z.array(z.string()).min(1).max(5),\n    search: z\n      .object({\n        mode: z.enum(['OR', 'AND']).optional(),\n        expression: z\n          .string()\n          .describe('Search term or expression')\n          .max(100)\n          .optional()\n          .nullable(),\n        fields: z.array(z.string()).max(20).optional(),\n        fuzzy: z\n          .boolean()\n          .describe(\n            'Whether to enable the search function to use an algorithm to automatically find results that are close to the search expression, such as typos and declensions.'\n          )\n          .optional(),\n      })\n      .describe('Free text to match in searchable fields.')\n      .optional(),\n  }),\n});\nexport const BulkAddProductsToCategoriesByFilterResponse = z.object({\n  jobId: z\n    .string()\n    .describe(\n      'Job ID.\\n\\nPass this ID to [Get Async Job](https://dev.wix.com/docs/api-reference/business-management/async-job/introduction) to retrieve job details and metadata..'\n    )\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    )\n    .optional(),\n});\nexport const BulkRemoveProductsFromCategoriesByFilterRequest = z.object({\n  options: z.object({\n    filter: z\n      .record(z.string(), z.any())\n      .describe('Filter object.')\n      .optional()\n      .nullable(),\n    categoryIds: z.array(z.string()).min(1).max(5),\n    search: z\n      .object({\n        mode: z.enum(['OR', 'AND']).optional(),\n        expression: z\n          .string()\n          .describe('Search term or expression')\n          .max(100)\n          .optional()\n          .nullable(),\n        fields: z.array(z.string()).max(20).optional(),\n        fuzzy: z\n          .boolean()\n          .describe(\n            'Whether to enable the search function to use an algorithm to automatically find results that are close to the search expression, such as typos and declensions.'\n          )\n          .optional(),\n      })\n      .describe('Free text to match in searchable fields.')\n      .optional(),\n  }),\n});\nexport const BulkRemoveProductsFromCategoriesByFilterResponse = z.object({\n  jobId: z\n    .string()\n    .describe(\n      'Job ID.\\n\\nPass this ID to [Get Async Job](https://dev.wix.com/docs/api-reference/business-management/async-job/introduction) to retrieve job details and metadata..'\n    )\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    )\n    .optional(),\n});\nexport const GetAllProductsCategoryRequest = z.object({});\nexport const GetAllProductsCategoryResponse = z.object({\n  categoryId: z\n    .string()\n    .describe(\n      'ID of the \"All Products\" category automatically assigned to all products.'\n    )\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    )\n    .optional(),\n  treeReference: z\n    .object({\n      appNamespace: z\n        .string()\n        .describe(\n          'Namespace of the app whose catalog this category tree belongs to.\\n\\nCurrently, only `\"@wix/stores\"` is supported.'\n        )\n        .min(4)\n        .max(150)\n        .optional(),\n      treeKey: z\n        .string()\n        .describe(\n          'Key to differentiate between multiple trees managed by the same app.\\n\\nFor Wix Stores, pass `null` or omit this field, as each store has only one category tree.'\n        )\n        .min(1)\n        .max(44)\n        .optional()\n        .nullable(),\n    })\n    .describe(\n      'Category tree reference. For Wix Stores, `appNamespace` is `\"@wix/stores\"` and `treeKey` is `null`.'\n    )\n    .optional(),\n});\nexport const BulkUpdateProductTagsRequest = z.object({\n  productIds: z.array(z.string()).min(1).max(100),\n  options: z\n    .object({\n      assignTags: z\n        .object({\n          privateTags: z\n            .object({ tagIds: z.array(z.string()).max(100).optional() })\n            .describe(\n              'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n            )\n            .optional(),\n          publicTags: z\n            .object({ tagIds: z.array(z.string()).max(100).optional() })\n            .describe(\n              'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n            )\n            .optional(),\n        })\n        .describe('List of tags to assign.')\n        .optional(),\n      unassignTags: z\n        .object({\n          privateTags: z\n            .object({ tagIds: z.array(z.string()).max(100).optional() })\n            .describe(\n              'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n            )\n            .optional(),\n          publicTags: z\n            .object({ tagIds: z.array(z.string()).max(100).optional() })\n            .describe(\n              'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n            )\n            .optional(),\n        })\n        .describe('List of tags to unassign.')\n        .optional(),\n    })\n    .optional(),\n});\nexport const BulkUpdateProductTagsResponse = z.object({\n  results: z\n    .array(\n      z.object({\n        itemMetadata: z\n          .object({\n            _id: z\n              .string()\n              .describe(\n                \"Item ID. Should always be available, unless it's impossible (for example, when failing to create an item).\"\n              )\n              .min(1)\n              .max(36)\n              .optional()\n              .nullable(),\n            originalIndex: z\n              .number()\n              .int()\n              .describe(\n                'Index of the item within the request array. Allows for correlation between request and response items.'\n              )\n              .optional(),\n            success: z\n              .boolean()\n              .describe(\n                'Whether the requested action was successful for this item. When `false`, the `error` field is populated.'\n              )\n              .optional(),\n            error: z\n              .object({\n                code: z.string().describe('Error code.').optional(),\n                description: z\n                  .string()\n                  .describe('Description of the error.')\n                  .optional(),\n                data: z\n                  .record(z.string(), z.any())\n                  .describe('Data related to the error.')\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Details about the error in case of failure.')\n              .optional(),\n          })\n          .describe('Metadata regarding the specific single update operation.')\n          .optional(),\n      })\n    )\n    .min(1)\n    .max(100)\n    .optional(),\n  bulkActionMetadata: z\n    .object({\n      totalSuccesses: z\n        .number()\n        .int()\n        .describe('Number of items that were successfully processed.')\n        .optional(),\n      totalFailures: z\n        .number()\n        .int()\n        .describe(\"Number of items that couldn't be processed.\")\n        .optional(),\n      undetailedFailures: z\n        .number()\n        .int()\n        .describe(\n          'Number of failures without details because detailed failure threshold was exceeded.'\n        )\n        .optional(),\n    })\n    .describe('Aggregated success/failure counts.')\n    .optional(),\n});\nexport const BulkUpdateProductTagsByFilterRequest = z.object({\n  filter: z\n    .record(z.string(), z.any())\n    .describe(\n      'Filter object. Pass an empty object `{}` to target all products.'\n    ),\n  options: z\n    .object({\n      assignTags: z\n        .object({\n          privateTags: z\n            .object({ tagIds: z.array(z.string()).max(100).optional() })\n            .describe(\n              'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n            )\n            .optional(),\n          publicTags: z\n            .object({ tagIds: z.array(z.string()).max(100).optional() })\n            .describe(\n              'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n            )\n            .optional(),\n        })\n        .describe('List of tags to assign.')\n        .optional(),\n      unassignTags: z\n        .object({\n          privateTags: z\n            .object({ tagIds: z.array(z.string()).max(100).optional() })\n            .describe(\n              'Tags that require an additional permission in order to access them, normally not given to site members or visitors.'\n            )\n            .optional(),\n          publicTags: z\n            .object({ tagIds: z.array(z.string()).max(100).optional() })\n            .describe(\n              'Tags that are exposed to anyone who has access to the labeled entity itself, including site members and visitors.'\n            )\n            .optional(),\n        })\n        .describe('List of tags to unassign.')\n        .optional(),\n    })\n    .optional(),\n});\nexport const BulkUpdateProductTagsByFilterResponse = z.object({\n  jobId: z\n    .string()\n    .describe(\n      'Job ID.\\n\\nPass this ID to [Get Async Job](https://dev.wix.com/docs/api-reference/business-management/async-job/introduction) to retrieve job details and metadata.'\n    )\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    )\n    .optional(),\n});\n"],"mappings":"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","names":[]}