{
  "swagger": "2.0",
  "info" : {
    "title": "Wizzy API Documentation",
    "description": "# Introduction\n\nThis documentation will help you integrating your store with Wizzy. This API reference outlines the expected requests and responses to use Wizzy's API.\n\nAs of now we provide a single way of connecting and formatting requests.\n\n - REST (JSON)\n\n# Cross-Origin Resource Sharing\n\nThis API features Cross-Origin Resource Sharing (CORS) implemented in compliance with  [W3C spec](https://www.w3.org/TR/cors/). And that allows cross-domain communication from the browser. All responses have a wildcard same-origin which makes them completely public and accessible to everyone.\n\n# API Authentication\n\nAll the store related APIs needs to have following header parameters (depends on the public/private type) in the request to communicate with Wizzy's server.\n\nStore secret is only required for private endpoints, **You MUST not use that for public endpoints.**\n\n | Header Key      | Description |\n| ----------- | ----------- |\n| x-store-id      | Store ID in which you want to execute the API request. |\n| x-store-secret   | Store Secret in which you want to execute the API request. |\n| x-api-key   | API key of the store. |\n| x-request-id   | API request ID, It gets added back in response. (Max 100 characters) |\n| x-wizzy-userId   | Unique ID of the end user who is executing an API. (Max 100 characters) |\n| x-wizzy-tags   | API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long) |\n| x-wizzy-sessionId   | Session Identifier to uniquely identify the session and its accociated transactions/interactions. |",
    "contact": {
      "name": "Support",
      "url": "https://wizzy.ai/",
      "email": "team@wizzy.ai"
    },
    "version": "1.6.1",
    "x-logo": {
      "url": "https://wizzy.ai//images/wizzy-logo.png",
      "altText": "Wizzy"
    }
  },
  "host": "api.wizsearch.in",
  "basePath": "/v1",
  "tags" : [
    {
      "name" : "Products",
      "description": "In this section all the products related APIs can be found. The APIs include all the operations to sync and search the products from Wizzy."
    },
    {
      "name" : "Categories",
      "description": "In this section all the categories related APIs can be found. The APIs include all the operations to update and list the categories from Wizzy."
    },
    {
      "name" : "Brands",
      "description": "In this section all the brands related APIs can be found. The APIs include operations to save brands in Wizzy."
    },
    {
      "name" : "Autocomplete",
      "description": "In this section all the autocomplete related APIs can be found. The APIs include all the operations to generate catalog auto suggestions."
    },
    {
      "name" : "Currencies",
      "description": "In this section all the currency related APIs can be found. The APIs include all the operations to update & get currency and their rates."
    },
    {
      "name" : "Pages",
      "description": "In this section all the page related APIs can be found. The APIs include all the operations to get, save and delete pages from Wizzy."
    },
   {
      "name" : "Synonyms",
      "description": "In this section all the synonym related APIs can be found. The APIs include all the operations to get, add, edit and delete synonyms from Wizzy."
    },
    {
      "name" : "Events",
      "description": "In this section all the events related APIs can be found. The APIs include tracking different types of events on Wizzy."
    },
    {
      "name" : "Stores",
      "description": "In this section all the Stores related APIs can be found. The APIs include all the operations to manage store data and access on Wizzy."
    },
    {
      "name" : "Analytics",
      "description": "In this section all the Analytics related APIs can be found. The APIs include different endpoints to access store related analytics."
    },
    {
      "name" : "Recommendations",
      "description": "In this section all the Recommendation related APIs can be found. The APIs include endpoints to fetch product recommendations such as cross-sell suggestions for a given product."
    },
    {
      "name" : "product_model",
      "x-displayName": "Product Model",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/Product\" />"
    },
    {
      "name" : "product_category_model",
      "x-displayName": "Category Model",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/ProductCategory\" />"
    },
    {
      "name" : "brand_model",
      "x-displayName": "Brand Model",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/Brand\" />"
    },
    {
      "name" : "filter_model",
      "x-displayName": "Filter Model",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/Filter\" />"
    },
    {
      "name" : "ranking_rules_model",
      "x-displayName": "Ranking Rules Model",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/RankingRules\" />"
    },
    {
      "name" : "currency_model",
      "x-displayName": "Currency Model",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/Currency\" />"
    },
    {
      "name" : "currency_rate_model",
      "x-displayName": "Currency Rate Model",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/CurrencyRate\" />"
    },
    {
      "name" : "page_model",
      "x-displayName": "Page Model",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/Page\" />"
    }
  ],
  "schemes": [
    "https"
  ],
  "x-tagGroups": [
    {
      "name": "General",
      "tags": [
        "Products",
        "Autocomplete",
        "Currencies",
        "Pages",
        "Categories",
        "Brands",
        "Synonyms",
        "Events",
        "Stores",
        "Analytics",
        "Recommendations"
      ]
    },
    {
      "name": "Models",
      "tags": [
        "product_model",
        "product_category_model",
        "brand_model",
        "filter_model",
        "ranking_rules_model",
        "currency_model",
        "currency_rate_model",
        "page_model"
      ]
    }
  ],
  "definitions": {
    "CommonEvent": {
      "type" : "object",
      "properties": {
        "name": {
          "type": "string",
          "maximum": 50,
          "description": "Name of the event. (It must be valid name added under Settings > Analytics > Event Names)"
        },
        "searchResponseId": {
          "type": "string",
          "maximum": 100,
          "description": "Search Response ID. (This is for referencing any event based on search/filter) <br>**This is Required for displaying Data on Dashboard related to search**."
        },
         "campaignId": {
          "type": "string",
          "maximum": 100,
          "description": "Campaign ID. (This is for referencing any event triggered by a campaign) <br>**This is Required for tracking campaign related events in Analytics.**."
        },
        "items": {
          "type": "array",
          "description": "An array of items of the performing event.",
          "items":  {
            "type": "object",
            "properties": {
              "itemId": {
                "type": "string",
                "maximum": 255,
                "description": "Item ID of the performing event. (Generally it's a Product/Category ID)"
              },
              "position": {
                "type": "integer",
                "description": "Position of the item for the performing event. (Generally it's only used for Click Event)"
              },
              "qty": {
                "type": "integer",
                "description": "Qty of the item for the performing event. (Generally it's only used for Converted Event)"
              }
            }
          }
        },
        "triggeredOn": {
         "type": "datetime",
         "description": "Original event's date-time in yyyy-mm-dd hh:mm:ss format."
        }
      },
      "required": [
        "name"
      ]
    },
    "ClickEvent": {
      "allOf": [
        {
          "type": "object",
          "$ref": "#/definitions/CommonEvent"
        },
        {
          "type": "object",
          "properties": {
            "source": {
              "type": "string",
              "description": "Source from which the click event has followed. It must be one of these values - AUTOCOMPLETE_RESULTS, AUTOCOMPLETE_DEFAULT, SEARCH_RESULTS, NO_RESULTS_FOUND, or FEATURED_VIEW.",
              "enum": [
                "AUTOCOMPLETE_RESULTS", "AUTOCOMPLETE_DEFAULT", "SEARCH_RESULTS", "NO_RESULTS_FOUND", "FEATURED_VIEW"
              ]
            }
          }
        }
      ]
    },
    "ConvertedEvent": {
      "allOf": [
        {
          "type": "object",
          "$ref": "#/definitions/CommonEvent"
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "maximum": 255,
              "description": "Converted ID of the event. (e.g. Order ID, Wishlist ID etc...)"
            },
            "value": {
              "type": "float",
              "description": "Total value of the converted event. If user made some action on 2 qty of products then the value should be for 2 items."
            },
            "qty": {
              "type": "integer",
              "description": "Qty of items involved in converted event"
            }
          }
        }
      ],
      "required": [
        "value",
        "qty"
      ]
    },
    "CommonSortField": {
      "type": "array",
      "items":  {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "description": "Field on which you want to perform sort.\n\nAttribute Type can be string, float and datetime. (Default to string)",
            "enum": [
              "relevance", "sellingPrice", "price", "finalPrice", "name", "brand", "discount", "discountPercentage", "totalReviews", "createdAt", "updatedAt", "avgRatings", "categories", "gender", "id", "inStock", "Attribute ID:Attribute Type"
            ]
          },
          "order": {
            "type": "string",
            "description": "Order by which you want to sort the specified field",
            "enum": [
              "asc", "desc"
            ]
          },
          "isForParent": {
            "type": "boolean",
            "default": "true",
            "description": "Set as false if you don't want Wizzy to apply particular sort on Parent Products. Defaults to true.",
            "enum": [
              "true", "false"
            ]
          },
          "isForVariation": {
            "type": "boolean",
            "default": "true",
            "description": "Set as false if you don't want Wizzy to apply particular sort on Variations. Defaults to true.",
            "enum": [
              "true", "false"
            ]
          }
        },
        "required": [
          "field",
          "order"
        ]
      },
      "description": "An array of sort fields. If multiple sort fields are provided then they get executed in given order from first to last.\n\nDuring Search and Autocomplete request provide it as JSON string."
    },
    "CommonSectionsField": {
      "type": "array",
      "description": "An array of sections which you want in response.",
      "items": {
        "type": "object",
        "description": "An individual object of section config.",
        "properties": {
          "key": {
            "type": "string",
            "description": "Section key string. \n\nIf nothing is supplied, the API will return all the sections.",
            "enum": [
              "categories", "brands", "others", "pages"
            ]
          }
        },
        "required": [
          "key"
        ]
      }
    },
    "CommonSwatchField": {
      "type": "array",
      "description": "An array of swatch fields which you want in response.",
      "items": {
        "type": "object",
        "description": "An individual object of swatch config.",
        "properties": {
          "key": {
            "type": "string",
            "description": "Swatch key string. \n\nAttribute Type can be string, float and datetime. (Default to string)",
            "enum": [
              "colors", "sizes", "Attribute ID:Attribute Type"
            ]
          }
        },
        "required": [
          "key"
        ]
      }
    },
    "CommonAttributeFacetValuesLimit": {
      "type": "integer",
      "default": 20,
      "minimum": 5,
      "maximum": 250,
      "description": "Facet values limit for attribute type of facets, By default 20 values are return for attributes facet."
    },
    "CommonIncludeSwatchInAttributeFacets": {
      "type": "array",
      "items":  {
        "type": "string"
      },
      "description": "An array of attribute ids. It includes attribute IDs for which you want swatches to be returned in facets."
    },
    "CommonInventorySourcesField": {
      "type": "array",
      "items":  {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Inventory source key by which you want to have the products filtered."
          },
          "inStock": {
            "type": "array",
            "description": "In stock value of particular inventory source.",
            "items": {
              "type": "boolean",
              "enum": [
                true,
                false
              ]
            }
          }
        },
        "required": [
          "key",
          "inStock"
        ]
      },
      "description": "An array of inventory sources. It includes list of all inventory source keys and their inStock value by which you want to have products filtered. You can either use this or includeOutOfStock field for search API. If inventorySources are supplied value of includeOutOfStock will be ignored."
    },
    "CommonHasToReturnBannersField": {
      "type": "string",
      "default": "true",
      "description": "By default, the API will return promotion banners if configured. If you do not want to show the promotion banners, please set the flag to false",
      "enum": [
        "true",
        "false"
      ]
    },
    "CommonCrossSellField": {
      "type": "object",
      "description": "Cross-sell configuration. When supplied, the Autocomplete API returns cross-sell product recommendations (based on the cross-sell rules configured for the store) alongside the suggestions.",
      "required": [
        "productsCount"
      ],
      "properties": {
        "productsCount": {
          "type": "integer",
          "description": "Number of cross-sell products to return.",
          "maximum": 50,
          "minimum": 1
        },
        "sourceProductsCount": {
          "type": "integer",
          "description": "Number of top matching products from the query to use as the source set for finding cross-sell recommendations.",
          "maximum": 50,
          "minimum": 1
        },
        "rulesCount": {
          "type": "integer",
          "description": "Maximum number of cross-sell rules to apply.",
          "maximum": 10,
          "minimum": 1
        },
        "useCombinedCrossSellQuery": {
          "type": "boolean",
          "description": "Defaults to true. When true, cross-sell groups are kept mutually exclusive and fetched in a single combined query. Set to false to opt out of the combined retrieval."
        }
      }
    },
    "CommonFacetsField": {
      "type": "array",
      "items":  {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Facet key which you need in the results. If given 'all' then all the facets will be returns, similarly if given attributes then all attribute facets will be returned. \n\nAttribute Type can be string, float and datetime. (Default to string)",
            "enum": [
              "all", "categories", "brands" ,"sellingPrice", "genders", "colors", "sizes", "avgRatings", "discountPercentage", "inStock", "attributes", "Attribute ID:Attribute Type"
            ]
          },
          "label": {
            "type": "string",
            "description": "If provided the default label of the facets will be changed in results."
          },
          "order": {
            "type": "integer",
            "description": "Specific Order in which you want to display facet on frontend. If not provided it will be in default order."
          },
          "position": {
            "type": "string",
            "description": "Specific position at which you want to display facet on frontend. If not provided it will be in default position.",
            "enum": [
              "left", "right"
            ]
          },
          "buckets": {
            "type": "array",
            "description": "An array of range buckets (Supported in sellingPrice only).",
            "items": {
              "type": "object",
              "description": "Object having from and to values of the bucket.",
              "properties": {
                "from": {
                  "type": "integer",
                  "description": "Starting value of the bucket."
                },
                "to": {
                  "type": "integer",
                  "description": "Ending value of the bucket."
                }
              }
            }
          },
          "config": {
            "type": "object",
            "description": "Custom configuration for individual facet.",
            "properties": {
              "interval": {
                "type": "integer",
                "description": "By default Wizzy have interval of 20 in discount and avgRatings field, This can be changed by providing this config."
              },
              "limit": {
                "type": "integer",
                "minimum": 5,
                "maximum": 100,
                "description": "By default Wizzy has different limit config for individual facets. You get the number of facets in response for individual facet as per set config. This can be changed by providing this config. Keep it as low as possible for maximum performance."
              }
            }
          }
        },
        "required": [
          "key"
        ]
      },
      "description": "An array of facet fields. It includes list of all facets you want to get in return for the search/autocomplete/filters request.\n\nDuring Search and Autocomplete request provide it as JSON string."
    },
    "CommonFilterConfigs": {
      "type" : "object",
      "properties": {
        "page": {
          "type": "integer",
          "description": "Page number of the filter request.",
          "default": 1
        },
        "type": {
          "type": "string",
          "description": "Type of filter API request.",
          "default": "DEFAULT",
          "enum": [
            "DEFAULT", "CATEGORY_PAGE", "AUTOCOMPLETE_OPTION", "AUTOCOMPLETE_DEFAULT", "NO_RESULTS_FOUND"
          ]
        },
        "productsCount": {
          "type": "integer",
          "description": "Number of products to return in filter request.",
          "default": 20,
          "maximum": 100,
          "minimum": 1
        },
        "currency": {
          "name" : "currency",
          "type": "string",
          "description": "Currency code in which the filter is being performed. It is ISO 4217 currency code. (e.g. INR, USD, EUR etc...)",
          "default": "Display currency set in Currency Settings"
        },
        "q" : {
          "type": "string",
          "description": "If you want to filter the products with query along with other entity filters."
        },
        "searchedKey": {
          "type": "string",
          "description": "A unique search key (Hash) for given search/filter request. You MUST pass this on subsequent filter requests to get relevant results."
        },
        "sort": {
          "allOf": [
            {
              "$ref": "#/definitions/CommonSortField"
            }
          ]
        },
        "swatch": {
          "allOf": [
            {
              "$ref": "#/definitions/CommonSwatchField"
            }
          ]
        },
        "facets": {
          "allOf": [
            {
              "$ref": "#/definitions/CommonFacetsField"
            }
          ]
        },
        "inventorySources": {
          "allOf": [
            {
              "$ref": "#/definitions/CommonInventorySourcesField"
            }
          ]
        },
        "attributeFacetValuesLimit": {
          "allOf": [
            {
              "$ref": "#/definitions/CommonAttributeFacetValuesLimit"
            }
          ]
        },
        "includeCategoriesFacetForPage": {
          "type": "string",
          "description": "By default, Wizzy don't return the categories facets if only category filter is applied. Set it to true if you want to include the categories facet in the response for specific requirements.",
          "default": "false",
          "enum": [
            "true",
            "false"
          ]
        },
        "includeSwatchInAttributeFacets": {
          "$ref": "#/definitions/CommonIncludeSwatchInAttributeFacets"
        },
        "getAllVariants": {
          "type": "string",
          "description": "Set this to true if you want the API to return all the variants of a product in a single response.",
          "default": "false",
          "enum": [
            "true",
            "false"
          ]
        },
        "variantsGroup": {
          "type": "string",
          "description": "Variant grouping key echoed back by the API when variant grouping is enabled."
        },
        "variantsGroupBy": {
          "type": "string",
          "description": "Variant grouping field echoed back by the API when variant grouping is enabled.",
          "enum": [
            "groupId",
            "virtualGroupId"
          ]
        },
        "showOOSProductsInOrder": {
          "type": "string",
          "description": "Set this to true if you want out-of-stock products to remain in the same relevance order.",
          "default": "false",
          "enum": [
            "true",
            "false"
          ]
        }
      }
    },
    "CommonFilter": {
      "type" : "object",
      "properties": {
        "categories": {
          "type": "array",
          "description": "List of category IDs to filter.",
          "items": {
            "type": "string"
          }
        },
        "brands": {
          "type": "array",
          "description": "List of brands to filter.",
          "items": {
            "type": "string"
          }
        },
        "colors": {
          "type": "array",
          "description": "List of colors to filter.",
          "items": {
            "type": "string"
          }
        },
        "sizes": {
          "type": "array",
          "description": "List of sizes to filter.",
          "items": {
            "type": "string"
          }
        },
        "genders": {
          "type": "array",
          "description": "List of genders to filter.",
          "items": {
            "type": "string",
            "enum": [
              "Men", "Women", "Boys", "Girls", "Kids", "Unisex"
            ]
          }
        },
        "attributes": {
          "type": "object",
          "description": "Object of attributes key / value pairs to filter. Key will be the attribute ID.",
          "properties": {
            "attribute_key": {
              "type": "array",
              "description": "Array of attribute values, The key would be attribute name.",
              "items": {
                "type": "string"
              }
            }
          }
        },
        "floatAttributes": {
          "type": "object",
          "description": "Object of float attributes key / value pairs to filter. Key will be the attribute ID.",
          "properties": {
            "attribute_key": {
              "type": "array",
              "description": "Use this when you want to filter by float attribute values range.",
              "items": {
                "type": "object",
                "properties": {
                  "lte" : {
                    "type": "float",
                    "description": "Attribute Value less then or equal to filter."
                  },
                  "gte" : {
                    "type": "float",
                    "description": "Attribute Value greater then or equal to filter."
                  }
                }
              }
            }
          }
        },
        "datetimeAttributes": {
          "type": "object",
          "description": "Object of datetime attributes key / value pairs to filter. Key will be the attribute ID.",
          "properties": {
            "attribute_key": {
              "type": "array",
              "description": "Use this when you want to filter by datetime attribute values range.",
              "items": {
                "type": "object",
                "properties": {
                  "lte" : {
                    "type": "datetime",
                    "description": "Attribute Value less then or equal to filter."
                  },
                  "gte" : {
                    "type": "datetime",
                    "description": "Attribute Value greater then or equal to filter."
                  }
                }
              }
            }
          }
        },
        "groupIds": {
          "type": "array",
          "description": "List of group IDs / Parent Product IDs to filter.",
          "items": {
            "type": "string"
          }
        },
        "boostGroupIds": {
          "type": "array",
          "description": "List of group IDs / Parent Product IDs to boost (promote) to the top of the results. Unlike `groupIds` which restricts the result set, `boostGroupIds` keeps all matching products but ranks the given groups higher. (Maximum 50 IDs, each value must be non-empty)",
          "maxItems": 50,
          "items": {
            "type": "string"
          }
        },
        "sellingPrice": {
          "type": "array",
          "description": "Use this when you want to filter by sellingPrice.",
          "items": {
            "type": "object",
            "properties": {
              "lte" : {
                "type": "float",
                "description": "Selling Price less then or equal to filter."
              },
              "gte" : {
                "type": "float",
                "description": "Selling Price greater then or equal to filter."
              }
            }
          }
        },
        "price": {
          "type": "array",
          "description": "Use this when you want to filter by price.",
          "items": {
            "type": "object",
            "properties": {
              "lte" : {
                "type": "float",
                "description": "Price less then or equal to filter."
              },
              "gte" : {
                "type": "float",
                "description": "Price greater then or equal to filter."
              }
            }
          }
        },
        "finalPrice": {
          "type": "array",
          "description": "Use this when you want to filter by final price.",
          "items": {
            "type": "object",
            "properties": {
              "lte" : {
                "type": "float",
                "description": "Price less then or equal to filter."
              },
              "gte" : {
                "type": "float",
                "description": "Price greater then or equal to filter."
              }
            }
          }
        },
        "avgRatings": {
          "type": "array",
          "description": "Use this when you want to filter by avg ratings.",
          "items": {
            "type": "object",
            "properties": {
              "lte" : {
                "type": "float",
                "description": "Avg Ratings less then or equal to filter."
              },
              "gte" : {
                "type": "float",
                "description": "Avg Ratings greater then or equal to filter."
              }
            }
          }
        },
        "discount": {
          "type": "array",
          "description": "Use this when you want to filter by product discount.",
          "items": {
            "type": "object",
            "properties": {
              "lte" : {
                "type": "float",
                "description": "Product Discount less then or equal to filter."
              },
              "gte" : {
                "type": "float",
                "description": "Product Discount greater then or equal to filter."
              }
            }
          }
        },
        "discountPercentage": {
          "type": "array",
          "description": "Use this when you want to filter by product discount percentage.",
          "items": {
            "type": "object",
            "properties": {
              "lte" : {
                "type": "float",
                "description": "Product Discount Percentage less then or equal to filter."
              },
              "gte" : {
                "type": "float",
                "description": "Product Discount Percentage greater then or equal to filter."
              }
            }
          }
        },
        "inStock": {
          "type": "array",
          "description": "Use this when you want to filter by product inStock value. Passing empty array will show both in stock and out of stock products.",
          "items": {
            "type": "boolean",
            "enum": [
              true,
              false
            ]
          }
        },
        "getAllVariants": {
          "type": "string",
          "description": "By default Filter API returns single variant per product, Set this to true if you want Filter API to return all the variants of a product in single API response.",
          "enum": [
            "true",
            "false"
          ]
        },
        "showOOSProductsInOrder": {
          "type": "string",
          "description": "By default Filter API returns OOS products at the end of the page, Set this to true if you want Filter API to return all the OOS products in the same relevance order.",
          "default": "false",
          "enum": [
            "true",
            "false"
          ]
        },
        "hasToReturnBanners": {
          "type": "string",
          "description": "By default, the API will return promotion banners if configured. If you do not want to show the promotion banners, please set the flag to false",
          "default": "true",
          "enum": [
            "true",
            "false"
          ]
        }
      }
    },
    "SaveAttributesResult": {
      "type" : "object",
      "properties": {
        "payload" : {
          "type" : "object",
          "description": "Outcome of the save products attributes request.",
          "properties": {
            "total": {
              "type": "integer",
              "default": 0,
              "description": "Total number of products attributes saved successfully. We only count unique number of products attributes. (If you have given same products to be saved twice, it only counts as one)"
            }
          }
        }
      }
    },
    "SavePricesResult": {
      "type" : "object",
      "properties": {
        "payload" : {
          "type" : "object",
          "description": "Outcome of the save products prices request.",
          "properties": {
            "total": {
              "type": "integer",
              "default": 0,
              "description": "Total number of products prices saved successfully. We only count unique number of products prices. (If you have given same products to be saved twice, it only counts as one)"
            }
          }
        }
      }
    },
    "SaveStocksResult": {
      "type" : "object",
      "properties": {
        "payload" : {
          "type" : "object",
          "description": "Outcome of the save products stocks request.",
          "properties": {
            "total": {
              "type": "integer",
              "default": 0,
              "description": "Total number of products stocks saved successfully. We only count unique number of products stocks. (If you have given same products to be saved twice, it only counts as one)"
            }
          }
        }
      }
    },
    "SaveResult" : {
      "type" : "object",
      "properties": {
        "payload" : {
          "type" : "object",
          "description": "Outcome of the save request.",
          "properties": {
            "total": {
              "type": "integer",
              "default": 0,
              "description": "Total number of products saved successfully. We only count unique number of products. (If you have given same products to be saved twice, it only counts as one)"
            }
          }
        }
      }
    },
    "PageSuggestion": {
      "type" : "object",
      "properties": {
        "value" : {
          "type" : "string",
          "description": "Suggestion text to display on front-end."
        },
        "filters": {
          "type": "object",
          "description": "Returned with page related data in filters.",
          "properties": {
            "pages": {
              "description": "List of pages object for the suggestion.",
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "ID of the page"
                },
                "title": {
                  "type": "string",
                  "description": "Title of the page"
                },
                "url": {
                  "type": "string",
                  "description": "URL of the page"
                },
                "slug": {
                  "type": "string",
                  "description": "Slug of the page"
                }
              }
            }
          }
        }
      }
    },
    "PromotionBanners": {
      "type": "object",
      "properties": {
        "desktopImageUrl": {
          "type": "string",
          "description": "URL of the promotion banner image to be used in desktop view."
        },
        "desktopHoverUrl": {
          "type": "string",
          "description": "URL of the promotion banner image to be used on hover in desktop view."
        },
        "mobileImageUrl": {
          "type": "string",
          "description": "URL of the promotion banner image to be used in mobile view."
        },
        "mobileFlashUrl": {
          "type": "string",
          "description": "URL of the promotion banner image to be used as flash in mobile view."
        },
        "targetUrl": {
          "type": "string",
          "description": "URL to navigate when promotion banner is clicked."
        },
        "displayAs": {
          "type": "string",
          "description": "Format or style of display, such as 'grid' or 'banner'."
        },
        "displayPosition": {
          "type": "string",
          "description": "Position of the promotion banner in layout."
        },
        "displayPositionOnPage": {
          "type": "integer",
          "description": "Grid position of the promotion banner on the in the products list."
        },
        "gridWidth": {
          "type": "integer",
          "description": "Width of the promotion banner in the products list."
        }
      }
    },
    "Suggestion" : {
      "type" : "object",
      "properties": {
        "value" : {
          "type" : "string",
          "description": "Suggestion text to display on front-end."
        },
        "payload": {
          "type": "array",
          "description": "Additional payload for given suggestion. e.g. Category suggestions API will return Category ID, Category Image etc.. For Brand suggestions it will return Brand Image, Brand ID etc...",
          "items": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string",
                "description": "Additional Payload Key (e.g. categoryId, brandId, categoryName etc...)"
              },
              "value": {
                "type": "string",
                "description": "Additional payload data"
              }
            }
          }
        },
        "filters": {
          "type": "object",
          "description": "Filters values depend suggestion term. e.g. If the term has single entity then only one filter will be returned. In case of multiple entities the API will return multiple filters.",
          "properties": {
            "categories": {
              "type": "array",
              "description": "Suggestion request category filters.",
              "items": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Category ID for the filter"
                  },
                  "label": {
                    "type": "string",
                    "description": "Category Name for the filter"
                  }
                }
              }
            },
            "brands": {
              "type": "array",
              "description": "Suggestion request brand filters.",
              "items": {
                "type": "string"
              }
            },
            "colors": {
              "type": "array",
              "description": "Suggestion request color filters.",
              "items": {
                "type": "string"
              }
            },
            "genders": {
              "type": "array",
              "description": "Suggestion request gender filters.",
              "items": {
                "type": "string",
                "enum": [
                  "Men", "Women", "Boys", "Girls", "Kids", "Unisex"
                ]
              }
            },
            "attributes": {
              "type": "array",
              "description": "Suggestion request attribute filters.",
              "items": {
                "type": "object",
                "properties": {
                  "attribute_key": {
                    "type": "array",
                    "description": "Array of attribute values, The key would be attribute name.",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "SuggestionsResult" : {
      "type" : "object",
      "properties": {
        "payload" : {
          "type" : "object",
          "description": "Outcome of the suggestions request.",
          "properties": {
            "categories": {
              "type": "array",
              "description": "Only category suggestions are grouped in this array.",
              "items" : {
                "$ref": "#/definitions/Suggestion"
              }
            },
            "brands": {
              "type": "array",
              "description": "Only brand suggestions are grouped in this array.",
              "items" : {
                "$ref": "#/definitions/Suggestion"
              }
            },
            "others": {
              "type": "array",
              "description": "All other suggestions which includes combination of different entities (Brands, Categories, Attributes etc...) are grouped in this array.",
              "items" : {
                "$ref": "#/definitions/Suggestion"
              }
            },
            "pages": {
              "type": "array",
              "description": "Only page suggestions are grouped in this array.",
              "items" : {
                "$ref": "#/definitions/PageSuggestion"
              }
            },
            "products": {
              "type": "array",
              "description": "If productsCount is greater then 0, An array of Relevant Products are added along with suggestions.",
              "items" : {
                "$ref": "#/definitions/Product"
              }
            },
            "banners": {
              "type": "array",
              "description": "If the banners are found for given query, relevant banners are added along with products / suggestions.",
              "items" : {
                "$ref": "#/definitions/PromotionBanners"
              }
            }
          }
        }
      }
    },
    "TruncateResult": {
      "type" : "object",
      "properties": {
        "payload" : {
          "type" : "object"
        }
      }
    },
    "DeleteResult": {
      "type" : "object",
      "properties": {
        "payload" : {
          "type" : "object",
          "description": "Outcome of the delete request.",
          "properties": {
            "total": {
              "type": "integer",
              "default": 0,
              "description": "Total number of products deleted successfully. We only count unique number of products. (If you have given same products to be deleted twice, it only counts as one)"
            }
          }
        }
      }
    },
    "CurrencyRatesGetResult": {
      "type": "object",
      "properties": {
        "payload": {
          "type": "object",
          "description": "List of all the active configured currency rates of the store.",
          "properties": {
            "currencies" : {
              "type" : "array",
              "description": "An array of currency rates",
              "items" : {
                "allOf": [
                  {
                    "$ref": "#/definitions/CurrencyRate"
                  }
                ]
              }
            }
          }
        }
      }
    },
    "CategoryGetResult": {
      "type": "object",
      "properties": {
        "payload": {
          "type": "object",
          "description": "Payload contains data of requested category.",
          "properties": {
            "category" : {
              "type" : "object",
              "$ref": "#/definitions/ProductCategory"
            }
          }
        }
      }
    },
    "SynonymsGetResult": {
      "type": "object",
      "properties": {
        "payload": {
          "type": "object",
          "description": "List of all the added synonyms of the store.",
          "properties": {
            "synonyms" : {
              "type" : "array",
              "description": "An array of synonyms",
              "items" : {
                "allOf": [
                  {
                    "$ref": "#/definitions/Synonym"
                  }
                ]
              }
            }
          }
        }
      }
    },
    "PagesGetResult": {
      "type": "object",
      "properties": {
        "payload": {
          "type": "object",
          "description": "List of all the added pages of the store.",
          "properties": {
            "pages" : {
              "type" : "array",
              "description": "An array of pages",
              "items" : {
                "allOf": [
                  {
                    "$ref": "#/definitions/Page"
                  }
                ]
              }
            }
          }
        }
      }
    },
    "CurrenciesGetResult": {
      "type": "object",
      "properties": {
        "payload": {
          "type": "object",
          "description": "List of all the added/configured currencies of the store.",
          "properties": {
            "currencies" : {
              "type" : "array",
              "description": "An array of currencies",
              "items" : {
                "allOf": [
                  {
                    "$ref": "#/definitions/Currency"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "isDefault" : {
                        "type": "boolean",
                        "default": "false",
                        "description": "True if its a default currency of the store."
                      },
                      "isDisplay" : {
                        "type": "boolean",
                        "default": "false",
                        "description": "True if its a display currency of the store."
                      }
                    }
                  }
                ]
              }
            }
          }
        }
      }
    },
    "SingleSearchResult": {
      "type" : "object",
      "properties": {
        "payload" : {
          "type" : "object",
          "description": "All the required data to display search results on the destination page.",
          "properties": {
            "result" : {
              "type" : "object",
              "description": "Single product details.",
              "allOf": [
                {
                  "$ref": "#/definitions/Product"
                }
              ]
            }
          }
        }
      }
    },
    "AllProducts": {
      "type" : "object",
      "properties": {
        "payload" : {
          "type" : "object",
          "description": "List of all product IDs with their stock status, matching the specified criteria.",
          "properties": {
            "result" : {
              "type" : "object",
              "description": "List of product objects containing product ID and stock availability.",
              "allOf": [
                {
                  "$ref": "#/definitions/AllProduct"
                }
              ]
            },
            "hasNextPage" : {
              "type" : "boolean",
              "description": "Indicates if more products are available to be fetched beyond the current result set."
            }
          }
        }
      }
    },
    "SearchResult": {
      "type" : "object",
      "properties": {
        "payload" : {
          "type" : "object",
          "description": "All the required data to display search results on the destination page.",
          "properties": {
            "result" : {
              "type" : "array",
              "description": "An array of products",
              "items" : {
                "$ref": "#/definitions/Product"
              }
            },
            "total": {
              "type" : "integer",
              "description": "Total number of results for given search/filter request."
            },
            "pages": {
              "type" : "integer",
              "description": "Total number of pages for given search/filter request."
            },
            "facets" : {
              "type" : "array",
              "description": "An array of facets for given search query.",
              "items" : {
                "$ref": "#/definitions/Facet"
              }
            },
            "hasToRedirect": {
              "type": "boolean",
              "description": "Present when the query is redirected to another URL."
            },
            "redirectTo": {
              "type": "string",
              "description": "Redirect URL returned when the query is configured to redirect."
            },
            "filterSuggestions": {
              "type": "object",
              "description": "Filter Suggestions values depend on the type of filter you've applied on the search. e.g. If search query is Nike Sports Shoes then Nike under brands and Sports Shoes under categories will be returned.\n\nWe've mentioned all the possible values in filters.",
              "allOf": [
                {
                  "$ref": "#/definitions/CommonFilter"
                }
              ]
            },
            "filters": {
              "type": "object",
              "description": "Filters in search is generally common configs set which helps in building subsequent filters object on frontend.",
              "allOf": [
                {
                  "$ref": "#/definitions/CommonFilterConfigs"
                }
              ]
            },
            "configs": {
              "type": "object",
              "description": "Config values to help rendering search results on front-end. e.g. Currency Symbol",
              "properties": {
                "currencySymbol": {
                  "type": "string",
                  "description": "Currency symbol of the currency in which search/filter is executed.",
                  "items": {
                    "type": "string"
                  }
                }
              }
            },
            "banners": {
              "type": "array",
              "description": "If the banners are found for given query / filters, relevant banners are added along with products / suggestions.",
              "items" : {
                "$ref": "#/definitions/PromotionBanners"
              }
            }
          }
        }
      }
    },
    "VisualSearchResult": {
      "type": "object",
      "properties": {
        "payload": {
          "type": "object",
          "description": "All the required data to display visual search results on the destination page.",
          "properties": {
            "result": {
              "type": "array",
              "description": "An array of products visually similar to the uploaded image.",
              "items": {
                "$ref": "#/definitions/Product"
              }
            },
            "total": {
              "type": "integer",
              "description": "Total number of results for the visual search request."
            }
          }
        }
      }
    },
    "CrossSellResult": {
      "type": "object",
      "properties": {
        "payload": {
          "type": "object",
          "description": "All the cross-sell recommendations for the given product.",
          "properties": {
            "result": {
              "type": "array",
              "description": "An array of cross-sell recommended products. It will be an empty array if no cross-sell rules match the given product.",
              "items": {
                "$ref": "#/definitions/Product"
              }
            },
            "configs": {
              "type": "object",
              "description": "The resolved configuration used to build the cross-sell response (echoes back the effective request configs after applying defaults). It will be an empty object if no cross-sell rules are defined for the given product.",
              "properties": {
                "productsCount": {
                  "type": "integer",
                  "description": "Number of cross-sell products requested."
                },
                "showOOSProductsInOrder": {
                  "type": "boolean",
                  "description": "Whether out-of-stock products are kept in the same relevance order."
                },
                "useCombinedCrossSellQuery": {
                  "type": "boolean",
                  "description": "Whether cross-sell groups were kept mutually exclusive and fetched in a single combined query."
                },
                "inventorySources": {
                  "type": "array",
                  "description": "Inventory sources restriction applied to the request. Present only when the request restricts by inventory sources.",
                  "items": {
                    "type": "object"
                  }
                },
                "currency": {
                  "type": "string",
                  "description": "Currency code used for the request. Present only when supplied in the request."
                },
                "includeOutOfStock": {
                  "type": "boolean",
                  "description": "Whether out-of-stock products are included. Present only when supplied in the request."
                },
                "showOOSProductsSwatches": {
                  "type": "boolean",
                  "description": "Whether out-of-stock product swatches are shown. Present only when supplied in the request."
                }
              }
            }
          }
        }
      }
    },
    "TrendingSearchesGetResult": {
      "type": "object",
      "properties": {
        "payload": {
          "type": "object",
          "description": "List of the trending searches of last week, matching specified criteria.",
          "properties": {
            "queries" : {
              "type" : "array",
              "description": "An array Trending Search Queries",
              "items" : {
                "allOf": [
                  {
                    "type": "string"
                  }
                ]
              }
            }
          }
        }
      }
    },
    "UserGetResult": {
      "type": "object",
      "properties": {
        "payload": {
          "type": "object",
          "description": "Details of the User.",
          "properties": {
            "user" : {
              "type" : "object",
              "description": "User object with all the details",
              "allOf": [
                {
                  "type": "object",
                  "properties": {
                    "uuid": {
                      "type": "string",
                      "description": "User Unique Identifier",
                      "maxLength": 255
                    }
                  }
                },
                {
                  "$ref" : "#/definitions/User"
                }
              ]
            }
          }
        }
      }
    },
    "ApiResponse" : {
      "type" : "object",
      "properties": {
        "status" : {
          "type" : "integer",
          "enum" : [
            0,1
          ],
          "description": "Status can be either 0 or 1, If the API encountered some errors then the status would be 0 otherwise 1."
        },
        "statusCode" : {
          "type" : "integer",
          "description": "Status code will be an HTTP status code (e.g 404, 400, 403 etc...), If the API encountered some errors then the statusCode will be returned."
        },
        "message" : {
          "type": "string",
          "description": "A message describing the output of an API call."
        },
        "time" : {
          "type" : "float",
          "description": "Time API server took to execute the query (in ms)."
        },
        "requestId" : {
          "type" : "string",
          "description": "Returning same request ID received in headers."
        },
        "responseId" : {
          "type" : "string",
          "description": "UUID of the the API response, for each API call it is unique."
        }
      }
    },
    "SwatchDetails": {
      "type" : "object",
      "properties": {
        "variationId": {
          "type": "string",
          "description": "Product's Variation ID, if the product is a parent product then the ID will be the id of variation otherwise the id of product itself."
        },
        "inStock": {
          "type": "bool",
          "default": false,
          "description": "True if variation is in Stock, false otherwise"
        },
        "swatch": {
          "type": "object",
          "default": null,
          "properties": {
            "type": {
              "type": "string",
              "description": "Type of the Swatch",
              "enum": [
                "text", "visual"
              ]
            },
            "value": {
              "type": "string",
              "description": "Swatch value based on its type."
            }
          },
          "required": [
            "type",
            "value"
          ]
        }
      },
      "required": [
        "variationId"
      ]
    },
    "ProductAttribute" : {
      "type" : "object",
      "properties": {
        "id": {
          "type" : "string",
          "description" : "ID of an attribute"
        },
        "name" : {
          "type" : "string",
          "description" : "Name of the attribute"
        },
        "values": {
          "type" : "array",
          "description" : "An array of attribute values for all variations.",
          "items" : {
            "type" : "object",
            "allOf": [
              {
                "type": "object",
                "properties": {
                  "value": {
                    "type" : "array",
                    "description": "An array of attribute values for particular variation.",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              },
              {
                "$ref" : "#/definitions/SwatchDetails"
              }
            ],
            "required": [
              "value"
            ]
          }
        },
        "type" : {
          "type" : "string",
          "description" : "Type of the attribute",
          "default": "string",
          "enum": [
            "string", "float", "datetime"
          ]
        },
        "op" : {
          "type" : "string",
          "description" : "Operation type for the bulk attributes save API. (Default Product save API ignores this attribute)",
          "default": "add",
          "enum": [
            "add", "delete"
          ]
        },
        "addInAutocomplete": {
          "type" : "boolean",
          "default": false,
          "description" : "Set to true if you want to add the attribute in autocomplete. (Not returned in search result)"
        },
        "ignoreInResults": {
          "type" : "boolean",
          "default": false,
          "description" : "If set as true, the attribute won't be returned in the results."
        },
        "autocompletePosition": {
          "type" : "string",
          "default": "front",
          "enum": [
            "front", "back"
          ],
          "description" : "Set the value depending on the position of attribute you want to see in generated autocomplete. (Not returned in search result)"
        },
        "isSearchable": {
          "type" : "boolean",
          "default": false,
          "description" : "Set to true if you want to make this attribute searchable. (Not returned in search result)"
        },
        "isFilterable": {
          "type" : "boolean",
          "default": false,
          "description" : "Set to true if you want to make this attribute filterable or available under facets. (Not returned in search result)"
        },
        "glueInOthers": {
          "type" : "boolean",
          "default": true,
          "description" : "Set to false if you don’t want this attribute to be combined with others for suggestion. It will then be available individually in other suggestions. By default it is displayed along with other products' data."
        },
        "addInAutocompleteIndividually": {
          "type" : "boolean",
          "default": false,
          "description" : "Set to true if you want to make this attribute available as suggestion individually in others suggestions. By default it is displayed along with other products' data."
        },
        "autocompleteGlue": {
          "type" : "string",
          "default": "",
          "description" : "This is required when you want to glue attribute value and category value.\n\n e.g. Leather[Attribute] Shoes[Category]\n\n Gifts[Category] for[Glue] Mother[Attribute]\n\n  (Not returned in search result)"
        }
      },
      "required": [
        "id",
        "name",
        "values"
      ]
    },
    "list": {
      "type" : "object",
      "allOf": [
        {
          "$ref" : "#/definitions/Facet"
        },
        {
          "$ref": "#/definitions/FacetListType"
        }
      ]
    },
    "dictionary": {
      "type": "object",
      "allOf": [
        {
          "$ref" : "#/definitions/Facet"
        },
        {
          "$ref": "#/definitions/FacetListType"
        }
      ]
    },
    "range": {
      "type" : "object",
      "allOf": [
        {
          "$ref" : "#/definitions/Facet"
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "type": "object",
              "properties": {
                "min": {
                  "type": "float",
                  "default": 0,
                  "description": "Minimum filtered value of the search request."
                },
                "max": {
                  "type": "float",
                  "description": "Maximum filtered value of the search request."
                }
              }
            }
          }
        }
      ]
    },
    "Facet" : {
      "type" : "object",
      "discriminator": {
        "propertyName": "type"
      },
      "properties": {
        "label": {
          "type": "string",
          "description": "Label of the facet"
        },
        "order": {
          "type": "integer",
          "default": 1,
          "description": "Order in which the facet should be displayed"
        },
        "position": {
          "type": "string",
          "description": "Position of the facet, It can be either left or top.",
          "enum" : [
            "left","top"
          ]
        },
        "key" : {
          "type": "string",
          "description": "Key of the facet used for filtering purpose."
        },
        "type" : {
          "type": "string",
          "description": "Type of the facet, It can be either list, range or dictionary.",
          "enum": [
            "list", "range", "dictionary"
          ]
        }
      }
    },
    "CurrencyRate": {
      "type" : "object",
      "properties": {
        "sourceCode": {
          "type": "string",
          "description": "Source Currency Code - ISO 4217 standard (e.g. INR, USD, EUR etc...)"
        },
        "targetCode": {
          "type": "string",
          "description": "Target Currency Code - ISO 4217 standard (e.g. INR, USD, EUR etc...)"
        },
        "rate": {
          "type": "decimal",
          "description": "Currency conversion rate. (e.g. 76.4156)"
        }
      },
      "required": [
        "sourceCode",
        "targetCode",
        "rate"
      ]
    },
    "Currency": {
      "type" : "object",
      "properties": {
        "code": {
          "type": "string",
          "description": "ISO 4217 Currency Code (e.g. INR, USD, EUR etc...)"
        },
        "symbol": {
          "type": "string",
          "description": "Currency symbol (e.g. ₹, $, € etc...)"
        },
        "label": {
          "type": "string",
          "description": "Currency label to be displayed on storefront. (e.g. Indian Rupee, US Dollar)"
        }
      },
      "required": [
        "code",
        "symbol",
        "label"
      ]
    },
    "Synonym": {
      "type" : "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique ID of the Synonym. **(Required for Edit/PUT operation)**"
        },
        "keyword": {
          "type": "string",
          "maximum": 255,
          "description": "Keyword for which you want to add synonym. This has to be unique for all newly added synonym"
        },
        "relatedWords": {
          "type": "string",
          "description": "Related Words to map on selected keyword. You can add multiple related word for given keyword, each related word must be in new line."
        },
        "type": {
          "type": "string",
          "description": "Type of the Synonym",
          "enum": [
            "one-way",
            "regular"
          ]
        }
      },
      "required": [
        "keyword",
        "relatedWords",
        "type"
      ]
    },
    "Page": {
      "type" : "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique ID of the Page, add/update will be based on this value."
        },
        "title": {
          "type": "string",
          "description": "Title of the Page"
        },
        "slug": {
          "type": "string",
          "description": "Slug of the page, generally unique per each page. (e.g. about-us, contact-us etc...)"
        },
        "url": {
          "type": "string",
          "description": "URL of the Page"
        },
        "type": {
          "type": "string",
          "description": "Type of the Page",
          "enum": [
            "page",
            "blog"
          ],
          "default": "page"
        },
        "content": {
          "type": "string",
          "description": "HTML/Plain text content of the page"
        },
        "excerpt": {
          "type": "string",
          "description": "HTML/Plain text excerpt of the page"
        },
        "image": {
          "type": "string",
          "description": "Feature image of the page"
        },
        "tags": {
          "type": "string",
          "description": "Related tags of the page, Provide it in comma separated values format."
        },
        "isActive": {
          "type": "boolean",
          "description": "True if the page is active in your store, false otherwise.",
          "default": true
        },
        "isExcluded": {
          "type": "boolean",
          "description": "True if you want to exclude the page from suggestions, false otherwise.",
          "default": false
        }
      },
      "required": [
        "id",
        "title",
        "slug",
        "url"
      ]
    },
    "Filter": {
      "allOf": [
        {
          "$ref": "#/definitions/CommonFilterConfigs"
        },
        {
          "$ref": "#/definitions/CommonFilter"
        }
      ]
    },
    "RankingRules": {
      "type": "array",
      "description": "Ordered list of ranking rule groups used to promote, include or exclude products in the result set. Groups are evaluated in the order they are provided. (Maximum 5 groups)",
      "maxItems": 5,
      "items": {
        "type": "object",
        "required": [
          "match",
          "rules"
        ],
        "properties": {
          "match": {
            "type": "string",
            "description": "How the rules inside this group are combined. `any` matches a product if at least one rule matches, `all` matches only if every rule matches.",
            "enum": [
              "any",
              "all"
            ]
          },
          "purpose": {
            "type": "string",
            "description": "What to do with the products matched by this group. `promote` boosts matching products higher in the results, `include` keeps only matching products (acts as a filter), `exclude` removes matching products from the results.",
            "default": "promote",
            "enum": [
              "promote",
              "include",
              "exclude"
            ]
          },
          "rules": {
            "type": "array",
            "description": "List of rules evaluated for this group. (Maximum 20 rules per group)",
            "maxItems": 20,
            "items": {
              "type": "object",
              "required": [
                "field",
                "matchType"
              ],
              "properties": {
                "field": {
                  "type": "string",
                  "description": "Product field the rule is applied on. Use one of the supported default fields, or `attributes` to target a custom attribute (in which case `attribute` and `type` are required).",
                  "enum": [
                    "id",
                    "categories",
                    "brands",
                    "sku",
                    "inStock",
                    "sellingPrice",
                    "discountPercentage",
                    "price",
                    "stockQty",
                    "genders",
                    "colors",
                    "sizes",
                    "createdAt",
                    "attributes"
                  ]
                },
                "matchType": {
                  "type": "string",
                  "description": "How the rule value is matched. Use `any` / `all` / `exclude` (multi-value, with `expectedValues`) for string fields, `eq` (single-value, with `value`) for boolean fields, and `eq` / `lt` / `gt` (single-value, with `value`) for float and datetime fields. `all` is only supported for multi-valued fields (e.g. categories, colors, sizes).",
                  "enum": [
                    "any",
                    "all",
                    "exclude",
                    "eq",
                    "lt",
                    "gt"
                  ]
                },
                "attribute": {
                  "type": "string",
                  "description": "Attribute ID to target. Required (and only allowed) when `field` is `attributes`."
                },
                "type": {
                  "type": "string",
                  "description": "Data type of the targeted attribute. Used (and only allowed) when `field` is `attributes`.",
                  "default": "string",
                  "enum": [
                    "string",
                    "float",
                    "datetime"
                  ]
                },
                "value": {
                  "type": "string",
                  "description": "Single value to match. Required for single-value match types (`eq`, `lt`, `gt`). Must not be set together with `expectedValues`. For datetime fields use the `Y-m-d H:i:s` format."
                },
                "expectedValues": {
                  "type": "array",
                  "description": "List of values to match. Required for multi-value match types (`any`, `all`, `exclude`). Must not be set together with `value`. (Maximum 50 values per rule)",
                  "maxItems": 50,
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "Brand": {
      "type" : "object",
      "properties": {
        "name" : {
          "type" : "string",
          "description" : "Name of the brand"
        },
        "id" : {
          "type" : "string",
          "description" : "Unique ID of the brand"
        },
        "isSearchable": {
          "type" : "boolean",
          "default": true,
          "description" : "Set to true if you want to make this brand searchable. (Not returned in search result)"
        },
        "addInAutocomplete": {
          "type" : "boolean",
          "default": true,
          "description" : "Set to true if you want to make this brand available in autocomplete suggestions. (Not returned in search result)"
        },
        "image" : {
          "type" : "string",
          "default" : "",
          "description" : "Image of the brand"
        },
        "url" : {
          "type" : "string",
          "default" : "",
          "description" : "URL of the brand"
        }
      },
      "required": [
        "name"
      ]
    },
    "ProductCategory": {
      "type" : "object",
      "properties": {
        "id" : {
          "type" : "string",
          "description" : "Unique ID of the category"
        },
        "name" : {
          "type" : "string",
          "description" : "Name of the category"
        },
        "parentId" : {
          "type" : "string",
          "default": "",
          "description" : "Immediate Parent ID of the category."
        },
        "pathIds": {
          "type": "array",
          "description" : "An array of category IDs in a path. (Not returned in search result)",
          "items": {
            "type": "string"
          }
        },
        "isSearchable": {
          "type" : "boolean",
          "default": false,
          "description" : "Set to true if you want to make this category searchable. (Not returned in search result)"
        },
        "includeInMenu": {
          "type" : "boolean",
          "default": true,
          "description" : "Set to true if you want to make this category available in facet navigation. (Not returned in search result)"
        },
        "suggestInOthers": {
          "type" : "boolean",
          "default": true,
          "description" : "Set to false if you want to remove this category from others generated suggestions along with other products' data."
        },
        "image" : {
          "type" : "string",
          "default" : "",
          "description" : "Image of the category"
        },
        "url" : {
          "type" : "string",
          "default" : "",
          "description" : "URL of the category"
        },
        "description" : {
          "type" : "string",
          "default" : "",
          "description" : "Description of the category"
        },
        "position": {
          "type" : "integer",
          "default": 1,
          "description" : "Hierarchy Position of the category."
        },
        "level": {
          "type" : "integer",
          "default": 1,
          "description" : "Hierarchy Level of the category."
        }
      },
      "required": [
        "name",
        "id",
        "parentId",
        "pathIds"
      ]
    },
    "FacetListType": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer",
                "default": 1,
                "description": "Number of products available in this facet."
              },
              "label": {
                "type": "string",
                "description": "Name of the facet."
              },
              "key": {
                "type": "string",
                "description": "Key of the facet used to filter the results, Generally it's same as label but different in some cases (e.g. Category)."
              },
              "data": {
                "type": "object",
                "description": "An object of specific facet data (e.g. Image, description etc...)"
              }
            }
          }
        }
      },
      "discriminator": {
        "propertyName": "type"
      }
    },
    "ProductPricesRequiredCommon": {
      "type" : "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique id the product in store."
        },
        "sellingPrice": {
          "type": "float",
          "description": "Selling price of the product with discount applied. (This is useful for displaying on store, including / exculding tax)"
        }
      }
    },
    "ProductCommonChildData": {
      "type": "object",
      "properties": {
        "variationsTotalReviews": {
          "type": "array",
          "description": "An array of total reviews of all variations.",
          "items": {
            "type": "integer"
          }
        },
        "variationsAvgRatings": {
          "type": "array",
          "description": "An array of average ratings of all variations.",
          "items": {
            "type": "float",
            "maximum": 100
          }
        }
      }
    },
    "ProductPricesCommonChildData": {
      "type": "object",
      "properties": {
        "sellingPrices": {
          "type": "array",
          "description": "An array of selling price of all variations.",
          "items": {
            "type": "float"
          }
        },
        "discounts": {
          "type": "array",
          "description": "An array of discounts of all variations.",
          "items": {
            "type": "float"
          }
        },
        "discountPercentages": {
          "type": "array",
          "description": "An array of discount percentages of all variations.",
          "items": {
            "type": "float",
            "maximum": 100
          }
        },
        "prices": {
          "type": "array",
          "description": "An array of prices of all variations.",
          "items": {
            "type": "float"
          }
        },
        "finalPrices": {
          "type": "array",
          "description": "An array of final price of all variations.",
          "items": {
            "type": "float"
          }
        }
      }
    },
    "ProductIdentifierCommon": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique id the product in store."
        },
        "groupId": {
          "type": "string",
          "description": "Product's Group ID, if the product is a variation of other product then the Group ID will be the id of main product."
        }
      }
    },
    "ProductAttributesCommon": {
      "type" : "object",
      "allOf": [
        {
          "type": "object",
          "$ref": "#/definitions/ProductIdentifierCommon"
        },
        {
          "type": "object",
          "properties": {
            "attributes": {
              "type": "array",
              "description": "An array of Product attributes, Make sure all variation's product attributes are added for parent product.",
              "items": {
                "type": "object",
                "$ref": "#/definitions/ProductAttribute"
              }
            }
          }
        }
      ]
    },
    "ProductPricesCommon": {
      "type" : "object",
      "allOf": [
        {
          "type": "object",
          "$ref": "#/definitions/ProductIdentifierCommon"
        },
        {
          "type": "object",
          "properties": {
            "sellingPrice": {
              "type": "float",
              "description": "Selling price of the product with discount applied. (This is useful for displaying on store, including / exculding tax)"
            },
            "discount": {
              "type": "float",
              "default": 0,
              "description": "The discount in amount applied on particular product"
            },
            "discountPercentage": {
              "type": "float",
              "default": 0,
              "maximum": 100,
              "description": "A percentage discount applied on particular product."
            },
            "price": {
              "type": "float",
              "default": 0,
              "description": "Main price of the product without discount applied."
            },
            "finalPrice": {
              "type": "float",
              "default": 0,
              "description": "Final price of the product without any tax operations."
            },
            "childData":  {
              "type": "object",
              "description": "If the product is type of configurable product or the product has different variations/children then add all variations/children data under child data as an array. These child data helps to find the products based on its child data. Contact us to understand important of this in detail.\n\nThis is not returned in search results.",
              "properties": {
              },
              "allOf": [
                {
                  "type": "object",
                  "$ref": "#/definitions/ProductPricesCommonChildData"
                }
              ]
            }
          }
        }
      ]
    },
    "ProductStocksCommon": {
      "type" : "object",
      "allOf": [
        {
          "type": "object",
          "$ref": "#/definitions/ProductIdentifierCommon"
        },
        {
          "type": "object",
          "properties": {
            "inStock": {
              "type": "boolean",
              "default": true,
              "description": "It can either true or false. If the product is in stock then the value would be true otherwise false. For parent product, set it to true if any of its variation is in stock."
            },
            "isSearchable": {
              "type": "boolean",
              "default": true,
              "description": "Set it as true if the product is searchable otherwise false. For parent product, set it to true if any of its variation is searchable. (Not returned in search results)"
            },
            "isVisibleInCatalog": {
              "type": "boolean",
              "default": true,
              "description": "Set it as true if the product is accessible from catalog/category pages otherwise false, set it to true if any of its variation is visible in catalog. (Not returned in search results)"
            }
          }
        }
      ]
    },
    "AllProductsCommon": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique id of the product in store."
        },
        "inStock": {
          "type": "boolean",
          "description": "It can either true or false. If the product is in stock then the value would be true otherwise false."
        }
      }
    },
    "ProductCommon": {
      "type" : "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Product Name"
        },
        "categories": {
          "type": "array",
          "description": "An array immediate product categories",
          "items": {
            "allOf": [
              {
                "type": "object",
                "$ref": "#/definitions/ProductCategory"
              }
            ]
          }
        },
        "mainImage": {
          "type": "string",
          "description": "URL of the Product's Main image. (Generally smaller thumbnail image of the product)"
        },
        "hoverImage": {
          "type": "string",
          "description": "URL of the Product's Hover image. (Generally smaller thumbnail image of the product)"
        },
        "mainVideo": {
          "type": "string",
          "description": "URL of the Product's Main video."
        },
        "brand": {
          "type": "string",
          "description": "Product Brand/Manufacturer"
        },
        "sku": {
          "type": "array",
          "description": "An array Product SKUs. For parent product make sure you save all child SKUs along with parent product SKU.",
          "items": {
            "type": "string"
          }
        },
        "description": {
          "type": "string",
          "description": "Product Description"
        },
        "url": {
          "type": "string",
          "description": "Product URL of your store"
        },
        "inStock": {
          "type": "boolean",
          "default": true,
          "description": "It can either true or false. If the product is in stock then the value would be true otherwise false. For parent product, set it to true if any of its variation is in stock."
        },
        "stockQty": {
          "type": "integer",
          "default": 0,
          "description": "If the product is inStock, provide quntity of products available in stock. (Not returned in search results)"
        },
        "totalReviews": {
          "type": "integer",
          "description": "Total number of reviews added for product."
        },
        "avgRatings": {
          "type": "float",
          "default": 0,
          "maximum": 100,
          "description": "Average rating of the product. (Values are in percentage)"
        },
        "gender": {
          "type": "string",
          "description": "Gender for whom the product is being sold.",
          "enum": [
            "Men",
            "Women",
            "Boys",
            "Girls",
            "Kids",
            "Unisex"
          ]
        },
        "colors": {
          "type": "array",
          "description": "Colors in which the product is available.",
          "items": {
            "type": "object",
            "allOf": [
              {
                "type": "object",
                "properties": {
                  "value": {
                    "type": "string",
                    "description": "Color name or label"
                  }
                },
                "required": [
                  "value"
                ]
              },
              {
                "$ref" : "#/definitions/SwatchDetails"
              }
            ]
          }
        },
        "attributes": {
          "type": "array",
          "description": "An array of Product attributes, Make sure all variation's product attributes are added for parent product.",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProductAttribute"
          }
        },
        "images": {
          "type": "array",
          "description": "An array Product image URLs",
          "items": {
            "type": "string"
          }
        },
        "videos": {
          "type": "array",
          "description": "An array Product video URLs",
          "items": {
            "type": "string"
          }
        },
        "sizes": {
          "type": "array",
          "description": "An array sizes in which the product is available.",
          "items": {
            "type": "object",
            "allOf": [
              {
                "type": "object",
                "properties": {
                  "value": {
                    "type": "string",
                    "description": "Size name or label"
                  }
                },
                "required": [
                  "value"
                ]
              },
              {
                "$ref" : "#/definitions/SwatchDetails"
              }
            ]
          }
        },
        "createdAt": {
          "type": "datetime",
          "description": "Product's created date in yyyy-mm-dd hh:mm:ss format. (Not returned in search results)"
        },
        "updatedAt": {
          "type": "datetime",
          "description": "Product's updated date in yyyy-mm-dd hh:mm:ss format. (Not returned in search results)"
        },
        "orderedQty": {
          "type": "integer",
          "default": 0,
          "description": "Total quantity the particular product has been ordered. (Not returned in search results)"
        },
        "noOfTimesOrdered": {
          "type": "integer",
          "default": 0,
          "description": "Total number of time the particular product has been added in single order. (Not returned in search results)"
        },
        "isSearchable": {
          "type": "boolean",
          "default": true,
          "description": "Set it as true if the product is searchable otherwise false. For parent product, set it to true if any of its variation is searchable. (Not returned in search results)"
        },
        "isVisibleInCatalog": {
          "type": "boolean",
          "default": true,
          "description": "Set it as true if the product is accessible from catalog/category pages otherwise false, set it to true if any of its variation is visible in catalog. (Not returned in search results)"
        },
        "childData":  {
          "type": "object",
          "description": "If the product is type of configurable product or the product has different variations/children then add all variations/children data under child data as an array. These child data helps to find the products based on its child data. Contact us to understand important of this in detail.\n\nThis is not returned in search results.",
          "properties": {

          },
          "allOf": [
            {
              "type": "object",
              "$ref": "#/definitions/ProductCommonChildData"
            },
            {
              "type": "object",
              "$ref": "#/definitions/ProductPricesCommonChildData"
            }
          ]
        },
        "inventorySources": {
          "type": "array",
          "description": "An array of inventory sources of particular product. (Won't be returned in search results, This is required for inventory source based rendering)",
          "items": {
            "type": "object",
            "allOf": [
              {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "maximum": 255,
                    "description": "Inventory Source ID. (This is unique per inventory source location)"
                  },
                  "sellingPrice": {
                    "type": "array",
                    "description": "An array of selling prices available for inventory source.",
                    "items": {
                      "type": "float"
                    }
                  },
                  "discount": {
                    "type": "array",
                    "description": "An array of discounts available for inventory source.",
                    "items": {
                      "type": "float"
                    }
                  },
                  "discountPercentage": {
                    "type": "array",
                    "description": "An array of discount percentages available for inventory source.",
                    "items": {
                      "type": "float",
                      "maximum": 100
                    }
                  },
                  "price": {
                    "type": "array",
                    "description": "An array of prices available for inventory source.",
                    "items": {
                      "type": "float"
                    }
                  },
                  "finalPrice": {
                    "type": "array",
                    "description": "An array of final prices available for inventory source.",
                    "items": {
                      "type": "float"
                    }
                  },
                  "inStock": {
                    "type": "bool",
                    "default": false,
                    "description": "True if variation is in Stock at particular source, false otherwise"
                  },
                  "stockQty": {
                    "type": "integer",
                    "default": 0,
                    "description": "If the product is inStock at particular inventory source, provide quantity of products available in stock."
                  }
                },
                "required": [
                  "key"
                ]
              }
            ]
          }
        }
      }
    },
    "ProductPrices": {
      "allOf" : [
        {
          "$ref" : "#/definitions/ProductPricesCommon"
        }
      ],
      "required": [
        "id",
        "sellingPrice"
      ]
    },
    "ProductStocks": {
      "allOf" : [
        {
          "$ref" : "#/definitions/ProductStocksCommon"
        }
      ],
      "required": [
        "id"
      ]
    },
    "ProductAttributes": {
      "allOf" : [
        {
          "$ref" : "#/definitions/ProductAttributesCommon"
        }
      ],
      "required": [
        "id"
      ]
    },
    "Product": {
      "allOf" : [
        {
          "$ref" : "#/definitions/ProductPricesRequiredCommon"
        },
        {
          "$ref" : "#/definitions/ProductCommon"
        },
        {
          "$ref" : "#/definitions/ProductPricesCommon"
        }
      ],
      "required": [
        "name",
        "id",
        "mainImage",
        "categories",
        "sellingPrice"
      ]
    },
    "AllProduct": {
      "allOf" : [
        {
          "$ref" : "#/definitions/AllProductsCommon"
        }
      ]
    },
    "User": {
      "type" : "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "User name",
          "maxLength": 255
        },
        "email": {
          "type": "string",
          "description": "User email",
          "maxLength": 255
        },
        "phone": {
          "type": "string",
          "description": "User phone number",
          "maxLength": 255
        },
        "pushNotificationId": {
          "type": "string",
          "description": "Push notification ID associated with the User",
          "maxLength": 2048
        },
        "pushNotificationProvider": {
          "type": "string",
          "description": "Push notification provider associated with the User",
          "enum": [
            "pushOwl",
            "webEngage",
            "moEngage"
          ]
        },
        "crmId": {
          "type": "string",
          "description": "CRM Identifier associated with the User",
          "maxLength": 255
        },
        "machineId": {
          "type": "string",
          "description": "Machine Identifier associated with the User",
          "maxLength": 255
        }
      },
      "required": [
        "uuid",
        "name"
      ]
    }
  },
  "paths": {
    "/autocomplete" : {
      "post" : {
        "tags": [
          "Autocomplete"
        ],
        "summary": "Catalogue Suggestions",
        "description": "Get the search query suggestions based on entered text by user. It returns auto-generated search queries along with filters.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Suggestions has been fetched successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/SuggestionsResult"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          },
          {
            "in" : "formData",
            "name" : "q",
            "type" : "string",
            "required": true,
            "description": "User entered query."
          },
          {
            "in": "formData",
            "name" : "suggestionsCount",
            "type" : "integer",
            "required": false,
            "maximum": 20,
            "default" : 10,
            "minimum": 1,
            "description": "Number of suggestions to return."
          },
          {
            "in" : "formData",
            "name" : "productsCount",
            "type" : "integer",
            "required": false,
            "description": "Set this to greater then 0 if you want to get top products for given query.",
            "maximum": 10,
            "default" : 0
          },
          {
            "in" : "formData",
            "name" : "minQueryLength",
            "type" : "integer",
            "required": false,
            "description": "By default Wizzy return products suggestions only if query length is greater or equal to 3, In some cases if we want to override that we can set the value of this parameter between 1 to 6.",
            "maximum": 6,
            "default" : 3,
            "minimum": 1
          },
          {
            "in" : "formData",
            "name" : "minLastWordLength",
            "type" : "integer",
            "required": false,
            "description": "By default Wizzy considers last word of the search query in some algorithm endpoints only if it has 3 or more characters, In some cases if we want to override that we can set the value of this parameter between 1 to 6.",
            "maximum": 6,
            "default" : 3,
            "minimum": 1
          },
          {
            "in" : "formData",
            "name" : "showOOSProductsSwatches",
            "type": "boolean",
            "description": "Set this flag to control whether out-of-stock product swatches should be shown in search results.",
            "default": null
          },
          {
            "in" : "formData",
            "name" : "includeOutOfStock",
            "type": "boolean",
            "description": "By default search API doesn't return out of stock products. Set this to true if you want search API to return out of stock products as well.",
            "default": false
          },
          {
            "in" : "formData",
            "name" : "getAllVariants",
            "type": "string",
            "description": "By default Autocomplete API returns single variant per product, Set this to true if you want Autocomplete API to return all the variants of a product in single API response.",
            "default": "false",
            "enum": [
              "true",
              "false"
            ]
          },
          {
            "in" : "formData",
            "name" : "variantsGroupBy",
            "type": "string",
            "description": "Variant grouping field used when grouping variants in autocomplete results.",
            "enum": [
              "groupId",
              "virtualGroupId"
            ]
          },
          {
            "in" : "formData",
            "name" : "showOOSProductsInOrder",
            "type": "string",
            "description": "By default Autocomplete API returns OOS products at the end of the page, Set this to true if you want Autocomplete API to return all the OOS products in the same relevance order.",
            "default": "false",
            "enum": [
              "true",
              "false"
            ]
          },
          {
            "in" : "formData",
            "name" : "currency",
            "type": "string",
            "description": "Currency code in which the search is being performed. It must be ISO 4217 currency code. (e.g. INR, USD, EUR etc...)",
            "default": "Display currency set in Currency Settings"
          },
          {
            "in" : "formData",
            "name": "sort",
            "allOf": [
              {
                "$ref": "#/definitions/CommonSortField"
              }
            ]
          },
          {
            "in" : "formData",
            "name": "swatch",
            "allOf": [
              {
                "$ref": "#/definitions/CommonSwatchField"
              }
            ]
          },
          {
            "in" : "formData",
            "name": "sections",
            "allOf": [
              {
                "$ref": "#/definitions/CommonSectionsField"
              }
            ]
          },
          {
            "in" : "formData",
            "name": "facets",
            "allOf": [
              {
                "$ref": "#/definitions/CommonFacetsField"
              }
            ]
          },
          {
            "in" : "formData",
            "name": "inventorySources",
            "allOf": [
              {
                "$ref": "#/definitions/CommonInventorySourcesField"
              }
            ]
          },
          {
            "in" : "formData",
            "name": "hasToReturnBanners",
            "default":"true",
            "allOf": [
              {
                "$ref": "#/definitions/CommonHasToReturnBannersField"
              }
            ]
          },
          {
            "in" : "formData",
            "name": "crossSell",
            "description": "Cross-sell configuration JSON string. When supplied, the Autocomplete API returns cross-sell product recommendations alongside the suggestions. Please use the Cross-sell field model.",
            "allOf": [
              {
                "$ref": "#/definitions/CommonCrossSellField"
              }
            ]
          },
          {
            "in" : "formData",
            "name" : "rankingRules",
            "type": "string",
            "description": "Ranking Rules JSON string used to promote, include or exclude products based on custom criteria. Please use the Ranking Rules model. Passing an empty array is treated as no rules applied."
          }
        ]
      }
    },
    "/currencies/default-currency" : {
      "put" : {
        "tags": [
          "Currencies"
        ],
        "summary": "Update Default Currency",
        "description": "Update default currency of the store, Default currency is used on search/filter product APIs. Products API considers the default currency while searching/filtering the catalogue.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Default currency have been updated successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          },
          {
            "in" : "formData",
            "name" : "code",
            "type" : "string",
            "required": true,
            "description": "ISO 4217 currency code. (e.g. INR, USD, EUR etc...)"
          }
        ]
      }
    },
    "/currencies/display-currency" : {
      "put" : {
        "tags": [
          "Currencies"
        ],
        "summary": "Update Display Currency",
        "description": "Update display currency of the store, Display currency is used on search/filter product responses. Results from search/filter products API have price values in display currency.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Display currency have been updated successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          },
          {
            "in" : "formData",
            "name" : "code",
            "type" : "string",
            "required": true,
            "description": "ISO 4217 currency code. (e.g. INR, USD, EUR etc...)"
          }
        ]
      }
    },
    "/currencies/rates" : {
      "post": {
        "tags": [
          "Currencies"
        ],
        "summary": "Update Currency Rates",
        "description": "Add/Update currency rates for configured currencies on Wizzy's server, Its a bulk save API. It supports saving maximum 1,000 currencies in a single request.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "All given currency rates have been updated successfully.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/ApiResponse"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in": "header",
            "name": "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in": "header",
            "name": "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/definitions/CurrencyRate"
                }
              }
            }
          }
        }
      },
      "get" : {
        "tags": [
          "Currencies"
        ],
        "summary": "Get Active Rates",
        "description": "This API returns all configured active currency rates of the store.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Active currency rates have been fetched successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/CurrencyRatesGetResult"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ]
      }
    },
    "/categories/{id}": {
      "get": {
        "tags": [
          "Categories"
        ],
        "summary": "Get Category by ID",
        "description": "This API returns category by given ID.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Category has been fetched successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/CategoryGetResult"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ]
      }
    },
    "/brands": {
      "post": {
        "tags": [
          "Brands"
        ],
        "summary": "Save Brands",
        "description": "Update your store brands details on Wizzy's server, Its a bulk save API. It supports saving maximum 5000 brands in a single request.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "All brands have been saved successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/definitions/Brand"
                }
              }
            }
          }
        }
      }
    },
    "/categories": {
      "put": {
        "tags": [
          "Categories"
        ],
        "summary": "Update Categories",
        "description": "Update your store category details on Wizzy's server, Its a bulk update API. It supports saving maximum 250 categories in a single request.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "All categories have been updated successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/definitions/ProductCategory"
                }
              }
            }
          }
        }
      }
    },
    "/categories/": {
      "delete": {
        "tags": [
          "Categories"
        ],
        "summary": "Delete Categories",
        "description": "Delete categories and its product mapping on Wizzy's server, Its a bulk delete API. It supports deleting maximum 250 categories in a single request.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "All categories have been deleted successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "An array of unique categories IDs/Handles to be deleted. (e.g. ['123','456','test'])"
                }
              }
            }
          }
        }
      }
    },
    "/synonyms": {
      "get" : {
        "tags": [
          "Synonyms"
        ],
        "summary": "Get All Synonyms",
        "description": "This API returns all added synonyms of the store.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Synonyms has been fetched successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/SynonymsGetResult"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ]
      },
      "post": {
        "tags": [
          "Synonyms"
        ],
        "summary": "Add Synonym",
        "description": "Add synonym details on Wizzy's store.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Synonym have been added successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "$ref": "#/definitions/Synonym"
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Synonyms"
        ],
        "summary": "Edit Synonym",
        "description": "Edit synonym details on Wizzy's store.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Synonym have been edited successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "$ref": "#/definitions/Synonym"
              }
            }
          }
        }
      }
    },
    "/synonyms/{id}": {
      "delete": {
        "tags": [
          "Synonyms"
        ],
        "summary": "Delete Synonym",
        "description": "Delete the given synonym details from Wizzy's store.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Synonym has been deleted successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ]
      }
    },
    "/pages" : {
      "get" : {
        "tags": [
          "Pages"
        ],
        "summary": "Get All Pages",
        "description": "This API returns all added pages of the store.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Pages has been fetched successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/PagesGetResult"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ]
      },
      "post": {
        "tags": [
          "Pages"
        ],
        "summary": "Save Pages",
        "description": "Add/Update your store pages details on Wizzy's server, Its a bulk save API. It supports saving maximum 250 pages in a single request.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "All pages have been saved successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/definitions/Page"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Pages"
        ],
        "summary": "Delete Pages",
        "description": "Delete the added pages details from Wizzy's server, Its a bulk delete API. It supports deleting maximum 250 pages in a single request.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "All given pages has been deleted successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "An array of unique page IDs to be deleted. (e.g. ['123','456'])"
                }
              }
            }
          }
        }
      }
    },
    "/pages/all": {
      "delete": {
        "tags": [
          "Pages"
        ],
        "summary": "Delete All Pages",
        "description": "Delete all the added pages details from Wizzy's server, Its a bulk delete API.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "All types of pages has been deleted successfully from Wizzy.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {

              }
            }
          }
        }
      }
    },
    "/currencies" : {
      "delete" : {
        "tags": [
          "Currencies"
        ],
        "summary": "Delete Currencies",
        "description": "Delete the supported currencies from Wizzy's server, Its a bulk delete API. It supports deleting maximum 250 currencies in a single request.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "All given currencies have been deleted successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string",
                      "description": "ISO 4217 Currency Code (e.g. INR, USD, EUR etc...)"
                    }
                  },
                  "required": [
                    "code"
                  ]
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags": [
          "Currencies"
        ],
        "summary": "Save Currencies",
        "description": "Add/Update the supported currencies on Wizzy's server, Its a bulk save API. It supports saving maximum 250 currencies in a single request.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "All currencies have been updated successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/definitions/Currency"
                }
              }
            }
          }
        }
      },
      "get" : {
        "tags": [
          "Currencies"
        ],
        "summary": "Get All Added Currencies",
        "description": "This API returns all added/configured currencies of the store.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Added currencies has been fetched successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/CurrenciesGetResult"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ]
      }
    },
    "/events/click" : {
      "post" : {
        "tags": [
          "Events"
        ],
        "summary": "Save Click Event",
        "description": "It's a general click event API which is used to save click event at any instance from store (e.g. Search Results, Filter, Menu etc...)",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Event (Click) has been saved successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/definitions/ClickEvent"
                  }
                ]
              }
            }
          }
        }
      }
    },
    "/events/view" : {
      "post" : {
        "tags": [
          "Events"
        ],
        "summary": "Save View Event",
        "description": "It's a general view event API which is used to save view event at any instance from store (e.g. Search Results, Filter etc...)",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Event (View) has been saved successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/definitions/ClickEvent"
                  }
                ]
              }
            }
          }
        }
      }
    },
    "/events/converted" : {
      "post" : {
        "tags": [
          "Events"
        ],
        "summary": "Save Converted Event",
        "description": "It's a general converted event API which is used to save conversion event at any instance from store (e.g. Product Purchased, Product Added in Wishlist etc...)",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Event (Converted) has been saved successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/definitions/ConvertedEvent"
                  }
                ]
              }
            }
          }
        }
      }
    },
    "/products/save" : {
      "post" : {
        "tags": [
          "Products"
        ],
        "summary": "Save Products",
        "description": "Save the products on Wizzy's server, Its a bulk save API which handles both create and update. It supports saving maximum 5,000 products in a single request. API will update products when product is found with same `id`. Invalid products are reported per item and the request must be sent as application/json.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Saved the products successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/SaveResult"
                }
              ]
            }
          },
          "400": {
            "description": "Invalid JSON, empty payload, product validation failures, or other request-level issues. Individual invalid products are returned with itemized errors.",
            "schema": {
              "$ref": "#/definitions/ApiResponse"
            }
          },
          "402": {
            "description": "Subscription expired or save quota exhausted.",
            "schema": {
              "$ref": "#/definitions/ApiResponse"
            }
          },
          "403": {
            "description": "Authentication failed or the store is write-locked.",
            "schema": {
              "$ref": "#/definitions/ApiResponse"
            }
          },
          "429": {
            "description": "Only one save/delete request can run at a time.",
            "schema": {
              "$ref": "#/definitions/ApiResponse"
            }
          },
          "500": {
            "description": "Backend indexing failure while saving products.",
            "schema": {
              "$ref": "#/definitions/ApiResponse"
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Send an application/json body containing a non-empty array of Product objects. The payload is limited to 50MB and to 5,000 products per request.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/definitions/Product"
                }
              }
            }
          }
        }
      }
    },
    "/products/prices/save" : {
      "post" : {
        "tags": [
          "Products"
        ],
        "summary": "Save Products Prices",
        "description": "Save the products prices on Wizzy's server, Its a bulk save API. It supports saving maximum 50,000 products prices in a single request.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Saved the products prices successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/SavePricesResult"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/definitions/ProductPrices"
                }
              }
            }
          }
        }
      }
    },
    "/products/stocks/save" : {
      "post" : {
        "tags": [
          "Products"
        ],
        "summary": "Save Products Stocks",
        "description": "Save the products stocks data on Wizzy's server, Its a bulk save API. It supports saving maximum 5,000 products stocks data in a single request.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Saved the products stocks successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/SaveStocksResult"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/definitions/ProductStocks"
                }
              }
            }
          }
        }
      }
    },
    "/products/attributes/save" : {
      "post" : {
        "tags": [
          "Products"
        ],
        "summary": "Save Products Attributes",
        "description": "Save the products attributes on Wizzy's server, Its a bulk save API. It supports saving maximum 30,000 products attributes in a single request.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Saved the products attributes successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/SaveAttributesResult"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/definitions/ProductAttributes"
                }
              }
            }
          }
        }
      }
    },
    "/products/search" : {
      "post" : {
        "tags": [
          "Products"
        ],
        "summary": "Search Products",
        "description": "Search the products by query",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Found the products successfully.",
            "headers": {
              "wizzy-searchedKey": {
                "type": "string",
                "description": "Encrypted search key returned for subsequent filter requests."
              }
            },
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/SearchResult"
                }
              ]
            }
          },
          "400": {
            "description": "Invalid search request parameters or malformed search configuration.",
            "schema": {
              "$ref": "#/definitions/ApiResponse"
            }
          },
          "402": {
            "description": "Subscription expired or search quota exhausted.",
            "schema": {
              "$ref": "#/definitions/ApiResponse"
            }
          },
          "403": {
            "description": "Authentication or authorization failed.",
            "schema": {
              "$ref": "#/definitions/ApiResponse"
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          },
          {
            "in" : "formData",
            "name" : "q",
            "type" : "string",
            "required": true,
            "description": "Search query."
          },
          {
            "in" : "formData",
            "name" : "productsCount",
            "type" : "integer",
            "default": 20,
            "maximum": 100,
            "minimum": 1,
            "description": "Number of products to return in a search request."
          },
          {
            "in" : "formData",
            "name" : "minQueryLength",
            "type" : "integer",
            "required": false,
            "description": "By default Wizzy return products suggestions only if query length is greater or equal to 3, In some cases if we want to override that we can set the value of this parameter between 1 to 6.",
            "maximum": 6,
            "default" : 3,
            "minimum": 1
          },
          {
            "in" : "formData",
            "name" : "minLastWordLength",
            "type" : "integer",
            "required": false,
            "description": "By default Wizzy considers last word of the search query in some algorithm endpoints only if it has 3 or more characters, In some cases if we want to override that we can set the value of this parameter between 1 to 6.",
            "maximum": 6,
            "default" : 3,
            "minimum": 1
          },
          {
            "in" : "formData",
            "name" : "includeOutOfStock",
            "type": "boolean",
            "description": "By default search API doesn't return out of stock products. Set this to true if you want search API to return out of stock products as well.",
            "default": false
          },
          {
            "in" : "formData",
            "name" : "hasToConsiderQueryRedirects",
            "type": "boolean",
            "description": "By default, the search API returns the configured redirect URL of the queries if a it exists. Set this to false if you want to disable this behavior.",
            "default": true
          },
          {
            "in" : "formData",
            "name" : "getAllVariants",
            "type": "string",
            "description": "By default Search API returns single variant per product, Set this to true if you want Search API to return all the variants of a product in single API response.",
            "default": "false",
            "enum": [
              "true",
              "false"
            ]
          },
          {
            "in" : "formData",
            "name" : "variantsGroup",
            "type": "string",
            "description": "Optional variant grouping key used when grouping variants in search results."
          },
          {
            "in" : "formData",
            "name" : "variantsGroupBy",
            "type": "string",
            "description": "Variant grouping field used when grouping variants in search results.",
            "enum": [
              "groupId",
              "virtualGroupId"
            ]
          },
          {
            "in" : "formData",
            "name" : "showOOSProductsInOrder",
            "type": "string",
            "description": "By default Search API returns OOS products at the end of the page, Set this to true if you want Search API to return all the OOS products in the same relevance order.",
            "default": "false",
            "enum": [
              "true",
              "false"
            ]
          },
          {
            "in" : "formData",
            "name" : "rankingRules",
            "type": "string",
            "description": "Ranking Rules JSON string used to promote, include or exclude products based on custom criteria. Please use the Ranking Rules model. Passing an empty array is treated as no rules applied."
          },
          {
            "in" : "formData",
            "name" : "ignoreEmptyFacets",
            "type": "boolean",
            "description": "Set this to true to suppress empty facets in the response.",
            "default": false
          },
          {
            "in" : "formData",
            "name" : "enforcePriceRangeFromQuery",
            "type": "boolean",
            "description": "Set this to true to enforce price range extraction from the query when possible.",
            "default": false
          },
          {
            "in" : "formData",
            "name" : "currency",
            "type": "string",
            "description": "Currency code in which the search is being performed. It must be ISO 4217 currency code. (e.g. INR, USD, EUR etc...)",
            "default": "Display currency set in Currency Settings"
          },
          {
            "in" : "formData",
            "name": "sort",
            "allOf": [
              {
                "$ref": "#/definitions/CommonSortField"
              }
            ]
          },
          {
            "in" : "formData",
            "name": "swatch",
            "allOf": [
              {
                "$ref": "#/definitions/CommonSwatchField"
              }
            ]
          },
          {
            "in" : "formData",
            "name": "facets",
            "allOf": [
              {
                "$ref": "#/definitions/CommonFacetsField"
              }
            ]
          },
          {
            "in" : "formData",
            "name": "inventorySources",
            "allOf": [
              {
                "$ref": "#/definitions/CommonInventorySourcesField"
              }
            ]
          },
          {
            "in" : "formData",
            "name": "attributeFacetValuesLimit",
            "allOf": [
              {
                "$ref": "#/definitions/CommonAttributeFacetValuesLimit"
              }
            ]
          },
          {
            "in": "formData",
            "name": "includeSwatchInAttributeFacets",
            "allOf": [
              {
                "$ref": "#/definitions/CommonIncludeSwatchInAttributeFacets"
              }
            ]
          },
          {
            "in": "formData",
            "name": "hasToReturnBanners",
            "default": "true",
            "allOf": [
              {
                "$ref": "#/definitions/CommonHasToReturnBannersField"
              }
            ]
          }
        ]
      }
    },
    "/products/visual-search": {
      "post": {
        "tags": [
          "Products"
        ],
        "summary": "Visual Search Products",
        "description": "Search products visually similar to an uploaded image.",
        "consumes": [
          "multipart/form-data"
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Found visually similar products successfully.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/ApiResponse"
                },
                {
                  "$ref": "#/definitions/VisualSearchResult"
                }
              ]
            }
          },
          "400": {
            "description": "Invalid visual search request parameters or malformed multipart upload.",
            "schema": {
              "$ref": "#/definitions/ApiResponse"
            }
          },
          "402": {
            "description": "Subscription expired or visual search quota exhausted.",
            "schema": {
              "$ref": "#/definitions/ApiResponse"
            }
          },
          "403": {
            "description": "Authentication or authorization failed.",
            "schema": {
              "$ref": "#/definitions/ApiResponse"
            }
          },
          "422": {
            "description": "The uploaded image could not be processed for visual search.",
            "schema": {
              "$ref": "#/definitions/ApiResponse"
            }
          },
          "500": {
            "description": "Unexpected server error while processing the visual search request.",
            "schema": {
              "$ref": "#/definitions/ApiResponse"
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in": "header",
            "name": "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in": "header",
            "name": "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type": "string",
            "maximum": 100
          },
          {
            "in": "header",
            "name": "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type": "string",
            "maximum": 100
          },
          {
            "in": "header",
            "name": "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type": "string"
          },
          {
            "in": "formData",
            "name": "image",
            "type": "file",
            "required": true,
            "description": "Image file to use for visual search. Supported formats are JPEG, PNG, and WebP."
          },
          {
            "in": "formData",
            "name": "productsCount",
            "type": "integer",
            "default": 20,
            "maximum": 100,
            "minimum": 1,
            "description": "Number of products to return in a visual search request."
          },
          {
            "in": "formData",
            "name": "currency",
            "type": "string",
            "description": "Currency code in which the visual search is being performed. It must be ISO 4217 currency code. (e.g. INR, USD, EUR etc...)",
            "default": "Display currency set in Currency Settings"
          },
          {
            "in": "formData",
            "name": "includeOutOfStock",
            "type": "boolean",
            "description": "By default visual search doesn't return out of stock products. Set this to true if you want visual search to return out of stock products as well.",
            "default": false
          },
          {
            "in": "formData",
            "name": "showOOSProductsSwatches",
            "type": "boolean",
            "description": "Set this flag to control whether out-of-stock product swatches should be shown in the visual search results."
          },
          {
            "in": "formData",
            "name": "swatch",
            "allOf": [
              {
                "$ref": "#/definitions/CommonSwatchField"
              }
            ]
          }
        ]
      }
    },
    "/products/variation" : {
      "post" : {
        "tags": [
          "Products"
        ],
        "summary": "Get Product Variation",
        "description": "Get the product variation by given id and groupId",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Products has been fetched successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/SingleSearchResult"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          },
          {
            "in" : "formData",
            "name" : "variationId",
            "type" : "string",
            "required": true,
            "description": "Product's variation ID."
          },
          {
            "in" : "formData",
            "name" : "groupId",
            "required": true,
            "type" : "string",
            "description": "Product's group ID."
          },
          {
            "in" : "formData",
            "name" : "includeOutOfStock",
            "type": "boolean",
            "description": "By default variation API doesn't return swatches for OOS products. Set this to true if you want variant API to return product with swatches having inStock value as false.",
            "default": false
          },
          {
            "in" : "formData",
            "name": "swatch",
            "allOf": [
              {
                "$ref": "#/definitions/CommonSwatchField"
              }
            ]
          }
        ]
      }
    },
    "/products/parent" : {
      "post" : {
        "tags": [
          "Products"
        ],
        "summary": "Get Parent Product",
        "description": "Get the parent product by given id",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Products has been fetched successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/SingleSearchResult"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          },
          {
            "in" : "formData",
            "name" : "id",
            "type" : "string",
            "required": true,
            "description": "Parent Product's ID."
          }
        ]
      }
    },
    "/products/byIds" : {
      "post" : {
        "tags": [
          "Products"
        ],
        "summary": "Get Products by Ids",
        "description": "Fetch group of Products by providing Ids to the request",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Products has been fetched successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/SingleSearchResult"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          },
          {
            "in" : "formData",
            "name" : "ids",
            "allOf": [
              {
                "type": "array",
                "items":  {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Unique id the product in store."
                    },
                    "groupId": {
                      "type": "string",
                      "description": "Product's Group ID, if the product is a variation of other product then the Group ID will be the id of main product (In case of fetching variation this is a required field)"
                    }
                  },
                  "required": [
                    "id"
                  ]
                }
              }
            ],
            "required": true,
            "description": "Set of product ids to be fetched."
          },
          {
            "in": "formData",
            "name": "swatch",
            "allOf": [
              {
                "$ref": "#/definitions/CommonSwatchField"
              }
            ]
          },
          {
            "in": "formData",
            "name" : "currency",
            "type": "string",
            "description": "Currency code in which the filter is being performed. It is ISO 4217 currency code. (e.g. INR, USD, EUR etc...)",
            "default": "Display currency set in Currency Settings"
          }
        ]
      }
    },
    "/products/all" : {
      "post" : {
        "tags": [
          "Products"
        ],
        "summary": "Get All Products (IDs)",
        "description": "Fetch all the Product IDs with their stock in ascending order. (1000 at a time)",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Products has been fetched successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/AllProducts"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          },
          {
            "in": "formData",
            "name" : "afterProductId",
            "type": "string",
            "description": "When provided, the API will return products with IDs greater than this value."
          },
          {
            "in": "formData",
            "name" : "forVariations",
            "type": "boolean",
            "description": "Set to true to fetch product variations instead of parent products.",
            "default": false
          }
        ]
      }
    },
    "/products/filter" : {
      "post" : {
        "tags": [
          "Products"
        ],
        "summary": "Filter Products",
        "description": "Filter the products by given criteria",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Products has been fetched successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/SearchResult"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          },
          {
            "in" : "formData",
            "name" : "filters",
            "type" : "string",
            "required": true,
            "description": "Filters JSON string, Please use the filters model."
          },
          {
            "in" : "formData",
            "name" : "rankingRules",
            "type": "string",
            "description": "Ranking Rules JSON string used to promote, include or exclude products based on custom criteria. Please use the Ranking Rules model. Passing an empty array is treated as no rules applied."
          }
        ]
      }
    },
    "/products/delete" : {
      "delete" : {
        "tags": [
          "Products"
        ],
        "summary": "Delete Products",
        "description": "Delete the products from Wizzy's server, Its a bulk delete API. It supports deleting maximum 30,000 products in a single request.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "All the product have been deleted successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/DeleteResult"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "An array of unique products IDs to be deleted. (e.g. ['123','456'])"
                }
              }
            }
          }
        }
      }
    },
    "/products/variations/delete" : {
      "delete" : {
        "tags": [
          "Products"
        ],
        "summary": "Delete Product Variations",
        "description": "Delete the product variations from Wizzy's server, Its a bulk delete API. It supports deleting maximum 5,000 product variations in a single request.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "All the product variations have been deleted successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/DeleteResult"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "An array of unique products IDs to be deleted. (e.g. ['123','456']) Make sure supplied product IDs are parent product IDs."
                }
              }
            }
          }
        }
      }
    },
    "/stores/data/truncate" : {
      "delete" : {
        "tags": [
          "Stores"
        ],
        "summary": "Truncate Data",
        "description": "Truncate all the data from Wizzy's server for particular store.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Store data have been truncated successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/TruncateResult"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          },
          {
            "in" : "formData",
            "name" : "suggestions",
            "description": "Set it to false if you want to ignore truncating generated suggestions.",
            "type": "boolean",
            "default": "true"
          },
          {
            "in" : "formData",
            "name" : "products",
            "description": "Set it to false if you want to ignore truncating products.",
            "type": "boolean",
            "default": "true"
          },
          {
            "in" : "formData",
            "name" : "variations",
            "description": "Set it to false if you want to truncating variations.",
            "type": "boolean",
            "default": "true"
          }
        ]
      }
    },
    "/trendingSearches" : {
      "get" : {
        "tags": [
          "Analytics"
        ],
        "summary": "Trending Searches",
        "description": "Get trending search queries of particular store, with filteration options for search query length.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Trending searches have been fetched successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/TrendingSearchesGetResult"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          },
          {
            "in" : "query",
            "name" : "size",
            "description": "Maximum number of trending search queries to return. (Min: 1, Max: 20, Default: 10)",
            "type" : "integer"
          }
        ]
      }
    },
    "/analytics/users/{uuid}/update" : {
      "put" : {
        "tags": [
          "Analytics"
        ],
        "summary": "Update User data",
        "description": "Update the user data for the purposes of analytics.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "User data have been updated successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maxLength": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maxLength": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          },
          {
            "in" : "query",
            "name" : "uuid",
            "description": "User Unique Identifier",
            "type": "string",
            "maxLength": 255
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/definitions/User"
                  }
                ]
              }
            }
          }
        }
      }
    },
    "/analytics/users/{uuid}" : {
      "get" : {
        "tags": [
          "Analytics"
        ],
        "summary": "Get User data",
        "description": "Get the user data for the purposes of analytics.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "User data have been fetched successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/UserGetResult"
                }
              ]
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-store-secret",
            "required": true,
            "description": "Store Secret"
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maxLength": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maxLength": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          },
          {
            "in" : "query",
            "name" : "uuid",
            "description": "User Unique Identifier",
            "type": "string",
            "maxLength": 255
          }
        ]
      }
    },
    "/recommendation/cross-sell" : {
      "post" : {
        "tags": [
          "Recommendations"
        ],
        "summary": "Cross-Sell Recommendations",
        "description": "Get cross-sell product recommendations for a given product. Wizzy evaluates the cross-sell rules configured for the store (under Settings > Recommendations) against the supplied product and returns the recommended products. If no cross-sell rules match the product, an empty result is returned.",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Cross-sell recommendations have been fetched successfully.",
            "schema" : {
              "allOf" : [
                {
                  "$ref" : "#/definitions/ApiResponse"
                },
                {
                  "$ref" : "#/definitions/CrossSellResult"
                }
              ]
            }
          },
          "400": {
            "description": "Invalid cross-sell request parameters.",
            "schema": {
              "$ref": "#/definitions/ApiResponse"
            }
          },
          "402": {
            "description": "Subscription expired or quota exhausted.",
            "schema": {
              "$ref": "#/definitions/ApiResponse"
            }
          },
          "403": {
            "description": "Authentication or authorization failed.",
            "schema": {
              "$ref": "#/definitions/ApiResponse"
            }
          }
        },
        "parameters": [
          {
            "in" : "header",
            "name" : "x-store-id",
            "required": true,
            "description": "Store ID"
          },
          {
            "in" : "header",
            "name" : "x-api-key",
            "required": true,
            "description": "API key of the store."
          },
          {
            "in" : "header",
            "name" : "x-request-id",
            "description": "API request ID, It gets added back in response.",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-userId",
            "description": "Unique ID of the end user who is executing an API. (Max 100 characters)",
            "type" : "string",
            "maximum": 100
          },
          {
            "in" : "header",
            "name" : "x-wizzy-tags",
            "description": "API Tags for segmentation, Each tag is separated by comma. (Each tag must be less than 80 characters long)",
            "type" : "string"
          },
          {
            "in" : "formData",
            "name" : "id",
            "type" : "string",
            "required": true,
            "description": "Unique ID of the product for which cross-sell recommendations have to be fetched. (Max 255 characters)"
          },
          {
            "in" : "formData",
            "name" : "productsCount",
            "type": "integer",
            "description": "Number of cross-sell products to return.",
            "maximum": 50,
            "minimum": 1,
            "default": 5
          },
          {
            "in" : "formData",
            "name" : "useCombinedCrossSellQuery",
            "type": "string",
            "description": "Defaults to true. When true, cross-sell groups are kept mutually exclusive and fetched in a single combined query. Set to false to opt out of the combined retrieval.",
            "default": "true",
            "enum": [
              "true",
              "false"
            ]
          },
          {
            "in" : "formData",
            "name" : "showOOSProductsInOrder",
            "type": "string",
            "description": "By default cross-sell returns OOS products at the end, Set this to true if you want OOS products in the same relevance order.",
            "default": "false",
            "enum": [
              "true",
              "false"
            ]
          },
          {
            "in" : "formData",
            "name" : "includeOutOfStock",
            "type": "boolean",
            "description": "By default cross-sell doesn't return out of stock products. Set this to true if you want out of stock products to be returned as well.",
            "default": false
          },
          {
            "in" : "formData",
            "name" : "showOOSProductsSwatches",
            "type": "boolean",
            "description": "Set this flag to control whether out-of-stock product swatches should be shown in the cross-sell results."
          },
          {
            "in" : "formData",
            "name" : "currency",
            "type": "string",
            "description": "Currency code in which the recommendations are fetched. It must be ISO 4217 currency code. (e.g. INR, USD, EUR etc...)",
            "default": "Display currency set in Currency Settings"
          },
          {
            "in" : "formData",
            "name": "swatch",
            "allOf": [
              {
                "$ref": "#/definitions/CommonSwatchField"
              }
            ]
          },
          {
            "in" : "formData",
            "name": "inventorySources",
            "allOf": [
              {
                "$ref": "#/definitions/CommonInventorySourcesField"
              }
            ]
          }
        ]
      }
    }
  }
}
